1 // Copyright 2015-2023 The Khronos Group Inc.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR MIT
4 //
5 
6 // This header is generated from the Khronos Vulkan XML API Registry.
7 
8 #ifndef VULKAN_STRUCTS_HPP
9 #  define VULKAN_STRUCTS_HPP
10 
11 #include <cstring>  // strcmp
12 
13 namespace VULKAN_HPP_NAMESPACE
14 {
15 
16   //===============
17   //=== STRUCTS ===
18   //===============
19 
20 
21   struct AcquireNextImageInfoKHR
22   {
23     using NativeType = VkAcquireNextImageInfoKHR;
24 
25     static const bool allowDuplicate = false;
26     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAcquireNextImageInfoKHR;
27 
28 
29 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AcquireNextImageInfoKHRVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR30 VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR(VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, uint64_t timeout_ = {}, VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::Fence fence_ = {}, uint32_t deviceMask_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31     : pNext( pNext_ ), swapchain( swapchain_ ), timeout( timeout_ ), semaphore( semaphore_ ), fence( fence_ ), deviceMask( deviceMask_ )
32     {}
33 
34     VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35 
AcquireNextImageInfoKHRVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR36     AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
37       : AcquireNextImageInfoKHR( *reinterpret_cast<AcquireNextImageInfoKHR const *>( &rhs ) )
38     {}
39 
40 
41     AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43 
operator =VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR44     AcquireNextImageInfoKHR & operator=( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
45     {
46       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR const *>( &rhs );
47       return *this;
48     }
49 
50 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR51     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
52     {
53       pNext = pNext_;
54       return *this;
55     }
56 
setSwapchainVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR57     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
58     {
59       swapchain = swapchain_;
60       return *this;
61     }
62 
setTimeoutVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR63     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT
64     {
65       timeout = timeout_;
66       return *this;
67     }
68 
setSemaphoreVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR69     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
70     {
71       semaphore = semaphore_;
72       return *this;
73     }
74 
setFenceVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR75     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
76     {
77       fence = fence_;
78       return *this;
79     }
80 
setDeviceMaskVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR81     VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
82     {
83       deviceMask = deviceMask_;
84       return *this;
85     }
86 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
87 
88 
operator VkAcquireNextImageInfoKHR const&VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR89     operator VkAcquireNextImageInfoKHR const &() const VULKAN_HPP_NOEXCEPT
90     {
91       return *reinterpret_cast<const VkAcquireNextImageInfoKHR*>( this );
92     }
93 
operator VkAcquireNextImageInfoKHR&VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR94     operator VkAcquireNextImageInfoKHR &() VULKAN_HPP_NOEXCEPT
95     {
96       return *reinterpret_cast<VkAcquireNextImageInfoKHR*>( this );
97     }
98 
99 #if defined( VULKAN_HPP_USE_REFLECT )
100 #if 14 <= VULKAN_HPP_CPP_VERSION
101     auto
102 #else
103     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SwapchainKHR const &, uint64_t const &, VULKAN_HPP_NAMESPACE::Semaphore const &, VULKAN_HPP_NAMESPACE::Fence const &, uint32_t const &>
104 #endif
reflectVULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR105       reflect() const VULKAN_HPP_NOEXCEPT
106     {
107       return std::tie( sType, pNext, swapchain, timeout, semaphore, fence, deviceMask );
108     }
109 #endif
110 
111 
112 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
113 auto operator<=>( AcquireNextImageInfoKHR const & ) const = default;
114 #else
operator ==VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR115     bool operator==( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
116     {
117 #if defined( VULKAN_HPP_USE_REFLECT )
118       return this->reflect() == rhs.reflect();
119 #else
120       return ( sType == rhs.sType )
121           && ( pNext == rhs.pNext )
122           && ( swapchain == rhs.swapchain )
123           && ( timeout == rhs.timeout )
124           && ( semaphore == rhs.semaphore )
125           && ( fence == rhs.fence )
126           && ( deviceMask == rhs.deviceMask );
127 #endif
128     }
129 
operator !=VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR130     bool operator!=( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
131     {
132       return !operator==( rhs );
133     }
134 #endif
135 
136     public:
137     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireNextImageInfoKHR;
138     const void * pNext = {};
139     VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {};
140     uint64_t timeout = {};
141     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
142     VULKAN_HPP_NAMESPACE::Fence fence = {};
143     uint32_t deviceMask = {};
144 
145   };
146 
147   template <>
148   struct CppType<StructureType, StructureType::eAcquireNextImageInfoKHR>
149   {
150     using Type = AcquireNextImageInfoKHR;
151   };
152 
153   struct AcquireProfilingLockInfoKHR
154   {
155     using NativeType = VkAcquireProfilingLockInfoKHR;
156 
157     static const bool allowDuplicate = false;
158     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAcquireProfilingLockInfoKHR;
159 
160 
161 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AcquireProfilingLockInfoKHRVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR162 VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR(VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ = {}, uint64_t timeout_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
163     : pNext( pNext_ ), flags( flags_ ), timeout( timeout_ )
164     {}
165 
166     VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
167 
AcquireProfilingLockInfoKHRVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR168     AcquireProfilingLockInfoKHR( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
169       : AcquireProfilingLockInfoKHR( *reinterpret_cast<AcquireProfilingLockInfoKHR const *>( &rhs ) )
170     {}
171 
172 
173     AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
174 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
175 
operator =VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR176     AcquireProfilingLockInfoKHR & operator=( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
177     {
178       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR const *>( &rhs );
179       return *this;
180     }
181 
182 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR183     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
184     {
185       pNext = pNext_;
186       return *this;
187     }
188 
setFlagsVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR189     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
190     {
191       flags = flags_;
192       return *this;
193     }
194 
setTimeoutVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR195     VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT
196     {
197       timeout = timeout_;
198       return *this;
199     }
200 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
201 
202 
operator VkAcquireProfilingLockInfoKHR const&VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR203     operator VkAcquireProfilingLockInfoKHR const &() const VULKAN_HPP_NOEXCEPT
204     {
205       return *reinterpret_cast<const VkAcquireProfilingLockInfoKHR*>( this );
206     }
207 
operator VkAcquireProfilingLockInfoKHR&VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR208     operator VkAcquireProfilingLockInfoKHR &() VULKAN_HPP_NOEXCEPT
209     {
210       return *reinterpret_cast<VkAcquireProfilingLockInfoKHR*>( this );
211     }
212 
213 #if defined( VULKAN_HPP_USE_REFLECT )
214 #if 14 <= VULKAN_HPP_CPP_VERSION
215     auto
216 #else
217     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR const &, uint64_t const &>
218 #endif
reflectVULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR219       reflect() const VULKAN_HPP_NOEXCEPT
220     {
221       return std::tie( sType, pNext, flags, timeout );
222     }
223 #endif
224 
225 
226 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
227 auto operator<=>( AcquireProfilingLockInfoKHR const & ) const = default;
228 #else
operator ==VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR229     bool operator==( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
230     {
231 #if defined( VULKAN_HPP_USE_REFLECT )
232       return this->reflect() == rhs.reflect();
233 #else
234       return ( sType == rhs.sType )
235           && ( pNext == rhs.pNext )
236           && ( flags == rhs.flags )
237           && ( timeout == rhs.timeout );
238 #endif
239     }
240 
operator !=VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR241     bool operator!=( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
242     {
243       return !operator==( rhs );
244     }
245 #endif
246 
247     public:
248     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireProfilingLockInfoKHR;
249     const void * pNext = {};
250     VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags = {};
251     uint64_t timeout = {};
252 
253   };
254 
255   template <>
256   struct CppType<StructureType, StructureType::eAcquireProfilingLockInfoKHR>
257   {
258     using Type = AcquireProfilingLockInfoKHR;
259   };
260 
261   struct AllocationCallbacks
262   {
263     using NativeType = VkAllocationCallbacks;
264 
265 
266 
267 
268 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AllocationCallbacksVULKAN_HPP_NAMESPACE::AllocationCallbacks269 VULKAN_HPP_CONSTEXPR AllocationCallbacks(void * pUserData_ = {}, PFN_vkAllocationFunction pfnAllocation_ = {}, PFN_vkReallocationFunction pfnReallocation_ = {}, PFN_vkFreeFunction pfnFree_ = {}, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = {}, PFN_vkInternalFreeNotification pfnInternalFree_ = {}) VULKAN_HPP_NOEXCEPT
270     : pUserData( pUserData_ ), pfnAllocation( pfnAllocation_ ), pfnReallocation( pfnReallocation_ ), pfnFree( pfnFree_ ), pfnInternalAllocation( pfnInternalAllocation_ ), pfnInternalFree( pfnInternalFree_ )
271     {}
272 
273     VULKAN_HPP_CONSTEXPR AllocationCallbacks( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
274 
AllocationCallbacksVULKAN_HPP_NAMESPACE::AllocationCallbacks275     AllocationCallbacks( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
276       : AllocationCallbacks( *reinterpret_cast<AllocationCallbacks const *>( &rhs ) )
277     {}
278 
279 
280     AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default;
281 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
282 
operator =VULKAN_HPP_NAMESPACE::AllocationCallbacks283     AllocationCallbacks & operator=( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT
284     {
285       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AllocationCallbacks const *>( &rhs );
286       return *this;
287     }
288 
289 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPUserDataVULKAN_HPP_NAMESPACE::AllocationCallbacks290     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
291     {
292       pUserData = pUserData_;
293       return *this;
294     }
295 
setPfnAllocationVULKAN_HPP_NAMESPACE::AllocationCallbacks296     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ ) VULKAN_HPP_NOEXCEPT
297     {
298       pfnAllocation = pfnAllocation_;
299       return *this;
300     }
301 
setPfnReallocationVULKAN_HPP_NAMESPACE::AllocationCallbacks302     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ ) VULKAN_HPP_NOEXCEPT
303     {
304       pfnReallocation = pfnReallocation_;
305       return *this;
306     }
307 
setPfnFreeVULKAN_HPP_NAMESPACE::AllocationCallbacks308     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnFree( PFN_vkFreeFunction pfnFree_ ) VULKAN_HPP_NOEXCEPT
309     {
310       pfnFree = pfnFree_;
311       return *this;
312     }
313 
setPfnInternalAllocationVULKAN_HPP_NAMESPACE::AllocationCallbacks314     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ ) VULKAN_HPP_NOEXCEPT
315     {
316       pfnInternalAllocation = pfnInternalAllocation_;
317       return *this;
318     }
319 
setPfnInternalFreeVULKAN_HPP_NAMESPACE::AllocationCallbacks320     VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ ) VULKAN_HPP_NOEXCEPT
321     {
322       pfnInternalFree = pfnInternalFree_;
323       return *this;
324     }
325 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
326 
327 
operator VkAllocationCallbacks const&VULKAN_HPP_NAMESPACE::AllocationCallbacks328     operator VkAllocationCallbacks const &() const VULKAN_HPP_NOEXCEPT
329     {
330       return *reinterpret_cast<const VkAllocationCallbacks*>( this );
331     }
332 
operator VkAllocationCallbacks&VULKAN_HPP_NAMESPACE::AllocationCallbacks333     operator VkAllocationCallbacks &() VULKAN_HPP_NOEXCEPT
334     {
335       return *reinterpret_cast<VkAllocationCallbacks*>( this );
336     }
337 
338 #if defined( VULKAN_HPP_USE_REFLECT )
339 #if 14 <= VULKAN_HPP_CPP_VERSION
340     auto
341 #else
342     std::tuple<void * const &, PFN_vkAllocationFunction const &, PFN_vkReallocationFunction const &, PFN_vkFreeFunction const &, PFN_vkInternalAllocationNotification const &, PFN_vkInternalFreeNotification const &>
343 #endif
reflectVULKAN_HPP_NAMESPACE::AllocationCallbacks344       reflect() const VULKAN_HPP_NOEXCEPT
345     {
346       return std::tie( pUserData, pfnAllocation, pfnReallocation, pfnFree, pfnInternalAllocation, pfnInternalFree );
347     }
348 #endif
349 
350 
351 
352 
353 
operator ==VULKAN_HPP_NAMESPACE::AllocationCallbacks354     bool operator==( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT
355     {
356 #if defined( VULKAN_HPP_USE_REFLECT )
357       return this->reflect() == rhs.reflect();
358 #else
359       return ( pUserData == rhs.pUserData )
360           && ( pfnAllocation == rhs.pfnAllocation )
361           && ( pfnReallocation == rhs.pfnReallocation )
362           && ( pfnFree == rhs.pfnFree )
363           && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
364           && ( pfnInternalFree == rhs.pfnInternalFree );
365 #endif
366     }
367 
operator !=VULKAN_HPP_NAMESPACE::AllocationCallbacks368     bool operator!=( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT
369     {
370       return !operator==( rhs );
371     }
372 
373     public:
374     void * pUserData = {};
375     PFN_vkAllocationFunction pfnAllocation = {};
376     PFN_vkReallocationFunction pfnReallocation = {};
377     PFN_vkFreeFunction pfnFree = {};
378     PFN_vkInternalAllocationNotification pfnInternalAllocation = {};
379     PFN_vkInternalFreeNotification pfnInternalFree = {};
380 
381   };
382 
383   struct ApplicationInfo
384   {
385     using NativeType = VkApplicationInfo;
386 
387     static const bool allowDuplicate = false;
388     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eApplicationInfo;
389 
390 
391 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ApplicationInfoVULKAN_HPP_NAMESPACE::ApplicationInfo392 VULKAN_HPP_CONSTEXPR ApplicationInfo(const char * pApplicationName_ = {}, uint32_t applicationVersion_ = {}, const char * pEngineName_ = {}, uint32_t engineVersion_ = {}, uint32_t apiVersion_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
393     : pNext( pNext_ ), pApplicationName( pApplicationName_ ), applicationVersion( applicationVersion_ ), pEngineName( pEngineName_ ), engineVersion( engineVersion_ ), apiVersion( apiVersion_ )
394     {}
395 
396     VULKAN_HPP_CONSTEXPR ApplicationInfo( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
397 
ApplicationInfoVULKAN_HPP_NAMESPACE::ApplicationInfo398     ApplicationInfo( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
399       : ApplicationInfo( *reinterpret_cast<ApplicationInfo const *>( &rhs ) )
400     {}
401 
402 
403     ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
404 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
405 
operator =VULKAN_HPP_NAMESPACE::ApplicationInfo406     ApplicationInfo & operator=( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
407     {
408       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ApplicationInfo const *>( &rhs );
409       return *this;
410     }
411 
412 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ApplicationInfo413     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
414     {
415       pNext = pNext_;
416       return *this;
417     }
418 
setPApplicationNameVULKAN_HPP_NAMESPACE::ApplicationInfo419     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPApplicationName( const char * pApplicationName_ ) VULKAN_HPP_NOEXCEPT
420     {
421       pApplicationName = pApplicationName_;
422       return *this;
423     }
424 
setApplicationVersionVULKAN_HPP_NAMESPACE::ApplicationInfo425     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApplicationVersion( uint32_t applicationVersion_ ) VULKAN_HPP_NOEXCEPT
426     {
427       applicationVersion = applicationVersion_;
428       return *this;
429     }
430 
setPEngineNameVULKAN_HPP_NAMESPACE::ApplicationInfo431     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPEngineName( const char * pEngineName_ ) VULKAN_HPP_NOEXCEPT
432     {
433       pEngineName = pEngineName_;
434       return *this;
435     }
436 
setEngineVersionVULKAN_HPP_NAMESPACE::ApplicationInfo437     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setEngineVersion( uint32_t engineVersion_ ) VULKAN_HPP_NOEXCEPT
438     {
439       engineVersion = engineVersion_;
440       return *this;
441     }
442 
setApiVersionVULKAN_HPP_NAMESPACE::ApplicationInfo443     VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApiVersion( uint32_t apiVersion_ ) VULKAN_HPP_NOEXCEPT
444     {
445       apiVersion = apiVersion_;
446       return *this;
447     }
448 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
449 
450 
operator VkApplicationInfo const&VULKAN_HPP_NAMESPACE::ApplicationInfo451     operator VkApplicationInfo const &() const VULKAN_HPP_NOEXCEPT
452     {
453       return *reinterpret_cast<const VkApplicationInfo*>( this );
454     }
455 
operator VkApplicationInfo&VULKAN_HPP_NAMESPACE::ApplicationInfo456     operator VkApplicationInfo &() VULKAN_HPP_NOEXCEPT
457     {
458       return *reinterpret_cast<VkApplicationInfo*>( this );
459     }
460 
461 #if defined( VULKAN_HPP_USE_REFLECT )
462 #if 14 <= VULKAN_HPP_CPP_VERSION
463     auto
464 #else
465     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const char * const &, uint32_t const &, const char * const &, uint32_t const &, uint32_t const &>
466 #endif
reflectVULKAN_HPP_NAMESPACE::ApplicationInfo467       reflect() const VULKAN_HPP_NOEXCEPT
468     {
469       return std::tie( sType, pNext, pApplicationName, applicationVersion, pEngineName, engineVersion, apiVersion );
470     }
471 #endif
472 
473 
474 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::ApplicationInfo475     std::strong_ordering operator<=>( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
476     {
477       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
478       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
479      if ( pApplicationName != rhs.pApplicationName )
480         if ( auto cmp = strcmp( pApplicationName, rhs.pApplicationName ); cmp != 0 )
481           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
482       if ( auto cmp = applicationVersion <=> rhs.applicationVersion; cmp != 0 ) return cmp;
483      if ( pEngineName != rhs.pEngineName )
484         if ( auto cmp = strcmp( pEngineName, rhs.pEngineName ); cmp != 0 )
485           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
486       if ( auto cmp = engineVersion <=> rhs.engineVersion; cmp != 0 ) return cmp;
487       if ( auto cmp = apiVersion <=> rhs.apiVersion; cmp != 0 ) return cmp;
488 
489       return std::strong_ordering::equivalent;
490     }
491 #endif
492 
operator ==VULKAN_HPP_NAMESPACE::ApplicationInfo493     bool operator==( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
494     {
495       return ( sType == rhs.sType )
496           && ( pNext == rhs.pNext )
497           && ( ( pApplicationName == rhs.pApplicationName ) || ( strcmp( pApplicationName, rhs.pApplicationName ) == 0 ) )
498           && ( applicationVersion == rhs.applicationVersion )
499           && ( ( pEngineName == rhs.pEngineName ) || ( strcmp( pEngineName, rhs.pEngineName ) == 0 ) )
500           && ( engineVersion == rhs.engineVersion )
501           && ( apiVersion == rhs.apiVersion );
502     }
503 
operator !=VULKAN_HPP_NAMESPACE::ApplicationInfo504     bool operator!=( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
505     {
506       return !operator==( rhs );
507     }
508 
509     public:
510     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eApplicationInfo;
511     const void * pNext = {};
512     const char * pApplicationName = {};
513     uint32_t applicationVersion = {};
514     const char * pEngineName = {};
515     uint32_t engineVersion = {};
516     uint32_t apiVersion = {};
517 
518   };
519 
520   template <>
521   struct CppType<StructureType, StructureType::eApplicationInfo>
522   {
523     using Type = ApplicationInfo;
524   };
525 
526   struct ApplicationParametersEXT
527   {
528     using NativeType = VkApplicationParametersEXT;
529 
530     static const bool allowDuplicate = true;
531     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eApplicationParametersEXT;
532 
533 
534 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ApplicationParametersEXTVULKAN_HPP_NAMESPACE::ApplicationParametersEXT535 VULKAN_HPP_CONSTEXPR ApplicationParametersEXT(uint32_t vendorID_ = {}, uint32_t deviceID_ = {}, uint32_t key_ = {}, uint64_t value_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
536     : pNext( pNext_ ), vendorID( vendorID_ ), deviceID( deviceID_ ), key( key_ ), value( value_ )
537     {}
538 
539     VULKAN_HPP_CONSTEXPR ApplicationParametersEXT( ApplicationParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
540 
ApplicationParametersEXTVULKAN_HPP_NAMESPACE::ApplicationParametersEXT541     ApplicationParametersEXT( VkApplicationParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT
542       : ApplicationParametersEXT( *reinterpret_cast<ApplicationParametersEXT const *>( &rhs ) )
543     {}
544 
545 
546     ApplicationParametersEXT & operator=( ApplicationParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
547 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
548 
operator =VULKAN_HPP_NAMESPACE::ApplicationParametersEXT549     ApplicationParametersEXT & operator=( VkApplicationParametersEXT const & rhs ) VULKAN_HPP_NOEXCEPT
550     {
551       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ApplicationParametersEXT const *>( &rhs );
552       return *this;
553     }
554 
555 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ApplicationParametersEXT556     VULKAN_HPP_CONSTEXPR_14 ApplicationParametersEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
557     {
558       pNext = pNext_;
559       return *this;
560     }
561 
setVendorIDVULKAN_HPP_NAMESPACE::ApplicationParametersEXT562     VULKAN_HPP_CONSTEXPR_14 ApplicationParametersEXT & setVendorID( uint32_t vendorID_ ) VULKAN_HPP_NOEXCEPT
563     {
564       vendorID = vendorID_;
565       return *this;
566     }
567 
setDeviceIDVULKAN_HPP_NAMESPACE::ApplicationParametersEXT568     VULKAN_HPP_CONSTEXPR_14 ApplicationParametersEXT & setDeviceID( uint32_t deviceID_ ) VULKAN_HPP_NOEXCEPT
569     {
570       deviceID = deviceID_;
571       return *this;
572     }
573 
setKeyVULKAN_HPP_NAMESPACE::ApplicationParametersEXT574     VULKAN_HPP_CONSTEXPR_14 ApplicationParametersEXT & setKey( uint32_t key_ ) VULKAN_HPP_NOEXCEPT
575     {
576       key = key_;
577       return *this;
578     }
579 
setValueVULKAN_HPP_NAMESPACE::ApplicationParametersEXT580     VULKAN_HPP_CONSTEXPR_14 ApplicationParametersEXT & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
581     {
582       value = value_;
583       return *this;
584     }
585 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
586 
587 
operator VkApplicationParametersEXT const&VULKAN_HPP_NAMESPACE::ApplicationParametersEXT588     operator VkApplicationParametersEXT const &() const VULKAN_HPP_NOEXCEPT
589     {
590       return *reinterpret_cast<const VkApplicationParametersEXT*>( this );
591     }
592 
operator VkApplicationParametersEXT&VULKAN_HPP_NAMESPACE::ApplicationParametersEXT593     operator VkApplicationParametersEXT &() VULKAN_HPP_NOEXCEPT
594     {
595       return *reinterpret_cast<VkApplicationParametersEXT*>( this );
596     }
597 
598 #if defined( VULKAN_HPP_USE_REFLECT )
599 #if 14 <= VULKAN_HPP_CPP_VERSION
600     auto
601 #else
602     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, uint32_t const &, uint64_t const &>
603 #endif
reflectVULKAN_HPP_NAMESPACE::ApplicationParametersEXT604       reflect() const VULKAN_HPP_NOEXCEPT
605     {
606       return std::tie( sType, pNext, vendorID, deviceID, key, value );
607     }
608 #endif
609 
610 
611 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
612 auto operator<=>( ApplicationParametersEXT const & ) const = default;
613 #else
operator ==VULKAN_HPP_NAMESPACE::ApplicationParametersEXT614     bool operator==( ApplicationParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
615     {
616 #if defined( VULKAN_HPP_USE_REFLECT )
617       return this->reflect() == rhs.reflect();
618 #else
619       return ( sType == rhs.sType )
620           && ( pNext == rhs.pNext )
621           && ( vendorID == rhs.vendorID )
622           && ( deviceID == rhs.deviceID )
623           && ( key == rhs.key )
624           && ( value == rhs.value );
625 #endif
626     }
627 
operator !=VULKAN_HPP_NAMESPACE::ApplicationParametersEXT628     bool operator!=( ApplicationParametersEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
629     {
630       return !operator==( rhs );
631     }
632 #endif
633 
634     public:
635     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eApplicationParametersEXT;
636     const void * pNext = {};
637     uint32_t vendorID = {};
638     uint32_t deviceID = {};
639     uint32_t key = {};
640     uint64_t value = {};
641 
642   };
643 
644   template <>
645   struct CppType<StructureType, StructureType::eApplicationParametersEXT>
646   {
647     using Type = ApplicationParametersEXT;
648   };
649 
650   struct AttachmentDescription
651   {
652     using NativeType = VkAttachmentDescription;
653 
654 
655 
656 
657 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentDescriptionVULKAN_HPP_NAMESPACE::AttachmentDescription658 VULKAN_HPP_CONSTEXPR AttachmentDescription(VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined) VULKAN_HPP_NOEXCEPT
659     : flags( flags_ ), format( format_ ), samples( samples_ ), loadOp( loadOp_ ), storeOp( storeOp_ ), stencilLoadOp( stencilLoadOp_ ), stencilStoreOp( stencilStoreOp_ ), initialLayout( initialLayout_ ), finalLayout( finalLayout_ )
660     {}
661 
662     VULKAN_HPP_CONSTEXPR AttachmentDescription( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
663 
AttachmentDescriptionVULKAN_HPP_NAMESPACE::AttachmentDescription664     AttachmentDescription( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
665       : AttachmentDescription( *reinterpret_cast<AttachmentDescription const *>( &rhs ) )
666     {}
667 
668 
669     AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
670 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
671 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescription672     AttachmentDescription & operator=( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT
673     {
674       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription const *>( &rhs );
675       return *this;
676     }
677 
678 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFlagsVULKAN_HPP_NAMESPACE::AttachmentDescription679     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
680     {
681       flags = flags_;
682       return *this;
683     }
684 
setFormatVULKAN_HPP_NAMESPACE::AttachmentDescription685     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
686     {
687       format = format_;
688       return *this;
689     }
690 
setSamplesVULKAN_HPP_NAMESPACE::AttachmentDescription691     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
692     {
693       samples = samples_;
694       return *this;
695     }
696 
setLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription697     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
698     {
699       loadOp = loadOp_;
700       return *this;
701     }
702 
setStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription703     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
704     {
705       storeOp = storeOp_;
706       return *this;
707     }
708 
setStencilLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription709     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT
710     {
711       stencilLoadOp = stencilLoadOp_;
712       return *this;
713     }
714 
setStencilStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription715     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT
716     {
717       stencilStoreOp = stencilStoreOp_;
718       return *this;
719     }
720 
setInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription721     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
722     {
723       initialLayout = initialLayout_;
724       return *this;
725     }
726 
setFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription727     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT
728     {
729       finalLayout = finalLayout_;
730       return *this;
731     }
732 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
733 
734 
operator VkAttachmentDescription const&VULKAN_HPP_NAMESPACE::AttachmentDescription735     operator VkAttachmentDescription const &() const VULKAN_HPP_NOEXCEPT
736     {
737       return *reinterpret_cast<const VkAttachmentDescription*>( this );
738     }
739 
operator VkAttachmentDescription&VULKAN_HPP_NAMESPACE::AttachmentDescription740     operator VkAttachmentDescription &() VULKAN_HPP_NOEXCEPT
741     {
742       return *reinterpret_cast<VkAttachmentDescription*>( this );
743     }
744 
745 #if defined( VULKAN_HPP_USE_REFLECT )
746 #if 14 <= VULKAN_HPP_CPP_VERSION
747     auto
748 #else
749     std::tuple<VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &, VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &, VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &, VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &, VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
750 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescription751       reflect() const VULKAN_HPP_NOEXCEPT
752     {
753       return std::tie( flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout );
754     }
755 #endif
756 
757 
758 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
759 auto operator<=>( AttachmentDescription const & ) const = default;
760 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescription761     bool operator==( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
762     {
763 #if defined( VULKAN_HPP_USE_REFLECT )
764       return this->reflect() == rhs.reflect();
765 #else
766       return ( flags == rhs.flags )
767           && ( format == rhs.format )
768           && ( samples == rhs.samples )
769           && ( loadOp == rhs.loadOp )
770           && ( storeOp == rhs.storeOp )
771           && ( stencilLoadOp == rhs.stencilLoadOp )
772           && ( stencilStoreOp == rhs.stencilStoreOp )
773           && ( initialLayout == rhs.initialLayout )
774           && ( finalLayout == rhs.finalLayout );
775 #endif
776     }
777 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescription778     bool operator!=( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
779     {
780       return !operator==( rhs );
781     }
782 #endif
783 
784     public:
785     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags = {};
786     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
787     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
788     VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
789     VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
790     VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
791     VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
792     VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
793     VULKAN_HPP_NAMESPACE::ImageLayout finalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
794 
795   };
796 
797   struct AttachmentDescription2
798   {
799     using NativeType = VkAttachmentDescription2;
800 
801     static const bool allowDuplicate = false;
802     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentDescription2;
803 
804 
805 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentDescription2VULKAN_HPP_NAMESPACE::AttachmentDescription2806 VULKAN_HPP_CONSTEXPR AttachmentDescription2(VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
807     : pNext( pNext_ ), flags( flags_ ), format( format_ ), samples( samples_ ), loadOp( loadOp_ ), storeOp( storeOp_ ), stencilLoadOp( stencilLoadOp_ ), stencilStoreOp( stencilStoreOp_ ), initialLayout( initialLayout_ ), finalLayout( finalLayout_ )
808     {}
809 
810     VULKAN_HPP_CONSTEXPR AttachmentDescription2( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
811 
AttachmentDescription2VULKAN_HPP_NAMESPACE::AttachmentDescription2812     AttachmentDescription2( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
813       : AttachmentDescription2( *reinterpret_cast<AttachmentDescription2 const *>( &rhs ) )
814     {}
815 
816 
817     AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
818 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
819 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescription2820     AttachmentDescription2 & operator=( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
821     {
822       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescription2 const *>( &rhs );
823       return *this;
824     }
825 
826 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentDescription2827     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
828     {
829       pNext = pNext_;
830       return *this;
831     }
832 
setFlagsVULKAN_HPP_NAMESPACE::AttachmentDescription2833     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
834     {
835       flags = flags_;
836       return *this;
837     }
838 
setFormatVULKAN_HPP_NAMESPACE::AttachmentDescription2839     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
840     {
841       format = format_;
842       return *this;
843     }
844 
setSamplesVULKAN_HPP_NAMESPACE::AttachmentDescription2845     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
846     {
847       samples = samples_;
848       return *this;
849     }
850 
setLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription2851     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
852     {
853       loadOp = loadOp_;
854       return *this;
855     }
856 
setStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription2857     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
858     {
859       storeOp = storeOp_;
860       return *this;
861     }
862 
setStencilLoadOpVULKAN_HPP_NAMESPACE::AttachmentDescription2863     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT
864     {
865       stencilLoadOp = stencilLoadOp_;
866       return *this;
867     }
868 
setStencilStoreOpVULKAN_HPP_NAMESPACE::AttachmentDescription2869     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT
870     {
871       stencilStoreOp = stencilStoreOp_;
872       return *this;
873     }
874 
setInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription2875     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
876     {
877       initialLayout = initialLayout_;
878       return *this;
879     }
880 
setFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescription2881     VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT
882     {
883       finalLayout = finalLayout_;
884       return *this;
885     }
886 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
887 
888 
operator VkAttachmentDescription2 const&VULKAN_HPP_NAMESPACE::AttachmentDescription2889     operator VkAttachmentDescription2 const &() const VULKAN_HPP_NOEXCEPT
890     {
891       return *reinterpret_cast<const VkAttachmentDescription2*>( this );
892     }
893 
operator VkAttachmentDescription2&VULKAN_HPP_NAMESPACE::AttachmentDescription2894     operator VkAttachmentDescription2 &() VULKAN_HPP_NOEXCEPT
895     {
896       return *reinterpret_cast<VkAttachmentDescription2*>( this );
897     }
898 
899 #if defined( VULKAN_HPP_USE_REFLECT )
900 #if 14 <= VULKAN_HPP_CPP_VERSION
901     auto
902 #else
903     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &, VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &, VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &, VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &, VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
904 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescription2905       reflect() const VULKAN_HPP_NOEXCEPT
906     {
907       return std::tie( sType, pNext, flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout );
908     }
909 #endif
910 
911 
912 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
913 auto operator<=>( AttachmentDescription2 const & ) const = default;
914 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescription2915     bool operator==( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
916     {
917 #if defined( VULKAN_HPP_USE_REFLECT )
918       return this->reflect() == rhs.reflect();
919 #else
920       return ( sType == rhs.sType )
921           && ( pNext == rhs.pNext )
922           && ( flags == rhs.flags )
923           && ( format == rhs.format )
924           && ( samples == rhs.samples )
925           && ( loadOp == rhs.loadOp )
926           && ( storeOp == rhs.storeOp )
927           && ( stencilLoadOp == rhs.stencilLoadOp )
928           && ( stencilStoreOp == rhs.stencilStoreOp )
929           && ( initialLayout == rhs.initialLayout )
930           && ( finalLayout == rhs.finalLayout );
931 #endif
932     }
933 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescription2934     bool operator!=( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
935     {
936       return !operator==( rhs );
937     }
938 #endif
939 
940     public:
941     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescription2;
942     const void * pNext = {};
943     VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags = {};
944     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
945     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
946     VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
947     VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
948     VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
949     VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
950     VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
951     VULKAN_HPP_NAMESPACE::ImageLayout finalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
952 
953   };
954 
955   template <>
956   struct CppType<StructureType, StructureType::eAttachmentDescription2>
957   {
958     using Type = AttachmentDescription2;
959   };
960   using AttachmentDescription2KHR = AttachmentDescription2;
961 
962   struct AttachmentDescriptionStencilLayout
963   {
964     using NativeType = VkAttachmentDescriptionStencilLayout;
965 
966     static const bool allowDuplicate = false;
967     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentDescriptionStencilLayout;
968 
969 
970 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentDescriptionStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout971 VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout(VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
972     : pNext( pNext_ ), stencilInitialLayout( stencilInitialLayout_ ), stencilFinalLayout( stencilFinalLayout_ )
973     {}
974 
975     VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
976 
AttachmentDescriptionStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout977     AttachmentDescriptionStencilLayout( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
978       : AttachmentDescriptionStencilLayout( *reinterpret_cast<AttachmentDescriptionStencilLayout const *>( &rhs ) )
979     {}
980 
981 
982     AttachmentDescriptionStencilLayout & operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
983 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
984 
operator =VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout985     AttachmentDescriptionStencilLayout & operator=( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
986     {
987       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout const *>( &rhs );
988       return *this;
989     }
990 
991 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout992     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
993     {
994       pNext = pNext_;
995       return *this;
996     }
997 
setStencilInitialLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout998     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setStencilInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ ) VULKAN_HPP_NOEXCEPT
999     {
1000       stencilInitialLayout = stencilInitialLayout_;
1001       return *this;
1002     }
1003 
setStencilFinalLayoutVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout1004     VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setStencilFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ ) VULKAN_HPP_NOEXCEPT
1005     {
1006       stencilFinalLayout = stencilFinalLayout_;
1007       return *this;
1008     }
1009 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1010 
1011 
operator VkAttachmentDescriptionStencilLayout const&VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout1012     operator VkAttachmentDescriptionStencilLayout const &() const VULKAN_HPP_NOEXCEPT
1013     {
1014       return *reinterpret_cast<const VkAttachmentDescriptionStencilLayout*>( this );
1015     }
1016 
operator VkAttachmentDescriptionStencilLayout&VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout1017     operator VkAttachmentDescriptionStencilLayout &() VULKAN_HPP_NOEXCEPT
1018     {
1019       return *reinterpret_cast<VkAttachmentDescriptionStencilLayout*>( this );
1020     }
1021 
1022 #if defined( VULKAN_HPP_USE_REFLECT )
1023 #if 14 <= VULKAN_HPP_CPP_VERSION
1024     auto
1025 #else
1026     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
1027 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout1028       reflect() const VULKAN_HPP_NOEXCEPT
1029     {
1030       return std::tie( sType, pNext, stencilInitialLayout, stencilFinalLayout );
1031     }
1032 #endif
1033 
1034 
1035 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1036 auto operator<=>( AttachmentDescriptionStencilLayout const & ) const = default;
1037 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout1038     bool operator==( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
1039     {
1040 #if defined( VULKAN_HPP_USE_REFLECT )
1041       return this->reflect() == rhs.reflect();
1042 #else
1043       return ( sType == rhs.sType )
1044           && ( pNext == rhs.pNext )
1045           && ( stencilInitialLayout == rhs.stencilInitialLayout )
1046           && ( stencilFinalLayout == rhs.stencilFinalLayout );
1047 #endif
1048     }
1049 
operator !=VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout1050     bool operator!=( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
1051     {
1052       return !operator==( rhs );
1053     }
1054 #endif
1055 
1056     public:
1057     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescriptionStencilLayout;
1058     void * pNext = {};
1059     VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
1060     VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
1061 
1062   };
1063 
1064   template <>
1065   struct CppType<StructureType, StructureType::eAttachmentDescriptionStencilLayout>
1066   {
1067     using Type = AttachmentDescriptionStencilLayout;
1068   };
1069   using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout;
1070 
1071   struct AttachmentReference
1072   {
1073     using NativeType = VkAttachmentReference;
1074 
1075 
1076 
1077 
1078 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReferenceVULKAN_HPP_NAMESPACE::AttachmentReference1079 VULKAN_HPP_CONSTEXPR AttachmentReference(uint32_t attachment_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined) VULKAN_HPP_NOEXCEPT
1080     : attachment( attachment_ ), layout( layout_ )
1081     {}
1082 
1083     VULKAN_HPP_CONSTEXPR AttachmentReference( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1084 
AttachmentReferenceVULKAN_HPP_NAMESPACE::AttachmentReference1085     AttachmentReference( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
1086       : AttachmentReference( *reinterpret_cast<AttachmentReference const *>( &rhs ) )
1087     {}
1088 
1089 
1090     AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1091 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1092 
operator =VULKAN_HPP_NAMESPACE::AttachmentReference1093     AttachmentReference & operator=( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT
1094     {
1095       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference const *>( &rhs );
1096       return *this;
1097     }
1098 
1099 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAttachmentVULKAN_HPP_NAMESPACE::AttachmentReference1100     VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
1101     {
1102       attachment = attachment_;
1103       return *this;
1104     }
1105 
setLayoutVULKAN_HPP_NAMESPACE::AttachmentReference1106     VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT
1107     {
1108       layout = layout_;
1109       return *this;
1110     }
1111 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1112 
1113 
operator VkAttachmentReference const&VULKAN_HPP_NAMESPACE::AttachmentReference1114     operator VkAttachmentReference const &() const VULKAN_HPP_NOEXCEPT
1115     {
1116       return *reinterpret_cast<const VkAttachmentReference*>( this );
1117     }
1118 
operator VkAttachmentReference&VULKAN_HPP_NAMESPACE::AttachmentReference1119     operator VkAttachmentReference &() VULKAN_HPP_NOEXCEPT
1120     {
1121       return *reinterpret_cast<VkAttachmentReference*>( this );
1122     }
1123 
1124 #if defined( VULKAN_HPP_USE_REFLECT )
1125 #if 14 <= VULKAN_HPP_CPP_VERSION
1126     auto
1127 #else
1128     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
1129 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReference1130       reflect() const VULKAN_HPP_NOEXCEPT
1131     {
1132       return std::tie( attachment, layout );
1133     }
1134 #endif
1135 
1136 
1137 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1138 auto operator<=>( AttachmentReference const & ) const = default;
1139 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReference1140     bool operator==( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT
1141     {
1142 #if defined( VULKAN_HPP_USE_REFLECT )
1143       return this->reflect() == rhs.reflect();
1144 #else
1145       return ( attachment == rhs.attachment )
1146           && ( layout == rhs.layout );
1147 #endif
1148     }
1149 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReference1150     bool operator!=( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT
1151     {
1152       return !operator==( rhs );
1153     }
1154 #endif
1155 
1156     public:
1157     uint32_t attachment = {};
1158     VULKAN_HPP_NAMESPACE::ImageLayout layout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
1159 
1160   };
1161 
1162   struct AttachmentReference2
1163   {
1164     using NativeType = VkAttachmentReference2;
1165 
1166     static const bool allowDuplicate = false;
1167     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReference2;
1168 
1169 
1170 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReference2VULKAN_HPP_NAMESPACE::AttachmentReference21171 VULKAN_HPP_CONSTEXPR AttachmentReference2(uint32_t attachment_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
1172     : pNext( pNext_ ), attachment( attachment_ ), layout( layout_ ), aspectMask( aspectMask_ )
1173     {}
1174 
1175     VULKAN_HPP_CONSTEXPR AttachmentReference2( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1176 
AttachmentReference2VULKAN_HPP_NAMESPACE::AttachmentReference21177     AttachmentReference2( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
1178       : AttachmentReference2( *reinterpret_cast<AttachmentReference2 const *>( &rhs ) )
1179     {}
1180 
1181 
1182     AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1183 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1184 
operator =VULKAN_HPP_NAMESPACE::AttachmentReference21185     AttachmentReference2 & operator=( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT
1186     {
1187       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReference2 const *>( &rhs );
1188       return *this;
1189     }
1190 
1191 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentReference21192     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1193     {
1194       pNext = pNext_;
1195       return *this;
1196     }
1197 
setAttachmentVULKAN_HPP_NAMESPACE::AttachmentReference21198     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT
1199     {
1200       attachment = attachment_;
1201       return *this;
1202     }
1203 
setLayoutVULKAN_HPP_NAMESPACE::AttachmentReference21204     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT
1205     {
1206       layout = layout_;
1207       return *this;
1208     }
1209 
setAspectMaskVULKAN_HPP_NAMESPACE::AttachmentReference21210     VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
1211     {
1212       aspectMask = aspectMask_;
1213       return *this;
1214     }
1215 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1216 
1217 
operator VkAttachmentReference2 const&VULKAN_HPP_NAMESPACE::AttachmentReference21218     operator VkAttachmentReference2 const &() const VULKAN_HPP_NOEXCEPT
1219     {
1220       return *reinterpret_cast<const VkAttachmentReference2*>( this );
1221     }
1222 
operator VkAttachmentReference2&VULKAN_HPP_NAMESPACE::AttachmentReference21223     operator VkAttachmentReference2 &() VULKAN_HPP_NOEXCEPT
1224     {
1225       return *reinterpret_cast<VkAttachmentReference2*>( this );
1226     }
1227 
1228 #if defined( VULKAN_HPP_USE_REFLECT )
1229 #if 14 <= VULKAN_HPP_CPP_VERSION
1230     auto
1231 #else
1232     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ImageAspectFlags const &>
1233 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReference21234       reflect() const VULKAN_HPP_NOEXCEPT
1235     {
1236       return std::tie( sType, pNext, attachment, layout, aspectMask );
1237     }
1238 #endif
1239 
1240 
1241 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1242 auto operator<=>( AttachmentReference2 const & ) const = default;
1243 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReference21244     bool operator==( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT
1245     {
1246 #if defined( VULKAN_HPP_USE_REFLECT )
1247       return this->reflect() == rhs.reflect();
1248 #else
1249       return ( sType == rhs.sType )
1250           && ( pNext == rhs.pNext )
1251           && ( attachment == rhs.attachment )
1252           && ( layout == rhs.layout )
1253           && ( aspectMask == rhs.aspectMask );
1254 #endif
1255     }
1256 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReference21257     bool operator!=( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT
1258     {
1259       return !operator==( rhs );
1260     }
1261 #endif
1262 
1263     public:
1264     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReference2;
1265     const void * pNext = {};
1266     uint32_t attachment = {};
1267     VULKAN_HPP_NAMESPACE::ImageLayout layout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
1268     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
1269 
1270   };
1271 
1272   template <>
1273   struct CppType<StructureType, StructureType::eAttachmentReference2>
1274   {
1275     using Type = AttachmentReference2;
1276   };
1277   using AttachmentReference2KHR = AttachmentReference2;
1278 
1279   struct AttachmentReferenceStencilLayout
1280   {
1281     using NativeType = VkAttachmentReferenceStencilLayout;
1282 
1283     static const bool allowDuplicate = false;
1284     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReferenceStencilLayout;
1285 
1286 
1287 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentReferenceStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1288 VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout(VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
1289     : pNext( pNext_ ), stencilLayout( stencilLayout_ )
1290     {}
1291 
1292     VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1293 
AttachmentReferenceStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1294     AttachmentReferenceStencilLayout( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
1295       : AttachmentReferenceStencilLayout( *reinterpret_cast<AttachmentReferenceStencilLayout const *>( &rhs ) )
1296     {}
1297 
1298 
1299     AttachmentReferenceStencilLayout & operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1300 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1301 
operator =VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1302     AttachmentReferenceStencilLayout & operator=( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT
1303     {
1304       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout const *>( &rhs );
1305       return *this;
1306     }
1307 
1308 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1309     VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
1310     {
1311       pNext = pNext_;
1312       return *this;
1313     }
1314 
setStencilLayoutVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1315     VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ ) VULKAN_HPP_NOEXCEPT
1316     {
1317       stencilLayout = stencilLayout_;
1318       return *this;
1319     }
1320 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1321 
1322 
operator VkAttachmentReferenceStencilLayout const&VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1323     operator VkAttachmentReferenceStencilLayout const &() const VULKAN_HPP_NOEXCEPT
1324     {
1325       return *reinterpret_cast<const VkAttachmentReferenceStencilLayout*>( this );
1326     }
1327 
operator VkAttachmentReferenceStencilLayout&VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1328     operator VkAttachmentReferenceStencilLayout &() VULKAN_HPP_NOEXCEPT
1329     {
1330       return *reinterpret_cast<VkAttachmentReferenceStencilLayout*>( this );
1331     }
1332 
1333 #if defined( VULKAN_HPP_USE_REFLECT )
1334 #if 14 <= VULKAN_HPP_CPP_VERSION
1335     auto
1336 #else
1337     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
1338 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1339       reflect() const VULKAN_HPP_NOEXCEPT
1340     {
1341       return std::tie( sType, pNext, stencilLayout );
1342     }
1343 #endif
1344 
1345 
1346 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1347 auto operator<=>( AttachmentReferenceStencilLayout const & ) const = default;
1348 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1349     bool operator==( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
1350     {
1351 #if defined( VULKAN_HPP_USE_REFLECT )
1352       return this->reflect() == rhs.reflect();
1353 #else
1354       return ( sType == rhs.sType )
1355           && ( pNext == rhs.pNext )
1356           && ( stencilLayout == rhs.stencilLayout );
1357 #endif
1358     }
1359 
operator !=VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout1360     bool operator!=( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
1361     {
1362       return !operator==( rhs );
1363     }
1364 #endif
1365 
1366     public:
1367     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReferenceStencilLayout;
1368     void * pNext = {};
1369     VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
1370 
1371   };
1372 
1373   template <>
1374   struct CppType<StructureType, StructureType::eAttachmentReferenceStencilLayout>
1375   {
1376     using Type = AttachmentReferenceStencilLayout;
1377   };
1378   using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout;
1379 
1380   struct Extent2D
1381   {
1382     using NativeType = VkExtent2D;
1383 
1384 
1385 
1386 
1387 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Extent2DVULKAN_HPP_NAMESPACE::Extent2D1388 VULKAN_HPP_CONSTEXPR Extent2D(uint32_t width_ = {}, uint32_t height_ = {}) VULKAN_HPP_NOEXCEPT
1389     : width( width_ ), height( height_ )
1390     {}
1391 
1392     VULKAN_HPP_CONSTEXPR Extent2D( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1393 
Extent2DVULKAN_HPP_NAMESPACE::Extent2D1394     Extent2D( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT
1395       : Extent2D( *reinterpret_cast<Extent2D const *>( &rhs ) )
1396     {}
1397 
1398 
1399     Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1400 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1401 
operator =VULKAN_HPP_NAMESPACE::Extent2D1402     Extent2D & operator=( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT
1403     {
1404       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent2D const *>( &rhs );
1405       return *this;
1406     }
1407 
1408 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::Extent2D1409     VULKAN_HPP_CONSTEXPR_14 Extent2D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
1410     {
1411       width = width_;
1412       return *this;
1413     }
1414 
setHeightVULKAN_HPP_NAMESPACE::Extent2D1415     VULKAN_HPP_CONSTEXPR_14 Extent2D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
1416     {
1417       height = height_;
1418       return *this;
1419     }
1420 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1421 
1422 
operator VkExtent2D const&VULKAN_HPP_NAMESPACE::Extent2D1423     operator VkExtent2D const &() const VULKAN_HPP_NOEXCEPT
1424     {
1425       return *reinterpret_cast<const VkExtent2D*>( this );
1426     }
1427 
operator VkExtent2D&VULKAN_HPP_NAMESPACE::Extent2D1428     operator VkExtent2D &() VULKAN_HPP_NOEXCEPT
1429     {
1430       return *reinterpret_cast<VkExtent2D*>( this );
1431     }
1432 
1433 #if defined( VULKAN_HPP_USE_REFLECT )
1434 #if 14 <= VULKAN_HPP_CPP_VERSION
1435     auto
1436 #else
1437     std::tuple<uint32_t const &, uint32_t const &>
1438 #endif
reflectVULKAN_HPP_NAMESPACE::Extent2D1439       reflect() const VULKAN_HPP_NOEXCEPT
1440     {
1441       return std::tie( width, height );
1442     }
1443 #endif
1444 
1445 
1446 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1447 auto operator<=>( Extent2D const & ) const = default;
1448 #else
operator ==VULKAN_HPP_NAMESPACE::Extent2D1449     bool operator==( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT
1450     {
1451 #if defined( VULKAN_HPP_USE_REFLECT )
1452       return this->reflect() == rhs.reflect();
1453 #else
1454       return ( width == rhs.width )
1455           && ( height == rhs.height );
1456 #endif
1457     }
1458 
operator !=VULKAN_HPP_NAMESPACE::Extent2D1459     bool operator!=( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT
1460     {
1461       return !operator==( rhs );
1462     }
1463 #endif
1464 
1465     public:
1466     uint32_t width = {};
1467     uint32_t height = {};
1468 
1469   };
1470 
1471   struct SampleLocationEXT
1472   {
1473     using NativeType = VkSampleLocationEXT;
1474 
1475 
1476 
1477 
1478 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SampleLocationEXTVULKAN_HPP_NAMESPACE::SampleLocationEXT1479 VULKAN_HPP_CONSTEXPR SampleLocationEXT(float x_ = {}, float y_ = {}) VULKAN_HPP_NOEXCEPT
1480     : x( x_ ), y( y_ )
1481     {}
1482 
1483     VULKAN_HPP_CONSTEXPR SampleLocationEXT( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1484 
SampleLocationEXTVULKAN_HPP_NAMESPACE::SampleLocationEXT1485     SampleLocationEXT( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1486       : SampleLocationEXT( *reinterpret_cast<SampleLocationEXT const *>( &rhs ) )
1487     {}
1488 
1489 
1490     SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1491 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1492 
operator =VULKAN_HPP_NAMESPACE::SampleLocationEXT1493     SampleLocationEXT & operator=( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1494     {
1495       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationEXT const *>( &rhs );
1496       return *this;
1497     }
1498 
1499 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::SampleLocationEXT1500     VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
1501     {
1502       x = x_;
1503       return *this;
1504     }
1505 
setYVULKAN_HPP_NAMESPACE::SampleLocationEXT1506     VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT
1507     {
1508       y = y_;
1509       return *this;
1510     }
1511 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1512 
1513 
operator VkSampleLocationEXT const&VULKAN_HPP_NAMESPACE::SampleLocationEXT1514     operator VkSampleLocationEXT const &() const VULKAN_HPP_NOEXCEPT
1515     {
1516       return *reinterpret_cast<const VkSampleLocationEXT*>( this );
1517     }
1518 
operator VkSampleLocationEXT&VULKAN_HPP_NAMESPACE::SampleLocationEXT1519     operator VkSampleLocationEXT &() VULKAN_HPP_NOEXCEPT
1520     {
1521       return *reinterpret_cast<VkSampleLocationEXT*>( this );
1522     }
1523 
1524 #if defined( VULKAN_HPP_USE_REFLECT )
1525 #if 14 <= VULKAN_HPP_CPP_VERSION
1526     auto
1527 #else
1528     std::tuple<float const &, float const &>
1529 #endif
reflectVULKAN_HPP_NAMESPACE::SampleLocationEXT1530       reflect() const VULKAN_HPP_NOEXCEPT
1531     {
1532       return std::tie( x, y );
1533     }
1534 #endif
1535 
1536 
1537 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1538 auto operator<=>( SampleLocationEXT const & ) const = default;
1539 #else
operator ==VULKAN_HPP_NAMESPACE::SampleLocationEXT1540     bool operator==( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1541     {
1542 #if defined( VULKAN_HPP_USE_REFLECT )
1543       return this->reflect() == rhs.reflect();
1544 #else
1545       return ( x == rhs.x )
1546           && ( y == rhs.y );
1547 #endif
1548     }
1549 
operator !=VULKAN_HPP_NAMESPACE::SampleLocationEXT1550     bool operator!=( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1551     {
1552       return !operator==( rhs );
1553     }
1554 #endif
1555 
1556     public:
1557     float x = {};
1558     float y = {};
1559 
1560   };
1561 
1562   struct SampleLocationsInfoEXT
1563   {
1564     using NativeType = VkSampleLocationsInfoEXT;
1565 
1566     static const bool allowDuplicate = false;
1567     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSampleLocationsInfoEXT;
1568 
1569 
1570 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1571 VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT(VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize_ = {}, uint32_t sampleLocationsCount_ = {}, const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
1572     : pNext( pNext_ ), sampleLocationsPerPixel( sampleLocationsPerPixel_ ), sampleLocationGridSize( sampleLocationGridSize_ ), sampleLocationsCount( sampleLocationsCount_ ), pSampleLocations( pSampleLocations_ )
1573     {}
1574 
1575     VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1576 
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1577     SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1578       : SampleLocationsInfoEXT( *reinterpret_cast<SampleLocationsInfoEXT const *>( &rhs ) )
1579     {}
1580 
1581 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SampleLocationsInfoEXTVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1582     SampleLocationsInfoEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_, VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const & sampleLocations_, const void * pNext_ = nullptr )
1583     : pNext( pNext_ ), sampleLocationsPerPixel( sampleLocationsPerPixel_ ), sampleLocationGridSize( sampleLocationGridSize_ ), sampleLocationsCount( static_cast<uint32_t>( sampleLocations_.size() ) ), pSampleLocations( sampleLocations_.data() )
1584     {}
1585 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
1586 
1587 
1588     SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1589 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1590 
operator =VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1591     SampleLocationsInfoEXT & operator=( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1592     {
1593       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const *>( &rhs );
1594       return *this;
1595     }
1596 
1597 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1598     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1599     {
1600       pNext = pNext_;
1601       return *this;
1602     }
1603 
setSampleLocationsPerPixelVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1604     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationsPerPixel( VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ ) VULKAN_HPP_NOEXCEPT
1605     {
1606       sampleLocationsPerPixel = sampleLocationsPerPixel_;
1607       return *this;
1608     }
1609 
setSampleLocationGridSizeVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1610     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationGridSize( VULKAN_HPP_NAMESPACE::Extent2D const & sampleLocationGridSize_ ) VULKAN_HPP_NOEXCEPT
1611     {
1612       sampleLocationGridSize = sampleLocationGridSize_;
1613       return *this;
1614     }
1615 
setSampleLocationsCountVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1616     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationsCount( uint32_t sampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
1617     {
1618       sampleLocationsCount = sampleLocationsCount_;
1619       return *this;
1620     }
1621 
setPSampleLocationsVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1622     VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setPSampleLocations( const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations_ ) VULKAN_HPP_NOEXCEPT
1623     {
1624       pSampleLocations = pSampleLocations_;
1625       return *this;
1626     }
1627 
1628 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSampleLocationsVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1629     SampleLocationsInfoEXT & setSampleLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SampleLocationEXT> const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT
1630     {
1631       sampleLocationsCount = static_cast<uint32_t>( sampleLocations_.size() );
1632       pSampleLocations = sampleLocations_.data();
1633       return *this;
1634     }
1635 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
1636 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1637 
1638 
operator VkSampleLocationsInfoEXT const&VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1639     operator VkSampleLocationsInfoEXT const &() const VULKAN_HPP_NOEXCEPT
1640     {
1641       return *reinterpret_cast<const VkSampleLocationsInfoEXT*>( this );
1642     }
1643 
operator VkSampleLocationsInfoEXT&VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1644     operator VkSampleLocationsInfoEXT &() VULKAN_HPP_NOEXCEPT
1645     {
1646       return *reinterpret_cast<VkSampleLocationsInfoEXT*>( this );
1647     }
1648 
1649 #if defined( VULKAN_HPP_USE_REFLECT )
1650 #if 14 <= VULKAN_HPP_CPP_VERSION
1651     auto
1652 #else
1653     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SampleLocationEXT * const &>
1654 #endif
reflectVULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1655       reflect() const VULKAN_HPP_NOEXCEPT
1656     {
1657       return std::tie( sType, pNext, sampleLocationsPerPixel, sampleLocationGridSize, sampleLocationsCount, pSampleLocations );
1658     }
1659 #endif
1660 
1661 
1662 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1663 auto operator<=>( SampleLocationsInfoEXT const & ) const = default;
1664 #else
operator ==VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1665     bool operator==( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1666     {
1667 #if defined( VULKAN_HPP_USE_REFLECT )
1668       return this->reflect() == rhs.reflect();
1669 #else
1670       return ( sType == rhs.sType )
1671           && ( pNext == rhs.pNext )
1672           && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
1673           && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
1674           && ( sampleLocationsCount == rhs.sampleLocationsCount )
1675           && ( pSampleLocations == rhs.pSampleLocations );
1676 #endif
1677     }
1678 
operator !=VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT1679     bool operator!=( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1680     {
1681       return !operator==( rhs );
1682     }
1683 #endif
1684 
1685     public:
1686     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSampleLocationsInfoEXT;
1687     const void * pNext = {};
1688     VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
1689     VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize = {};
1690     uint32_t sampleLocationsCount = {};
1691     const VULKAN_HPP_NAMESPACE::SampleLocationEXT * pSampleLocations = {};
1692 
1693   };
1694 
1695   template <>
1696   struct CppType<StructureType, StructureType::eSampleLocationsInfoEXT>
1697   {
1698     using Type = SampleLocationsInfoEXT;
1699   };
1700 
1701   struct AttachmentSampleLocationsEXT
1702   {
1703     using NativeType = VkAttachmentSampleLocationsEXT;
1704 
1705 
1706 
1707 
1708 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
AttachmentSampleLocationsEXTVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1709 VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT(uint32_t attachmentIndex_ = {}, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {}) VULKAN_HPP_NOEXCEPT
1710     : attachmentIndex( attachmentIndex_ ), sampleLocationsInfo( sampleLocationsInfo_ )
1711     {}
1712 
1713     VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1714 
AttachmentSampleLocationsEXTVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1715     AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1716       : AttachmentSampleLocationsEXT( *reinterpret_cast<AttachmentSampleLocationsEXT const *>( &rhs ) )
1717     {}
1718 
1719 
1720     AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1721 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1722 
operator =VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1723     AttachmentSampleLocationsEXT & operator=( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
1724     {
1725       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT const *>( &rhs );
1726       return *this;
1727     }
1728 
1729 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAttachmentIndexVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1730     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & setAttachmentIndex( uint32_t attachmentIndex_ ) VULKAN_HPP_NOEXCEPT
1731     {
1732       attachmentIndex = attachmentIndex_;
1733       return *this;
1734     }
1735 
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1736     VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
1737     {
1738       sampleLocationsInfo = sampleLocationsInfo_;
1739       return *this;
1740     }
1741 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1742 
1743 
operator VkAttachmentSampleLocationsEXT const&VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1744     operator VkAttachmentSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT
1745     {
1746       return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>( this );
1747     }
1748 
operator VkAttachmentSampleLocationsEXT&VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1749     operator VkAttachmentSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT
1750     {
1751       return *reinterpret_cast<VkAttachmentSampleLocationsEXT*>( this );
1752     }
1753 
1754 #if defined( VULKAN_HPP_USE_REFLECT )
1755 #if 14 <= VULKAN_HPP_CPP_VERSION
1756     auto
1757 #else
1758     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
1759 #endif
reflectVULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1760       reflect() const VULKAN_HPP_NOEXCEPT
1761     {
1762       return std::tie( attachmentIndex, sampleLocationsInfo );
1763     }
1764 #endif
1765 
1766 
1767 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1768 auto operator<=>( AttachmentSampleLocationsEXT const & ) const = default;
1769 #else
operator ==VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1770     bool operator==( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1771     {
1772 #if defined( VULKAN_HPP_USE_REFLECT )
1773       return this->reflect() == rhs.reflect();
1774 #else
1775       return ( attachmentIndex == rhs.attachmentIndex )
1776           && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
1777 #endif
1778     }
1779 
operator !=VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT1780     bool operator!=( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
1781     {
1782       return !operator==( rhs );
1783     }
1784 #endif
1785 
1786     public:
1787     uint32_t attachmentIndex = {};
1788     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
1789 
1790   };
1791 
1792   struct BaseInStructure
1793   {
1794     using NativeType = VkBaseInStructure;
1795 
1796 
1797 
1798 
1799 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BaseInStructureVULKAN_HPP_NAMESPACE::BaseInStructure1800 BaseInStructure(VULKAN_HPP_NAMESPACE::StructureType sType_ = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo, const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
1801     : sType( sType_ ), pNext( pNext_ )
1802     {}
1803 
1804     BaseInStructure( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1805 
BaseInStructureVULKAN_HPP_NAMESPACE::BaseInStructure1806     BaseInStructure( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
1807       : BaseInStructure( *reinterpret_cast<BaseInStructure const *>( &rhs ) )
1808     {}
1809 
1810 
1811     BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1812 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1813 
operator =VULKAN_HPP_NAMESPACE::BaseInStructure1814     BaseInStructure & operator=( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT
1815     {
1816       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseInStructure const *>( &rhs );
1817       return *this;
1818     }
1819 
1820 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BaseInStructure1821     VULKAN_HPP_CONSTEXPR_14 BaseInStructure & setPNext( const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext_ ) VULKAN_HPP_NOEXCEPT
1822     {
1823       pNext = pNext_;
1824       return *this;
1825     }
1826 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1827 
1828 
operator VkBaseInStructure const&VULKAN_HPP_NAMESPACE::BaseInStructure1829     operator VkBaseInStructure const &() const VULKAN_HPP_NOEXCEPT
1830     {
1831       return *reinterpret_cast<const VkBaseInStructure*>( this );
1832     }
1833 
operator VkBaseInStructure&VULKAN_HPP_NAMESPACE::BaseInStructure1834     operator VkBaseInStructure &() VULKAN_HPP_NOEXCEPT
1835     {
1836       return *reinterpret_cast<VkBaseInStructure*>( this );
1837     }
1838 
1839 #if defined( VULKAN_HPP_USE_REFLECT )
1840 #if 14 <= VULKAN_HPP_CPP_VERSION
1841     auto
1842 #else
1843     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const struct VULKAN_HPP_NAMESPACE::BaseInStructure * const &>
1844 #endif
reflectVULKAN_HPP_NAMESPACE::BaseInStructure1845       reflect() const VULKAN_HPP_NOEXCEPT
1846     {
1847       return std::tie( sType, pNext );
1848     }
1849 #endif
1850 
1851 
1852 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1853 auto operator<=>( BaseInStructure const & ) const = default;
1854 #else
operator ==VULKAN_HPP_NAMESPACE::BaseInStructure1855     bool operator==( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
1856     {
1857 #if defined( VULKAN_HPP_USE_REFLECT )
1858       return this->reflect() == rhs.reflect();
1859 #else
1860       return ( sType == rhs.sType )
1861           && ( pNext == rhs.pNext );
1862 #endif
1863     }
1864 
operator !=VULKAN_HPP_NAMESPACE::BaseInStructure1865     bool operator!=( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
1866     {
1867       return !operator==( rhs );
1868     }
1869 #endif
1870 
1871     public:
1872     VULKAN_HPP_NAMESPACE::StructureType sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo;
1873     const struct VULKAN_HPP_NAMESPACE::BaseInStructure * pNext = {};
1874 
1875   };
1876 
1877   struct BaseOutStructure
1878   {
1879     using NativeType = VkBaseOutStructure;
1880 
1881 
1882 
1883 
1884 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BaseOutStructureVULKAN_HPP_NAMESPACE::BaseOutStructure1885 BaseOutStructure(VULKAN_HPP_NAMESPACE::StructureType sType_ = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo, struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
1886     : sType( sType_ ), pNext( pNext_ )
1887     {}
1888 
1889     BaseOutStructure( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1890 
BaseOutStructureVULKAN_HPP_NAMESPACE::BaseOutStructure1891     BaseOutStructure( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
1892       : BaseOutStructure( *reinterpret_cast<BaseOutStructure const *>( &rhs ) )
1893     {}
1894 
1895 
1896     BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1897 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1898 
operator =VULKAN_HPP_NAMESPACE::BaseOutStructure1899     BaseOutStructure & operator=( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT
1900     {
1901       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BaseOutStructure const *>( &rhs );
1902       return *this;
1903     }
1904 
1905 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BaseOutStructure1906     VULKAN_HPP_CONSTEXPR_14 BaseOutStructure & setPNext( struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext_ ) VULKAN_HPP_NOEXCEPT
1907     {
1908       pNext = pNext_;
1909       return *this;
1910     }
1911 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
1912 
1913 
operator VkBaseOutStructure const&VULKAN_HPP_NAMESPACE::BaseOutStructure1914     operator VkBaseOutStructure const &() const VULKAN_HPP_NOEXCEPT
1915     {
1916       return *reinterpret_cast<const VkBaseOutStructure*>( this );
1917     }
1918 
operator VkBaseOutStructure&VULKAN_HPP_NAMESPACE::BaseOutStructure1919     operator VkBaseOutStructure &() VULKAN_HPP_NOEXCEPT
1920     {
1921       return *reinterpret_cast<VkBaseOutStructure*>( this );
1922     }
1923 
1924 #if defined( VULKAN_HPP_USE_REFLECT )
1925 #if 14 <= VULKAN_HPP_CPP_VERSION
1926     auto
1927 #else
1928     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, struct VULKAN_HPP_NAMESPACE::BaseOutStructure * const &>
1929 #endif
reflectVULKAN_HPP_NAMESPACE::BaseOutStructure1930       reflect() const VULKAN_HPP_NOEXCEPT
1931     {
1932       return std::tie( sType, pNext );
1933     }
1934 #endif
1935 
1936 
1937 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
1938 auto operator<=>( BaseOutStructure const & ) const = default;
1939 #else
operator ==VULKAN_HPP_NAMESPACE::BaseOutStructure1940     bool operator==( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
1941     {
1942 #if defined( VULKAN_HPP_USE_REFLECT )
1943       return this->reflect() == rhs.reflect();
1944 #else
1945       return ( sType == rhs.sType )
1946           && ( pNext == rhs.pNext );
1947 #endif
1948     }
1949 
operator !=VULKAN_HPP_NAMESPACE::BaseOutStructure1950     bool operator!=( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT
1951     {
1952       return !operator==( rhs );
1953     }
1954 #endif
1955 
1956     public:
1957     VULKAN_HPP_NAMESPACE::StructureType sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo;
1958     struct VULKAN_HPP_NAMESPACE::BaseOutStructure * pNext = {};
1959 
1960   };
1961 
1962   struct BindBufferMemoryDeviceGroupInfo
1963   {
1964     using NativeType = VkBindBufferMemoryDeviceGroupInfo;
1965 
1966     static const bool allowDuplicate = false;
1967     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindBufferMemoryDeviceGroupInfo;
1968 
1969 
1970 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo1971 VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo(uint32_t deviceIndexCount_ = {}, const uint32_t * pDeviceIndices_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
1972     : pNext( pNext_ ), deviceIndexCount( deviceIndexCount_ ), pDeviceIndices( pDeviceIndices_ )
1973     {}
1974 
1975     VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1976 
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo1977     BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
1978       : BindBufferMemoryDeviceGroupInfo( *reinterpret_cast<BindBufferMemoryDeviceGroupInfo const *>( &rhs ) )
1979     {}
1980 
1981 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindBufferMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo1982     BindBufferMemoryDeviceGroupInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_, const void * pNext_ = nullptr )
1983     : pNext( pNext_ ), deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() )
1984     {}
1985 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
1986 
1987 
1988     BindBufferMemoryDeviceGroupInfo & operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
1989 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
1990 
operator =VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo1991     BindBufferMemoryDeviceGroupInfo & operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
1992     {
1993       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo const *>( &rhs );
1994       return *this;
1995     }
1996 
1997 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo1998     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
1999     {
2000       pNext = pNext_;
2001       return *this;
2002     }
2003 
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo2004     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
2005     {
2006       deviceIndexCount = deviceIndexCount_;
2007       return *this;
2008     }
2009 
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo2010     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
2011     {
2012       pDeviceIndices = pDeviceIndices_;
2013       return *this;
2014     }
2015 
2016 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo2017     BindBufferMemoryDeviceGroupInfo & setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
2018     {
2019       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
2020       pDeviceIndices = deviceIndices_.data();
2021       return *this;
2022     }
2023 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2024 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2025 
2026 
operator VkBindBufferMemoryDeviceGroupInfo const&VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo2027     operator VkBindBufferMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT
2028     {
2029       return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfo*>( this );
2030     }
2031 
operator VkBindBufferMemoryDeviceGroupInfo&VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo2032     operator VkBindBufferMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT
2033     {
2034       return *reinterpret_cast<VkBindBufferMemoryDeviceGroupInfo*>( this );
2035     }
2036 
2037 #if defined( VULKAN_HPP_USE_REFLECT )
2038 #if 14 <= VULKAN_HPP_CPP_VERSION
2039     auto
2040 #else
2041     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &>
2042 #endif
reflectVULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo2043       reflect() const VULKAN_HPP_NOEXCEPT
2044     {
2045       return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices );
2046     }
2047 #endif
2048 
2049 
2050 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2051 auto operator<=>( BindBufferMemoryDeviceGroupInfo const & ) const = default;
2052 #else
operator ==VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo2053     bool operator==( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2054     {
2055 #if defined( VULKAN_HPP_USE_REFLECT )
2056       return this->reflect() == rhs.reflect();
2057 #else
2058       return ( sType == rhs.sType )
2059           && ( pNext == rhs.pNext )
2060           && ( deviceIndexCount == rhs.deviceIndexCount )
2061           && ( pDeviceIndices == rhs.pDeviceIndices );
2062 #endif
2063     }
2064 
operator !=VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo2065     bool operator!=( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2066     {
2067       return !operator==( rhs );
2068     }
2069 #endif
2070 
2071     public:
2072     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo;
2073     const void * pNext = {};
2074     uint32_t deviceIndexCount = {};
2075     const uint32_t * pDeviceIndices = {};
2076 
2077   };
2078 
2079   template <>
2080   struct CppType<StructureType, StructureType::eBindBufferMemoryDeviceGroupInfo>
2081   {
2082     using Type = BindBufferMemoryDeviceGroupInfo;
2083   };
2084   using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo;
2085 
2086   struct BindBufferMemoryInfo
2087   {
2088     using NativeType = VkBindBufferMemoryInfo;
2089 
2090     static const bool allowDuplicate = false;
2091     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindBufferMemoryInfo;
2092 
2093 
2094 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindBufferMemoryInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2095 VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
2096     : pNext( pNext_ ), buffer( buffer_ ), memory( memory_ ), memoryOffset( memoryOffset_ )
2097     {}
2098 
2099     VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2100 
BindBufferMemoryInfoVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2101     BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
2102       : BindBufferMemoryInfo( *reinterpret_cast<BindBufferMemoryInfo const *>( &rhs ) )
2103     {}
2104 
2105 
2106     BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2107 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2108 
operator =VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2109     BindBufferMemoryInfo & operator=( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
2110     {
2111       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo const *>( &rhs );
2112       return *this;
2113     }
2114 
2115 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2116     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2117     {
2118       pNext = pNext_;
2119       return *this;
2120     }
2121 
setBufferVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2122     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
2123     {
2124       buffer = buffer_;
2125       return *this;
2126     }
2127 
setMemoryVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2128     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
2129     {
2130       memory = memory_;
2131       return *this;
2132     }
2133 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2134     VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
2135     {
2136       memoryOffset = memoryOffset_;
2137       return *this;
2138     }
2139 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2140 
2141 
operator VkBindBufferMemoryInfo const&VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2142     operator VkBindBufferMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
2143     {
2144       return *reinterpret_cast<const VkBindBufferMemoryInfo*>( this );
2145     }
2146 
operator VkBindBufferMemoryInfo&VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2147     operator VkBindBufferMemoryInfo &() VULKAN_HPP_NOEXCEPT
2148     {
2149       return *reinterpret_cast<VkBindBufferMemoryInfo*>( this );
2150     }
2151 
2152 #if defined( VULKAN_HPP_USE_REFLECT )
2153 #if 14 <= VULKAN_HPP_CPP_VERSION
2154     auto
2155 #else
2156     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
2157 #endif
reflectVULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2158       reflect() const VULKAN_HPP_NOEXCEPT
2159     {
2160       return std::tie( sType, pNext, buffer, memory, memoryOffset );
2161     }
2162 #endif
2163 
2164 
2165 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2166 auto operator<=>( BindBufferMemoryInfo const & ) const = default;
2167 #else
operator ==VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2168     bool operator==( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2169     {
2170 #if defined( VULKAN_HPP_USE_REFLECT )
2171       return this->reflect() == rhs.reflect();
2172 #else
2173       return ( sType == rhs.sType )
2174           && ( pNext == rhs.pNext )
2175           && ( buffer == rhs.buffer )
2176           && ( memory == rhs.memory )
2177           && ( memoryOffset == rhs.memoryOffset );
2178 #endif
2179     }
2180 
operator !=VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo2181     bool operator!=( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2182     {
2183       return !operator==( rhs );
2184     }
2185 #endif
2186 
2187     public:
2188     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryInfo;
2189     const void * pNext = {};
2190     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
2191     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
2192     VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {};
2193 
2194   };
2195 
2196   template <>
2197   struct CppType<StructureType, StructureType::eBindBufferMemoryInfo>
2198   {
2199     using Type = BindBufferMemoryInfo;
2200   };
2201   using BindBufferMemoryInfoKHR = BindBufferMemoryInfo;
2202 
2203   struct Offset2D
2204   {
2205     using NativeType = VkOffset2D;
2206 
2207 
2208 
2209 
2210 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Offset2DVULKAN_HPP_NAMESPACE::Offset2D2211 VULKAN_HPP_CONSTEXPR Offset2D(int32_t x_ = {}, int32_t y_ = {}) VULKAN_HPP_NOEXCEPT
2212     : x( x_ ), y( y_ )
2213     {}
2214 
2215     VULKAN_HPP_CONSTEXPR Offset2D( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2216 
Offset2DVULKAN_HPP_NAMESPACE::Offset2D2217     Offset2D( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT
2218       : Offset2D( *reinterpret_cast<Offset2D const *>( &rhs ) )
2219     {}
2220 
2221 
2222     Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2223 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2224 
operator =VULKAN_HPP_NAMESPACE::Offset2D2225     Offset2D & operator=( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT
2226     {
2227       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset2D const *>( &rhs );
2228       return *this;
2229     }
2230 
2231 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Offset2D2232     VULKAN_HPP_CONSTEXPR_14 Offset2D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
2233     {
2234       x = x_;
2235       return *this;
2236     }
2237 
setYVULKAN_HPP_NAMESPACE::Offset2D2238     VULKAN_HPP_CONSTEXPR_14 Offset2D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT
2239     {
2240       y = y_;
2241       return *this;
2242     }
2243 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2244 
2245 
operator VkOffset2D const&VULKAN_HPP_NAMESPACE::Offset2D2246     operator VkOffset2D const &() const VULKAN_HPP_NOEXCEPT
2247     {
2248       return *reinterpret_cast<const VkOffset2D*>( this );
2249     }
2250 
operator VkOffset2D&VULKAN_HPP_NAMESPACE::Offset2D2251     operator VkOffset2D &() VULKAN_HPP_NOEXCEPT
2252     {
2253       return *reinterpret_cast<VkOffset2D*>( this );
2254     }
2255 
2256 #if defined( VULKAN_HPP_USE_REFLECT )
2257 #if 14 <= VULKAN_HPP_CPP_VERSION
2258     auto
2259 #else
2260     std::tuple<int32_t const &, int32_t const &>
2261 #endif
reflectVULKAN_HPP_NAMESPACE::Offset2D2262       reflect() const VULKAN_HPP_NOEXCEPT
2263     {
2264       return std::tie( x, y );
2265     }
2266 #endif
2267 
2268 
2269 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2270 auto operator<=>( Offset2D const & ) const = default;
2271 #else
operator ==VULKAN_HPP_NAMESPACE::Offset2D2272     bool operator==( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT
2273     {
2274 #if defined( VULKAN_HPP_USE_REFLECT )
2275       return this->reflect() == rhs.reflect();
2276 #else
2277       return ( x == rhs.x )
2278           && ( y == rhs.y );
2279 #endif
2280     }
2281 
operator !=VULKAN_HPP_NAMESPACE::Offset2D2282     bool operator!=( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT
2283     {
2284       return !operator==( rhs );
2285     }
2286 #endif
2287 
2288     public:
2289     int32_t x = {};
2290     int32_t y = {};
2291 
2292   };
2293 
2294   struct Rect2D
2295   {
2296     using NativeType = VkRect2D;
2297 
2298 
2299 
2300 
2301 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Rect2DVULKAN_HPP_NAMESPACE::Rect2D2302 VULKAN_HPP_CONSTEXPR Rect2D(VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, VULKAN_HPP_NAMESPACE::Extent2D extent_ = {}) VULKAN_HPP_NOEXCEPT
2303     : offset( offset_ ), extent( extent_ )
2304     {}
2305 
2306     VULKAN_HPP_CONSTEXPR Rect2D( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2307 
Rect2DVULKAN_HPP_NAMESPACE::Rect2D2308     Rect2D( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT
2309       : Rect2D( *reinterpret_cast<Rect2D const *>( &rhs ) )
2310     {}
2311 
2312 
2313     Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2314 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2315 
operator =VULKAN_HPP_NAMESPACE::Rect2D2316     Rect2D & operator=( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT
2317     {
2318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Rect2D const *>( &rhs );
2319       return *this;
2320     }
2321 
2322 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::Rect2D2323     VULKAN_HPP_CONSTEXPR_14 Rect2D & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
2324     {
2325       offset = offset_;
2326       return *this;
2327     }
2328 
setExtentVULKAN_HPP_NAMESPACE::Rect2D2329     VULKAN_HPP_CONSTEXPR_14 Rect2D & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT
2330     {
2331       extent = extent_;
2332       return *this;
2333     }
2334 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2335 
2336 
operator VkRect2D const&VULKAN_HPP_NAMESPACE::Rect2D2337     operator VkRect2D const &() const VULKAN_HPP_NOEXCEPT
2338     {
2339       return *reinterpret_cast<const VkRect2D*>( this );
2340     }
2341 
operator VkRect2D&VULKAN_HPP_NAMESPACE::Rect2D2342     operator VkRect2D &() VULKAN_HPP_NOEXCEPT
2343     {
2344       return *reinterpret_cast<VkRect2D*>( this );
2345     }
2346 
2347 #if defined( VULKAN_HPP_USE_REFLECT )
2348 #if 14 <= VULKAN_HPP_CPP_VERSION
2349     auto
2350 #else
2351     std::tuple<VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
2352 #endif
reflectVULKAN_HPP_NAMESPACE::Rect2D2353       reflect() const VULKAN_HPP_NOEXCEPT
2354     {
2355       return std::tie( offset, extent );
2356     }
2357 #endif
2358 
2359 
2360 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2361 auto operator<=>( Rect2D const & ) const = default;
2362 #else
operator ==VULKAN_HPP_NAMESPACE::Rect2D2363     bool operator==( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT
2364     {
2365 #if defined( VULKAN_HPP_USE_REFLECT )
2366       return this->reflect() == rhs.reflect();
2367 #else
2368       return ( offset == rhs.offset )
2369           && ( extent == rhs.extent );
2370 #endif
2371     }
2372 
operator !=VULKAN_HPP_NAMESPACE::Rect2D2373     bool operator!=( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT
2374     {
2375       return !operator==( rhs );
2376     }
2377 #endif
2378 
2379     public:
2380     VULKAN_HPP_NAMESPACE::Offset2D offset = {};
2381     VULKAN_HPP_NAMESPACE::Extent2D extent = {};
2382 
2383   };
2384 
2385   struct BindImageMemoryDeviceGroupInfo
2386   {
2387     using NativeType = VkBindImageMemoryDeviceGroupInfo;
2388 
2389     static const bool allowDuplicate = false;
2390     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemoryDeviceGroupInfo;
2391 
2392 
2393 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2394 VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo(uint32_t deviceIndexCount_ = {}, const uint32_t * pDeviceIndices_ = {}, uint32_t splitInstanceBindRegionCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
2395     : pNext( pNext_ ), deviceIndexCount( deviceIndexCount_ ), pDeviceIndices( pDeviceIndices_ ), splitInstanceBindRegionCount( splitInstanceBindRegionCount_ ), pSplitInstanceBindRegions( pSplitInstanceBindRegions_ )
2396     {}
2397 
2398     VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2399 
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2400     BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
2401       : BindImageMemoryDeviceGroupInfo( *reinterpret_cast<BindImageMemoryDeviceGroupInfo const *>( &rhs ) )
2402     {}
2403 
2404 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BindImageMemoryDeviceGroupInfoVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2405     BindImageMemoryDeviceGroupInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & splitInstanceBindRegions_ = {}, const void * pNext_ = nullptr )
2406     : pNext( pNext_ ), deviceIndexCount( static_cast<uint32_t>( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() ), splitInstanceBindRegionCount( static_cast<uint32_t>( splitInstanceBindRegions_.size() ) ), pSplitInstanceBindRegions( splitInstanceBindRegions_.data() )
2407     {}
2408 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2409 
2410 
2411     BindImageMemoryDeviceGroupInfo & operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2412 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2413 
operator =VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2414     BindImageMemoryDeviceGroupInfo & operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT
2415     {
2416       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo const *>( &rhs );
2417       return *this;
2418     }
2419 
2420 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2421     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2422     {
2423       pNext = pNext_;
2424       return *this;
2425     }
2426 
setDeviceIndexCountVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2427     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT
2428     {
2429       deviceIndexCount = deviceIndexCount_;
2430       return *this;
2431     }
2432 
setPDeviceIndicesVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2433     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t * pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
2434     {
2435       pDeviceIndices = pDeviceIndices_;
2436       return *this;
2437     }
2438 
2439 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceIndicesVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2440     BindImageMemoryDeviceGroupInfo & setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT
2441     {
2442       deviceIndexCount = static_cast<uint32_t>( deviceIndices_.size() );
2443       pDeviceIndices = deviceIndices_.data();
2444       return *this;
2445     }
2446 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2447 
setSplitInstanceBindRegionCountVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2448     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) VULKAN_HPP_NOEXCEPT
2449     {
2450       splitInstanceBindRegionCount = splitInstanceBindRegionCount_;
2451       return *this;
2452     }
2453 
setPSplitInstanceBindRegionsVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2454     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPSplitInstanceBindRegions( const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT
2455     {
2456       pSplitInstanceBindRegions = pSplitInstanceBindRegions_;
2457       return *this;
2458     }
2459 
2460 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSplitInstanceBindRegionsVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2461     BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & splitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT
2462     {
2463       splitInstanceBindRegionCount = static_cast<uint32_t>( splitInstanceBindRegions_.size() );
2464       pSplitInstanceBindRegions = splitInstanceBindRegions_.data();
2465       return *this;
2466     }
2467 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
2468 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2469 
2470 
operator VkBindImageMemoryDeviceGroupInfo const&VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2471     operator VkBindImageMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT
2472     {
2473       return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfo*>( this );
2474     }
2475 
operator VkBindImageMemoryDeviceGroupInfo&VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2476     operator VkBindImageMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT
2477     {
2478       return *reinterpret_cast<VkBindImageMemoryDeviceGroupInfo*>( this );
2479     }
2480 
2481 #if defined( VULKAN_HPP_USE_REFLECT )
2482 #if 14 <= VULKAN_HPP_CPP_VERSION
2483     auto
2484 #else
2485     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
2486 #endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2487       reflect() const VULKAN_HPP_NOEXCEPT
2488     {
2489       return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices, splitInstanceBindRegionCount, pSplitInstanceBindRegions );
2490     }
2491 #endif
2492 
2493 
2494 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2495 auto operator<=>( BindImageMemoryDeviceGroupInfo const & ) const = default;
2496 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2497     bool operator==( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2498     {
2499 #if defined( VULKAN_HPP_USE_REFLECT )
2500       return this->reflect() == rhs.reflect();
2501 #else
2502       return ( sType == rhs.sType )
2503           && ( pNext == rhs.pNext )
2504           && ( deviceIndexCount == rhs.deviceIndexCount )
2505           && ( pDeviceIndices == rhs.pDeviceIndices )
2506           && ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount )
2507           && ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions );
2508 #endif
2509     }
2510 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo2511     bool operator!=( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2512     {
2513       return !operator==( rhs );
2514     }
2515 #endif
2516 
2517     public:
2518     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo;
2519     const void * pNext = {};
2520     uint32_t deviceIndexCount = {};
2521     const uint32_t * pDeviceIndices = {};
2522     uint32_t splitInstanceBindRegionCount = {};
2523     const VULKAN_HPP_NAMESPACE::Rect2D * pSplitInstanceBindRegions = {};
2524 
2525   };
2526 
2527   template <>
2528   struct CppType<StructureType, StructureType::eBindImageMemoryDeviceGroupInfo>
2529   {
2530     using Type = BindImageMemoryDeviceGroupInfo;
2531   };
2532   using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo;
2533 
2534   struct BindImageMemoryInfo
2535   {
2536     using NativeType = VkBindImageMemoryInfo;
2537 
2538     static const bool allowDuplicate = false;
2539     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemoryInfo;
2540 
2541 
2542 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemoryInfoVULKAN_HPP_NAMESPACE::BindImageMemoryInfo2543 VULKAN_HPP_CONSTEXPR BindImageMemoryInfo(VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
2544     : pNext( pNext_ ), image( image_ ), memory( memory_ ), memoryOffset( memoryOffset_ )
2545     {}
2546 
2547     VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2548 
BindImageMemoryInfoVULKAN_HPP_NAMESPACE::BindImageMemoryInfo2549     BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
2550       : BindImageMemoryInfo( *reinterpret_cast<BindImageMemoryInfo const *>( &rhs ) )
2551     {}
2552 
2553 
2554     BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2555 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2556 
operator =VULKAN_HPP_NAMESPACE::BindImageMemoryInfo2557     BindImageMemoryInfo & operator=( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
2558     {
2559       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemoryInfo const *>( &rhs );
2560       return *this;
2561     }
2562 
2563 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemoryInfo2564     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2565     {
2566       pNext = pNext_;
2567       return *this;
2568     }
2569 
setImageVULKAN_HPP_NAMESPACE::BindImageMemoryInfo2570     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
2571     {
2572       image = image_;
2573       return *this;
2574     }
2575 
setMemoryVULKAN_HPP_NAMESPACE::BindImageMemoryInfo2576     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
2577     {
2578       memory = memory_;
2579       return *this;
2580     }
2581 
setMemoryOffsetVULKAN_HPP_NAMESPACE::BindImageMemoryInfo2582     VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT
2583     {
2584       memoryOffset = memoryOffset_;
2585       return *this;
2586     }
2587 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2588 
2589 
operator VkBindImageMemoryInfo const&VULKAN_HPP_NAMESPACE::BindImageMemoryInfo2590     operator VkBindImageMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
2591     {
2592       return *reinterpret_cast<const VkBindImageMemoryInfo*>( this );
2593     }
2594 
operator VkBindImageMemoryInfo&VULKAN_HPP_NAMESPACE::BindImageMemoryInfo2595     operator VkBindImageMemoryInfo &() VULKAN_HPP_NOEXCEPT
2596     {
2597       return *reinterpret_cast<VkBindImageMemoryInfo*>( this );
2598     }
2599 
2600 #if defined( VULKAN_HPP_USE_REFLECT )
2601 #if 14 <= VULKAN_HPP_CPP_VERSION
2602     auto
2603 #else
2604     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
2605 #endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemoryInfo2606       reflect() const VULKAN_HPP_NOEXCEPT
2607     {
2608       return std::tie( sType, pNext, image, memory, memoryOffset );
2609     }
2610 #endif
2611 
2612 
2613 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2614 auto operator<=>( BindImageMemoryInfo const & ) const = default;
2615 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemoryInfo2616     bool operator==( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2617     {
2618 #if defined( VULKAN_HPP_USE_REFLECT )
2619       return this->reflect() == rhs.reflect();
2620 #else
2621       return ( sType == rhs.sType )
2622           && ( pNext == rhs.pNext )
2623           && ( image == rhs.image )
2624           && ( memory == rhs.memory )
2625           && ( memoryOffset == rhs.memoryOffset );
2626 #endif
2627     }
2628 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemoryInfo2629     bool operator!=( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2630     {
2631       return !operator==( rhs );
2632     }
2633 #endif
2634 
2635     public:
2636     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryInfo;
2637     const void * pNext = {};
2638     VULKAN_HPP_NAMESPACE::Image image = {};
2639     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
2640     VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {};
2641 
2642   };
2643 
2644   template <>
2645   struct CppType<StructureType, StructureType::eBindImageMemoryInfo>
2646   {
2647     using Type = BindImageMemoryInfo;
2648   };
2649   using BindImageMemoryInfoKHR = BindImageMemoryInfo;
2650 
2651   struct BindImageMemorySwapchainInfoKHR
2652   {
2653     using NativeType = VkBindImageMemorySwapchainInfoKHR;
2654 
2655     static const bool allowDuplicate = false;
2656     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemorySwapchainInfoKHR;
2657 
2658 
2659 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImageMemorySwapchainInfoKHRVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2660 VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR(VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, uint32_t imageIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
2661     : pNext( pNext_ ), swapchain( swapchain_ ), imageIndex( imageIndex_ )
2662     {}
2663 
2664     VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2665 
BindImageMemorySwapchainInfoKHRVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2666     BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2667       : BindImageMemorySwapchainInfoKHR( *reinterpret_cast<BindImageMemorySwapchainInfoKHR const *>( &rhs ) )
2668     {}
2669 
2670 
2671     BindImageMemorySwapchainInfoKHR & operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2672 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2673 
operator =VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2674     BindImageMemorySwapchainInfoKHR & operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
2675     {
2676       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR const *>( &rhs );
2677       return *this;
2678     }
2679 
2680 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2681     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2682     {
2683       pNext = pNext_;
2684       return *this;
2685     }
2686 
setSwapchainVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2687     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
2688     {
2689       swapchain = swapchain_;
2690       return *this;
2691     }
2692 
setImageIndexVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2693     VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setImageIndex( uint32_t imageIndex_ ) VULKAN_HPP_NOEXCEPT
2694     {
2695       imageIndex = imageIndex_;
2696       return *this;
2697     }
2698 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2699 
2700 
operator VkBindImageMemorySwapchainInfoKHR const&VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2701     operator VkBindImageMemorySwapchainInfoKHR const &() const VULKAN_HPP_NOEXCEPT
2702     {
2703       return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHR*>( this );
2704     }
2705 
operator VkBindImageMemorySwapchainInfoKHR&VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2706     operator VkBindImageMemorySwapchainInfoKHR &() VULKAN_HPP_NOEXCEPT
2707     {
2708       return *reinterpret_cast<VkBindImageMemorySwapchainInfoKHR*>( this );
2709     }
2710 
2711 #if defined( VULKAN_HPP_USE_REFLECT )
2712 #if 14 <= VULKAN_HPP_CPP_VERSION
2713     auto
2714 #else
2715     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SwapchainKHR const &, uint32_t const &>
2716 #endif
reflectVULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2717       reflect() const VULKAN_HPP_NOEXCEPT
2718     {
2719       return std::tie( sType, pNext, swapchain, imageIndex );
2720     }
2721 #endif
2722 
2723 
2724 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2725 auto operator<=>( BindImageMemorySwapchainInfoKHR const & ) const = default;
2726 #else
operator ==VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2727     bool operator==( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2728     {
2729 #if defined( VULKAN_HPP_USE_REFLECT )
2730       return this->reflect() == rhs.reflect();
2731 #else
2732       return ( sType == rhs.sType )
2733           && ( pNext == rhs.pNext )
2734           && ( swapchain == rhs.swapchain )
2735           && ( imageIndex == rhs.imageIndex );
2736 #endif
2737     }
2738 
operator !=VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR2739     bool operator!=( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
2740     {
2741       return !operator==( rhs );
2742     }
2743 #endif
2744 
2745     public:
2746     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR;
2747     const void * pNext = {};
2748     VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {};
2749     uint32_t imageIndex = {};
2750 
2751   };
2752 
2753   template <>
2754   struct CppType<StructureType, StructureType::eBindImageMemorySwapchainInfoKHR>
2755   {
2756     using Type = BindImageMemorySwapchainInfoKHR;
2757   };
2758 
2759   struct BindImagePlaneMemoryInfo
2760   {
2761     using NativeType = VkBindImagePlaneMemoryInfo;
2762 
2763     static const bool allowDuplicate = false;
2764     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImagePlaneMemoryInfo;
2765 
2766 
2767 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BindImagePlaneMemoryInfoVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2768 VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo(VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
2769     : pNext( pNext_ ), planeAspect( planeAspect_ )
2770     {}
2771 
2772     VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2773 
BindImagePlaneMemoryInfoVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2774     BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
2775       : BindImagePlaneMemoryInfo( *reinterpret_cast<BindImagePlaneMemoryInfo const *>( &rhs ) )
2776     {}
2777 
2778 
2779     BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2780 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2781 
operator =VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2782     BindImagePlaneMemoryInfo & operator=( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT
2783     {
2784       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo const *>( &rhs );
2785       return *this;
2786     }
2787 
2788 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2789     VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
2790     {
2791       pNext = pNext_;
2792       return *this;
2793     }
2794 
setPlaneAspectVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2795     VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
2796     {
2797       planeAspect = planeAspect_;
2798       return *this;
2799     }
2800 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2801 
2802 
operator VkBindImagePlaneMemoryInfo const&VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2803     operator VkBindImagePlaneMemoryInfo const &() const VULKAN_HPP_NOEXCEPT
2804     {
2805       return *reinterpret_cast<const VkBindImagePlaneMemoryInfo*>( this );
2806     }
2807 
operator VkBindImagePlaneMemoryInfo&VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2808     operator VkBindImagePlaneMemoryInfo &() VULKAN_HPP_NOEXCEPT
2809     {
2810       return *reinterpret_cast<VkBindImagePlaneMemoryInfo*>( this );
2811     }
2812 
2813 #if defined( VULKAN_HPP_USE_REFLECT )
2814 #if 14 <= VULKAN_HPP_CPP_VERSION
2815     auto
2816 #else
2817     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
2818 #endif
reflectVULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2819       reflect() const VULKAN_HPP_NOEXCEPT
2820     {
2821       return std::tie( sType, pNext, planeAspect );
2822     }
2823 #endif
2824 
2825 
2826 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2827 auto operator<=>( BindImagePlaneMemoryInfo const & ) const = default;
2828 #else
operator ==VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2829     bool operator==( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2830     {
2831 #if defined( VULKAN_HPP_USE_REFLECT )
2832       return this->reflect() == rhs.reflect();
2833 #else
2834       return ( sType == rhs.sType )
2835           && ( pNext == rhs.pNext )
2836           && ( planeAspect == rhs.planeAspect );
2837 #endif
2838     }
2839 
operator !=VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo2840     bool operator!=( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
2841     {
2842       return !operator==( rhs );
2843     }
2844 #endif
2845 
2846     public:
2847     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImagePlaneMemoryInfo;
2848     const void * pNext = {};
2849     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
2850 
2851   };
2852 
2853   template <>
2854   struct CppType<StructureType, StructureType::eBindImagePlaneMemoryInfo>
2855   {
2856     using Type = BindImagePlaneMemoryInfo;
2857   };
2858   using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo;
2859 
2860   struct ImageSubresourceLayers
2861   {
2862     using NativeType = VkImageSubresourceLayers;
2863 
2864 
2865 
2866 
2867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceLayersVULKAN_HPP_NAMESPACE::ImageSubresourceLayers2868 VULKAN_HPP_CONSTEXPR ImageSubresourceLayers(VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, uint32_t mipLevel_ = {}, uint32_t baseArrayLayer_ = {}, uint32_t layerCount_ = {}) VULKAN_HPP_NOEXCEPT
2869     : aspectMask( aspectMask_ ), mipLevel( mipLevel_ ), baseArrayLayer( baseArrayLayer_ ), layerCount( layerCount_ )
2870     {}
2871 
2872     VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2873 
ImageSubresourceLayersVULKAN_HPP_NAMESPACE::ImageSubresourceLayers2874     ImageSubresourceLayers( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
2875       : ImageSubresourceLayers( *reinterpret_cast<ImageSubresourceLayers const *>( &rhs ) )
2876     {}
2877 
2878 
2879     ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2880 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2881 
operator =VULKAN_HPP_NAMESPACE::ImageSubresourceLayers2882     ImageSubresourceLayers & operator=( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT
2883     {
2884       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const *>( &rhs );
2885       return *this;
2886     }
2887 
2888 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresourceLayers2889     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
2890     {
2891       aspectMask = aspectMask_;
2892       return *this;
2893     }
2894 
setMipLevelVULKAN_HPP_NAMESPACE::ImageSubresourceLayers2895     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT
2896     {
2897       mipLevel = mipLevel_;
2898       return *this;
2899     }
2900 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresourceLayers2901     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
2902     {
2903       baseArrayLayer = baseArrayLayer_;
2904       return *this;
2905     }
2906 
setLayerCountVULKAN_HPP_NAMESPACE::ImageSubresourceLayers2907     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
2908     {
2909       layerCount = layerCount_;
2910       return *this;
2911     }
2912 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
2913 
2914 
operator VkImageSubresourceLayers const&VULKAN_HPP_NAMESPACE::ImageSubresourceLayers2915     operator VkImageSubresourceLayers const &() const VULKAN_HPP_NOEXCEPT
2916     {
2917       return *reinterpret_cast<const VkImageSubresourceLayers*>( this );
2918     }
2919 
operator VkImageSubresourceLayers&VULKAN_HPP_NAMESPACE::ImageSubresourceLayers2920     operator VkImageSubresourceLayers &() VULKAN_HPP_NOEXCEPT
2921     {
2922       return *reinterpret_cast<VkImageSubresourceLayers*>( this );
2923     }
2924 
2925 #if defined( VULKAN_HPP_USE_REFLECT )
2926 #if 14 <= VULKAN_HPP_CPP_VERSION
2927     auto
2928 #else
2929     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &, uint32_t const &>
2930 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresourceLayers2931       reflect() const VULKAN_HPP_NOEXCEPT
2932     {
2933       return std::tie( aspectMask, mipLevel, baseArrayLayer, layerCount );
2934     }
2935 #endif
2936 
2937 
2938 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
2939 auto operator<=>( ImageSubresourceLayers const & ) const = default;
2940 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresourceLayers2941     bool operator==( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT
2942     {
2943 #if defined( VULKAN_HPP_USE_REFLECT )
2944       return this->reflect() == rhs.reflect();
2945 #else
2946       return ( aspectMask == rhs.aspectMask )
2947           && ( mipLevel == rhs.mipLevel )
2948           && ( baseArrayLayer == rhs.baseArrayLayer )
2949           && ( layerCount == rhs.layerCount );
2950 #endif
2951     }
2952 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresourceLayers2953     bool operator!=( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT
2954     {
2955       return !operator==( rhs );
2956     }
2957 #endif
2958 
2959     public:
2960     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
2961     uint32_t mipLevel = {};
2962     uint32_t baseArrayLayer = {};
2963     uint32_t layerCount = {};
2964 
2965   };
2966 
2967   struct Offset3D
2968   {
2969     using NativeType = VkOffset3D;
2970 
2971 
2972 
2973 
2974 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Offset3DVULKAN_HPP_NAMESPACE::Offset3D2975 VULKAN_HPP_CONSTEXPR Offset3D(int32_t x_ = {}, int32_t y_ = {}, int32_t z_ = {}) VULKAN_HPP_NOEXCEPT
2976     : x( x_ ), y( y_ ), z( z_ )
2977     {}
2978 
2979     VULKAN_HPP_CONSTEXPR Offset3D( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2980 
Offset3DVULKAN_HPP_NAMESPACE::Offset3D2981     Offset3D( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT
2982       : Offset3D( *reinterpret_cast<Offset3D const *>( &rhs ) )
2983     {}
2984 
2985 
Offset3DVULKAN_HPP_NAMESPACE::Offset3D2986     explicit Offset3D( Offset2D const & offset2D, int32_t z_ = {} )
2987       : x( offset2D.x )
2988       , y( offset2D.y )
2989     , z( z_ )
2990     {}
2991 
2992     Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
2993 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
2994 
operator =VULKAN_HPP_NAMESPACE::Offset3D2995     Offset3D & operator=( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT
2996     {
2997       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Offset3D const *>( &rhs );
2998       return *this;
2999     }
3000 
3001 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Offset3D3002     VULKAN_HPP_CONSTEXPR_14 Offset3D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT
3003     {
3004       x = x_;
3005       return *this;
3006     }
3007 
setYVULKAN_HPP_NAMESPACE::Offset3D3008     VULKAN_HPP_CONSTEXPR_14 Offset3D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT
3009     {
3010       y = y_;
3011       return *this;
3012     }
3013 
setZVULKAN_HPP_NAMESPACE::Offset3D3014     VULKAN_HPP_CONSTEXPR_14 Offset3D & setZ( int32_t z_ ) VULKAN_HPP_NOEXCEPT
3015     {
3016       z = z_;
3017       return *this;
3018     }
3019 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3020 
3021 
operator VkOffset3D const&VULKAN_HPP_NAMESPACE::Offset3D3022     operator VkOffset3D const &() const VULKAN_HPP_NOEXCEPT
3023     {
3024       return *reinterpret_cast<const VkOffset3D*>( this );
3025     }
3026 
operator VkOffset3D&VULKAN_HPP_NAMESPACE::Offset3D3027     operator VkOffset3D &() VULKAN_HPP_NOEXCEPT
3028     {
3029       return *reinterpret_cast<VkOffset3D*>( this );
3030     }
3031 
3032 #if defined( VULKAN_HPP_USE_REFLECT )
3033 #if 14 <= VULKAN_HPP_CPP_VERSION
3034     auto
3035 #else
3036     std::tuple<int32_t const &, int32_t const &, int32_t const &>
3037 #endif
reflectVULKAN_HPP_NAMESPACE::Offset3D3038       reflect() const VULKAN_HPP_NOEXCEPT
3039     {
3040       return std::tie( x, y, z );
3041     }
3042 #endif
3043 
3044 
3045 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
3046 auto operator<=>( Offset3D const & ) const = default;
3047 #else
operator ==VULKAN_HPP_NAMESPACE::Offset3D3048     bool operator==( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT
3049     {
3050 #if defined( VULKAN_HPP_USE_REFLECT )
3051       return this->reflect() == rhs.reflect();
3052 #else
3053       return ( x == rhs.x )
3054           && ( y == rhs.y )
3055           && ( z == rhs.z );
3056 #endif
3057     }
3058 
operator !=VULKAN_HPP_NAMESPACE::Offset3D3059     bool operator!=( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT
3060     {
3061       return !operator==( rhs );
3062     }
3063 #endif
3064 
3065     public:
3066     int32_t x = {};
3067     int32_t y = {};
3068     int32_t z = {};
3069 
3070   };
3071 
3072   struct ImageBlit2
3073   {
3074     using NativeType = VkImageBlit2;
3075 
3076     static const bool allowDuplicate = false;
3077     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageBlit2;
3078 
3079 
3080 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageBlit2VULKAN_HPP_NAMESPACE::ImageBlit23081 VULKAN_HPP_CONSTEXPR_14 ImageBlit2(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, std::array<VULKAN_HPP_NAMESPACE::Offset3D,2> const & srcOffsets_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, std::array<VULKAN_HPP_NAMESPACE::Offset3D,2> const & dstOffsets_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
3082     : pNext( pNext_ ), srcSubresource( srcSubresource_ ), srcOffsets( srcOffsets_ ), dstSubresource( dstSubresource_ ), dstOffsets( dstOffsets_ )
3083     {}
3084 
3085     VULKAN_HPP_CONSTEXPR_14 ImageBlit2( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3086 
ImageBlit2VULKAN_HPP_NAMESPACE::ImageBlit23087     ImageBlit2( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT
3088       : ImageBlit2( *reinterpret_cast<ImageBlit2 const *>( &rhs ) )
3089     {}
3090 
3091 
3092     ImageBlit2 & operator=( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3093 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3094 
operator =VULKAN_HPP_NAMESPACE::ImageBlit23095     ImageBlit2 & operator=( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT
3096     {
3097       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit2 const *>( &rhs );
3098       return *this;
3099     }
3100 
3101 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageBlit23102     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
3103     {
3104       pNext = pNext_;
3105       return *this;
3106     }
3107 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageBlit23108     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
3109     {
3110       srcSubresource = srcSubresource_;
3111       return *this;
3112     }
3113 
setSrcOffsetsVULKAN_HPP_NAMESPACE::ImageBlit23114     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setSrcOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D,2> const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT
3115     {
3116       srcOffsets = srcOffsets_;
3117       return *this;
3118     }
3119 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageBlit23120     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
3121     {
3122       dstSubresource = dstSubresource_;
3123       return *this;
3124     }
3125 
setDstOffsetsVULKAN_HPP_NAMESPACE::ImageBlit23126     VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setDstOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D,2> const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT
3127     {
3128       dstOffsets = dstOffsets_;
3129       return *this;
3130     }
3131 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3132 
3133 
operator VkImageBlit2 const&VULKAN_HPP_NAMESPACE::ImageBlit23134     operator VkImageBlit2 const &() const VULKAN_HPP_NOEXCEPT
3135     {
3136       return *reinterpret_cast<const VkImageBlit2*>( this );
3137     }
3138 
operator VkImageBlit2&VULKAN_HPP_NAMESPACE::ImageBlit23139     operator VkImageBlit2 &() VULKAN_HPP_NOEXCEPT
3140     {
3141       return *reinterpret_cast<VkImageBlit2*>( this );
3142     }
3143 
3144 #if defined( VULKAN_HPP_USE_REFLECT )
3145 #if 14 <= VULKAN_HPP_CPP_VERSION
3146     auto
3147 #else
3148     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &>
3149 #endif
reflectVULKAN_HPP_NAMESPACE::ImageBlit23150       reflect() const VULKAN_HPP_NOEXCEPT
3151     {
3152       return std::tie( sType, pNext, srcSubresource, srcOffsets, dstSubresource, dstOffsets );
3153     }
3154 #endif
3155 
3156 
3157 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
3158 auto operator<=>( ImageBlit2 const & ) const = default;
3159 #else
operator ==VULKAN_HPP_NAMESPACE::ImageBlit23160     bool operator==( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT
3161     {
3162 #if defined( VULKAN_HPP_USE_REFLECT )
3163       return this->reflect() == rhs.reflect();
3164 #else
3165       return ( sType == rhs.sType )
3166           && ( pNext == rhs.pNext )
3167           && ( srcSubresource == rhs.srcSubresource )
3168           && ( srcOffsets == rhs.srcOffsets )
3169           && ( dstSubresource == rhs.dstSubresource )
3170           && ( dstOffsets == rhs.dstOffsets );
3171 #endif
3172     }
3173 
operator !=VULKAN_HPP_NAMESPACE::ImageBlit23174     bool operator!=( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT
3175     {
3176       return !operator==( rhs );
3177     }
3178 #endif
3179 
3180     public:
3181     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageBlit2;
3182     const void * pNext = {};
3183     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
3184     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets = {};
3185     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
3186     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> dstOffsets = {};
3187 
3188   };
3189 
3190   template <>
3191   struct CppType<StructureType, StructureType::eImageBlit2>
3192   {
3193     using Type = ImageBlit2;
3194   };
3195   using ImageBlit2KHR = ImageBlit2;
3196 
3197   struct BlitImageInfo2
3198   {
3199     using NativeType = VkBlitImageInfo2;
3200 
3201     static const bool allowDuplicate = false;
3202     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBlitImageInfo2;
3203 
3204 
3205 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo23206 VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2(VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions_ = {}, VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
3207     : pNext( pNext_ ), srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( regionCount_ ), pRegions( pRegions_ ), filter( filter_ )
3208     {}
3209 
3210     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3211 
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo23212     BlitImageInfo2( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
3213       : BlitImageInfo2( *reinterpret_cast<BlitImageInfo2 const *>( &rhs ) )
3214     {}
3215 
3216 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BlitImageInfo2VULKAN_HPP_NAMESPACE::BlitImageInfo23217     BlitImageInfo2( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2> const & regions_, VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, const void * pNext_ = nullptr )
3218     : pNext( pNext_ ), srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() ), filter( filter_ )
3219     {}
3220 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3221 
3222 
3223     BlitImageInfo2 & operator=( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3224 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3225 
operator =VULKAN_HPP_NAMESPACE::BlitImageInfo23226     BlitImageInfo2 & operator=( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
3227     {
3228       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BlitImageInfo2 const *>( &rhs );
3229       return *this;
3230     }
3231 
3232 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BlitImageInfo23233     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
3234     {
3235       pNext = pNext_;
3236       return *this;
3237     }
3238 
setSrcImageVULKAN_HPP_NAMESPACE::BlitImageInfo23239     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
3240     {
3241       srcImage = srcImage_;
3242       return *this;
3243     }
3244 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::BlitImageInfo23245     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
3246     {
3247       srcImageLayout = srcImageLayout_;
3248       return *this;
3249     }
3250 
setDstImageVULKAN_HPP_NAMESPACE::BlitImageInfo23251     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
3252     {
3253       dstImage = dstImage_;
3254       return *this;
3255     }
3256 
setDstImageLayoutVULKAN_HPP_NAMESPACE::BlitImageInfo23257     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
3258     {
3259       dstImageLayout = dstImageLayout_;
3260       return *this;
3261     }
3262 
setRegionCountVULKAN_HPP_NAMESPACE::BlitImageInfo23263     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
3264     {
3265       regionCount = regionCount_;
3266       return *this;
3267     }
3268 
setPRegionsVULKAN_HPP_NAMESPACE::BlitImageInfo23269     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
3270     {
3271       pRegions = pRegions_;
3272       return *this;
3273     }
3274 
3275 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::BlitImageInfo23276     BlitImageInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageBlit2> const & regions_ ) VULKAN_HPP_NOEXCEPT
3277     {
3278       regionCount = static_cast<uint32_t>( regions_.size() );
3279       pRegions = regions_.data();
3280       return *this;
3281     }
3282 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3283 
setFilterVULKAN_HPP_NAMESPACE::BlitImageInfo23284     VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setFilter( VULKAN_HPP_NAMESPACE::Filter filter_ ) VULKAN_HPP_NOEXCEPT
3285     {
3286       filter = filter_;
3287       return *this;
3288     }
3289 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3290 
3291 
operator VkBlitImageInfo2 const&VULKAN_HPP_NAMESPACE::BlitImageInfo23292     operator VkBlitImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
3293     {
3294       return *reinterpret_cast<const VkBlitImageInfo2*>( this );
3295     }
3296 
operator VkBlitImageInfo2&VULKAN_HPP_NAMESPACE::BlitImageInfo23297     operator VkBlitImageInfo2 &() VULKAN_HPP_NOEXCEPT
3298     {
3299       return *reinterpret_cast<VkBlitImageInfo2*>( this );
3300     }
3301 
3302 #if defined( VULKAN_HPP_USE_REFLECT )
3303 #if 14 <= VULKAN_HPP_CPP_VERSION
3304     auto
3305 #else
3306     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ImageBlit2 * const &, VULKAN_HPP_NAMESPACE::Filter const &>
3307 #endif
reflectVULKAN_HPP_NAMESPACE::BlitImageInfo23308       reflect() const VULKAN_HPP_NOEXCEPT
3309     {
3310       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter );
3311     }
3312 #endif
3313 
3314 
3315 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
3316 auto operator<=>( BlitImageInfo2 const & ) const = default;
3317 #else
operator ==VULKAN_HPP_NAMESPACE::BlitImageInfo23318     bool operator==( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
3319     {
3320 #if defined( VULKAN_HPP_USE_REFLECT )
3321       return this->reflect() == rhs.reflect();
3322 #else
3323       return ( sType == rhs.sType )
3324           && ( pNext == rhs.pNext )
3325           && ( srcImage == rhs.srcImage )
3326           && ( srcImageLayout == rhs.srcImageLayout )
3327           && ( dstImage == rhs.dstImage )
3328           && ( dstImageLayout == rhs.dstImageLayout )
3329           && ( regionCount == rhs.regionCount )
3330           && ( pRegions == rhs.pRegions )
3331           && ( filter == rhs.filter );
3332 #endif
3333     }
3334 
operator !=VULKAN_HPP_NAMESPACE::BlitImageInfo23335     bool operator!=( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
3336     {
3337       return !operator==( rhs );
3338     }
3339 #endif
3340 
3341     public:
3342     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBlitImageInfo2;
3343     const void * pNext = {};
3344     VULKAN_HPP_NAMESPACE::Image srcImage = {};
3345     VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
3346     VULKAN_HPP_NAMESPACE::Image dstImage = {};
3347     VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
3348     uint32_t regionCount = {};
3349     const VULKAN_HPP_NAMESPACE::ImageBlit2 * pRegions = {};
3350     VULKAN_HPP_NAMESPACE::Filter filter = VULKAN_HPP_NAMESPACE::Filter::eNearest;
3351 
3352   };
3353 
3354   template <>
3355   struct CppType<StructureType, StructureType::eBlitImageInfo2>
3356   {
3357     using Type = BlitImageInfo2;
3358   };
3359   using BlitImageInfo2KHR = BlitImageInfo2;
3360 
3361   struct BufferCopy
3362   {
3363     using NativeType = VkBufferCopy;
3364 
3365 
3366 
3367 
3368 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCopyVULKAN_HPP_NAMESPACE::BufferCopy3369 VULKAN_HPP_CONSTEXPR BufferCopy(VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}) VULKAN_HPP_NOEXCEPT
3370     : srcOffset( srcOffset_ ), dstOffset( dstOffset_ ), size( size_ )
3371     {}
3372 
3373     VULKAN_HPP_CONSTEXPR BufferCopy( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3374 
BufferCopyVULKAN_HPP_NAMESPACE::BufferCopy3375     BufferCopy( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
3376       : BufferCopy( *reinterpret_cast<BufferCopy const *>( &rhs ) )
3377     {}
3378 
3379 
3380     BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3381 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3382 
operator =VULKAN_HPP_NAMESPACE::BufferCopy3383     BufferCopy & operator=( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT
3384     {
3385       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy const *>( &rhs );
3386       return *this;
3387     }
3388 
3389 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcOffsetVULKAN_HPP_NAMESPACE::BufferCopy3390     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
3391     {
3392       srcOffset = srcOffset_;
3393       return *this;
3394     }
3395 
setDstOffsetVULKAN_HPP_NAMESPACE::BufferCopy3396     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT
3397     {
3398       dstOffset = dstOffset_;
3399       return *this;
3400     }
3401 
setSizeVULKAN_HPP_NAMESPACE::BufferCopy3402     VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
3403     {
3404       size = size_;
3405       return *this;
3406     }
3407 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3408 
3409 
operator VkBufferCopy const&VULKAN_HPP_NAMESPACE::BufferCopy3410     operator VkBufferCopy const &() const VULKAN_HPP_NOEXCEPT
3411     {
3412       return *reinterpret_cast<const VkBufferCopy*>( this );
3413     }
3414 
operator VkBufferCopy&VULKAN_HPP_NAMESPACE::BufferCopy3415     operator VkBufferCopy &() VULKAN_HPP_NOEXCEPT
3416     {
3417       return *reinterpret_cast<VkBufferCopy*>( this );
3418     }
3419 
3420 #if defined( VULKAN_HPP_USE_REFLECT )
3421 #if 14 <= VULKAN_HPP_CPP_VERSION
3422     auto
3423 #else
3424     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
3425 #endif
reflectVULKAN_HPP_NAMESPACE::BufferCopy3426       reflect() const VULKAN_HPP_NOEXCEPT
3427     {
3428       return std::tie( srcOffset, dstOffset, size );
3429     }
3430 #endif
3431 
3432 
3433 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
3434 auto operator<=>( BufferCopy const & ) const = default;
3435 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCopy3436     bool operator==( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
3437     {
3438 #if defined( VULKAN_HPP_USE_REFLECT )
3439       return this->reflect() == rhs.reflect();
3440 #else
3441       return ( srcOffset == rhs.srcOffset )
3442           && ( dstOffset == rhs.dstOffset )
3443           && ( size == rhs.size );
3444 #endif
3445     }
3446 
operator !=VULKAN_HPP_NAMESPACE::BufferCopy3447     bool operator!=( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
3448     {
3449       return !operator==( rhs );
3450     }
3451 #endif
3452 
3453     public:
3454     VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {};
3455     VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {};
3456     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
3457 
3458   };
3459 
3460   struct BufferCopy2
3461   {
3462     using NativeType = VkBufferCopy2;
3463 
3464     static const bool allowDuplicate = false;
3465     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCopy2;
3466 
3467 
3468 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCopy2VULKAN_HPP_NAMESPACE::BufferCopy23469 VULKAN_HPP_CONSTEXPR BufferCopy2(VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
3470     : pNext( pNext_ ), srcOffset( srcOffset_ ), dstOffset( dstOffset_ ), size( size_ )
3471     {}
3472 
3473     VULKAN_HPP_CONSTEXPR BufferCopy2( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3474 
BufferCopy2VULKAN_HPP_NAMESPACE::BufferCopy23475     BufferCopy2( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
3476       : BufferCopy2( *reinterpret_cast<BufferCopy2 const *>( &rhs ) )
3477     {}
3478 
3479 
3480     BufferCopy2 & operator=( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3481 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3482 
operator =VULKAN_HPP_NAMESPACE::BufferCopy23483     BufferCopy2 & operator=( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
3484     {
3485       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCopy2 const *>( &rhs );
3486       return *this;
3487     }
3488 
3489 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCopy23490     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
3491     {
3492       pNext = pNext_;
3493       return *this;
3494     }
3495 
setSrcOffsetVULKAN_HPP_NAMESPACE::BufferCopy23496     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT
3497     {
3498       srcOffset = srcOffset_;
3499       return *this;
3500     }
3501 
setDstOffsetVULKAN_HPP_NAMESPACE::BufferCopy23502     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT
3503     {
3504       dstOffset = dstOffset_;
3505       return *this;
3506     }
3507 
setSizeVULKAN_HPP_NAMESPACE::BufferCopy23508     VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
3509     {
3510       size = size_;
3511       return *this;
3512     }
3513 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3514 
3515 
operator VkBufferCopy2 const&VULKAN_HPP_NAMESPACE::BufferCopy23516     operator VkBufferCopy2 const &() const VULKAN_HPP_NOEXCEPT
3517     {
3518       return *reinterpret_cast<const VkBufferCopy2*>( this );
3519     }
3520 
operator VkBufferCopy2&VULKAN_HPP_NAMESPACE::BufferCopy23521     operator VkBufferCopy2 &() VULKAN_HPP_NOEXCEPT
3522     {
3523       return *reinterpret_cast<VkBufferCopy2*>( this );
3524     }
3525 
3526 #if defined( VULKAN_HPP_USE_REFLECT )
3527 #if 14 <= VULKAN_HPP_CPP_VERSION
3528     auto
3529 #else
3530     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
3531 #endif
reflectVULKAN_HPP_NAMESPACE::BufferCopy23532       reflect() const VULKAN_HPP_NOEXCEPT
3533     {
3534       return std::tie( sType, pNext, srcOffset, dstOffset, size );
3535     }
3536 #endif
3537 
3538 
3539 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
3540 auto operator<=>( BufferCopy2 const & ) const = default;
3541 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCopy23542     bool operator==( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
3543     {
3544 #if defined( VULKAN_HPP_USE_REFLECT )
3545       return this->reflect() == rhs.reflect();
3546 #else
3547       return ( sType == rhs.sType )
3548           && ( pNext == rhs.pNext )
3549           && ( srcOffset == rhs.srcOffset )
3550           && ( dstOffset == rhs.dstOffset )
3551           && ( size == rhs.size );
3552 #endif
3553     }
3554 
operator !=VULKAN_HPP_NAMESPACE::BufferCopy23555     bool operator!=( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
3556     {
3557       return !operator==( rhs );
3558     }
3559 #endif
3560 
3561     public:
3562     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCopy2;
3563     const void * pNext = {};
3564     VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {};
3565     VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {};
3566     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
3567 
3568   };
3569 
3570   template <>
3571   struct CppType<StructureType, StructureType::eBufferCopy2>
3572   {
3573     using Type = BufferCopy2;
3574   };
3575   using BufferCopy2KHR = BufferCopy2;
3576 
3577   struct BufferCreateInfo
3578   {
3579     using NativeType = VkBufferCreateInfo;
3580 
3581     static const bool allowDuplicate = false;
3582     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCreateInfo;
3583 
3584 
3585 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo3586 VULKAN_HPP_CONSTEXPR BufferCreateInfo(VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = {}, const uint32_t * pQueueFamilyIndices_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
3587     : pNext( pNext_ ), flags( flags_ ), size( size_ ), usage( usage_ ), sharingMode( sharingMode_ ), queueFamilyIndexCount( queueFamilyIndexCount_ ), pQueueFamilyIndices( pQueueFamilyIndices_ )
3588     {}
3589 
3590     VULKAN_HPP_CONSTEXPR BufferCreateInfo( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3591 
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo3592     BufferCreateInfo( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
3593       : BufferCreateInfo( *reinterpret_cast<BufferCreateInfo const *>( &rhs ) )
3594     {}
3595 
3596 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
BufferCreateInfoVULKAN_HPP_NAMESPACE::BufferCreateInfo3597     BufferCreateInfo( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_, VULKAN_HPP_NAMESPACE::DeviceSize size_, VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_, const void * pNext_ = nullptr )
3598     : pNext( pNext_ ), flags( flags_ ), size( size_ ), usage( usage_ ), sharingMode( sharingMode_ ), queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) ), pQueueFamilyIndices( queueFamilyIndices_.data() )
3599     {}
3600 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3601 
3602 
3603     BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3604 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3605 
operator =VULKAN_HPP_NAMESPACE::BufferCreateInfo3606     BufferCreateInfo & operator=( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
3607     {
3608       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferCreateInfo const *>( &rhs );
3609       return *this;
3610     }
3611 
3612 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferCreateInfo3613     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
3614     {
3615       pNext = pNext_;
3616       return *this;
3617     }
3618 
setFlagsVULKAN_HPP_NAMESPACE::BufferCreateInfo3619     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
3620     {
3621       flags = flags_;
3622       return *this;
3623     }
3624 
setSizeVULKAN_HPP_NAMESPACE::BufferCreateInfo3625     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
3626     {
3627       size = size_;
3628       return *this;
3629     }
3630 
setUsageVULKAN_HPP_NAMESPACE::BufferCreateInfo3631     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
3632     {
3633       usage = usage_;
3634       return *this;
3635     }
3636 
setSharingModeVULKAN_HPP_NAMESPACE::BufferCreateInfo3637     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
3638     {
3639       sharingMode = sharingMode_;
3640       return *this;
3641     }
3642 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::BufferCreateInfo3643     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
3644     {
3645       queueFamilyIndexCount = queueFamilyIndexCount_;
3646       return *this;
3647     }
3648 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::BufferCreateInfo3649     VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
3650     {
3651       pQueueFamilyIndices = pQueueFamilyIndices_;
3652       return *this;
3653     }
3654 
3655 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::BufferCreateInfo3656     BufferCreateInfo & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
3657     {
3658       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
3659       pQueueFamilyIndices = queueFamilyIndices_.data();
3660       return *this;
3661     }
3662 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
3663 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3664 
3665 
operator VkBufferCreateInfo const&VULKAN_HPP_NAMESPACE::BufferCreateInfo3666     operator VkBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
3667     {
3668       return *reinterpret_cast<const VkBufferCreateInfo*>( this );
3669     }
3670 
operator VkBufferCreateInfo&VULKAN_HPP_NAMESPACE::BufferCreateInfo3671     operator VkBufferCreateInfo &() VULKAN_HPP_NOEXCEPT
3672     {
3673       return *reinterpret_cast<VkBufferCreateInfo*>( this );
3674     }
3675 
3676 #if defined( VULKAN_HPP_USE_REFLECT )
3677 #if 14 <= VULKAN_HPP_CPP_VERSION
3678     auto
3679 #else
3680     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferCreateFlags const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::BufferUsageFlags const &, VULKAN_HPP_NAMESPACE::SharingMode const &, uint32_t const &, const uint32_t * const &>
3681 #endif
reflectVULKAN_HPP_NAMESPACE::BufferCreateInfo3682       reflect() const VULKAN_HPP_NOEXCEPT
3683     {
3684       return std::tie( sType, pNext, flags, size, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices );
3685     }
3686 #endif
3687 
3688 
3689 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
3690 auto operator<=>( BufferCreateInfo const & ) const = default;
3691 #else
operator ==VULKAN_HPP_NAMESPACE::BufferCreateInfo3692     bool operator==( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
3693     {
3694 #if defined( VULKAN_HPP_USE_REFLECT )
3695       return this->reflect() == rhs.reflect();
3696 #else
3697       return ( sType == rhs.sType )
3698           && ( pNext == rhs.pNext )
3699           && ( flags == rhs.flags )
3700           && ( size == rhs.size )
3701           && ( usage == rhs.usage )
3702           && ( sharingMode == rhs.sharingMode )
3703           && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
3704           && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
3705 #endif
3706     }
3707 
operator !=VULKAN_HPP_NAMESPACE::BufferCreateInfo3708     bool operator!=( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
3709     {
3710       return !operator==( rhs );
3711     }
3712 #endif
3713 
3714     public:
3715     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCreateInfo;
3716     const void * pNext = {};
3717     VULKAN_HPP_NAMESPACE::BufferCreateFlags flags = {};
3718     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
3719     VULKAN_HPP_NAMESPACE::BufferUsageFlags usage = {};
3720     VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
3721     uint32_t queueFamilyIndexCount = {};
3722     const uint32_t * pQueueFamilyIndices = {};
3723 
3724   };
3725 
3726   template <>
3727   struct CppType<StructureType, StructureType::eBufferCreateInfo>
3728   {
3729     using Type = BufferCreateInfo;
3730   };
3731 
3732   struct BufferDeviceAddressInfo
3733   {
3734     using NativeType = VkBufferDeviceAddressInfo;
3735 
3736     static const bool allowDuplicate = false;
3737     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferDeviceAddressInfo;
3738 
3739 
3740 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferDeviceAddressInfoVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3741 VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
3742     : pNext( pNext_ ), buffer( buffer_ )
3743     {}
3744 
3745     VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3746 
BufferDeviceAddressInfoVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3747     BufferDeviceAddressInfo( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
3748       : BufferDeviceAddressInfo( *reinterpret_cast<BufferDeviceAddressInfo const *>( &rhs ) )
3749     {}
3750 
3751 
3752     BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3753 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3754 
operator =VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3755     BufferDeviceAddressInfo & operator=( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
3756     {
3757       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo const *>( &rhs );
3758       return *this;
3759     }
3760 
3761 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3762     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
3763     {
3764       pNext = pNext_;
3765       return *this;
3766     }
3767 
setBufferVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3768     VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
3769     {
3770       buffer = buffer_;
3771       return *this;
3772     }
3773 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3774 
3775 
operator VkBufferDeviceAddressInfo const&VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3776     operator VkBufferDeviceAddressInfo const &() const VULKAN_HPP_NOEXCEPT
3777     {
3778       return *reinterpret_cast<const VkBufferDeviceAddressInfo*>( this );
3779     }
3780 
operator VkBufferDeviceAddressInfo&VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3781     operator VkBufferDeviceAddressInfo &() VULKAN_HPP_NOEXCEPT
3782     {
3783       return *reinterpret_cast<VkBufferDeviceAddressInfo*>( this );
3784     }
3785 
3786 #if defined( VULKAN_HPP_USE_REFLECT )
3787 #if 14 <= VULKAN_HPP_CPP_VERSION
3788     auto
3789 #else
3790     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
3791 #endif
reflectVULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3792       reflect() const VULKAN_HPP_NOEXCEPT
3793     {
3794       return std::tie( sType, pNext, buffer );
3795     }
3796 #endif
3797 
3798 
3799 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
3800 auto operator<=>( BufferDeviceAddressInfo const & ) const = default;
3801 #else
operator ==VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3802     bool operator==( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
3803     {
3804 #if defined( VULKAN_HPP_USE_REFLECT )
3805       return this->reflect() == rhs.reflect();
3806 #else
3807       return ( sType == rhs.sType )
3808           && ( pNext == rhs.pNext )
3809           && ( buffer == rhs.buffer );
3810 #endif
3811     }
3812 
operator !=VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo3813     bool operator!=( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
3814     {
3815       return !operator==( rhs );
3816     }
3817 #endif
3818 
3819     public:
3820     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressInfo;
3821     const void * pNext = {};
3822     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
3823 
3824   };
3825 
3826   template <>
3827   struct CppType<StructureType, StructureType::eBufferDeviceAddressInfo>
3828   {
3829     using Type = BufferDeviceAddressInfo;
3830   };
3831   using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo;
3832   using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo;
3833 
3834   struct Extent3D
3835   {
3836     using NativeType = VkExtent3D;
3837 
3838 
3839 
3840 
3841 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
Extent3DVULKAN_HPP_NAMESPACE::Extent3D3842 VULKAN_HPP_CONSTEXPR Extent3D(uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {}) VULKAN_HPP_NOEXCEPT
3843     : width( width_ ), height( height_ ), depth( depth_ )
3844     {}
3845 
3846     VULKAN_HPP_CONSTEXPR Extent3D( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3847 
Extent3DVULKAN_HPP_NAMESPACE::Extent3D3848     Extent3D( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT
3849       : Extent3D( *reinterpret_cast<Extent3D const *>( &rhs ) )
3850     {}
3851 
3852 
Extent3DVULKAN_HPP_NAMESPACE::Extent3D3853     explicit Extent3D( Extent2D const & extent2D, uint32_t depth_ = {} )
3854       : width( extent2D.width )
3855       , height( extent2D.height )
3856     , depth( depth_ )
3857     {}
3858 
3859     Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3860 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3861 
operator =VULKAN_HPP_NAMESPACE::Extent3D3862     Extent3D & operator=( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT
3863     {
3864       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Extent3D const *>( &rhs );
3865       return *this;
3866     }
3867 
3868 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setWidthVULKAN_HPP_NAMESPACE::Extent3D3869     VULKAN_HPP_CONSTEXPR_14 Extent3D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
3870     {
3871       width = width_;
3872       return *this;
3873     }
3874 
setHeightVULKAN_HPP_NAMESPACE::Extent3D3875     VULKAN_HPP_CONSTEXPR_14 Extent3D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
3876     {
3877       height = height_;
3878       return *this;
3879     }
3880 
setDepthVULKAN_HPP_NAMESPACE::Extent3D3881     VULKAN_HPP_CONSTEXPR_14 Extent3D & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT
3882     {
3883       depth = depth_;
3884       return *this;
3885     }
3886 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
3887 
3888 
operator VkExtent3D const&VULKAN_HPP_NAMESPACE::Extent3D3889     operator VkExtent3D const &() const VULKAN_HPP_NOEXCEPT
3890     {
3891       return *reinterpret_cast<const VkExtent3D*>( this );
3892     }
3893 
operator VkExtent3D&VULKAN_HPP_NAMESPACE::Extent3D3894     operator VkExtent3D &() VULKAN_HPP_NOEXCEPT
3895     {
3896       return *reinterpret_cast<VkExtent3D*>( this );
3897     }
3898 
3899 #if defined( VULKAN_HPP_USE_REFLECT )
3900 #if 14 <= VULKAN_HPP_CPP_VERSION
3901     auto
3902 #else
3903     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
3904 #endif
reflectVULKAN_HPP_NAMESPACE::Extent3D3905       reflect() const VULKAN_HPP_NOEXCEPT
3906     {
3907       return std::tie( width, height, depth );
3908     }
3909 #endif
3910 
3911 
3912 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
3913 auto operator<=>( Extent3D const & ) const = default;
3914 #else
operator ==VULKAN_HPP_NAMESPACE::Extent3D3915     bool operator==( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT
3916     {
3917 #if defined( VULKAN_HPP_USE_REFLECT )
3918       return this->reflect() == rhs.reflect();
3919 #else
3920       return ( width == rhs.width )
3921           && ( height == rhs.height )
3922           && ( depth == rhs.depth );
3923 #endif
3924     }
3925 
operator !=VULKAN_HPP_NAMESPACE::Extent3D3926     bool operator!=( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT
3927     {
3928       return !operator==( rhs );
3929     }
3930 #endif
3931 
3932     public:
3933     uint32_t width = {};
3934     uint32_t height = {};
3935     uint32_t depth = {};
3936 
3937   };
3938 
3939   struct BufferImageCopy
3940   {
3941     using NativeType = VkBufferImageCopy;
3942 
3943 
3944 
3945 
3946 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferImageCopyVULKAN_HPP_NAMESPACE::BufferImageCopy3947 VULKAN_HPP_CONSTEXPR BufferImageCopy(VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ = {}, uint32_t bufferRowLength_ = {}, uint32_t bufferImageHeight_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D imageOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D imageExtent_ = {}) VULKAN_HPP_NOEXCEPT
3948     : bufferOffset( bufferOffset_ ), bufferRowLength( bufferRowLength_ ), bufferImageHeight( bufferImageHeight_ ), imageSubresource( imageSubresource_ ), imageOffset( imageOffset_ ), imageExtent( imageExtent_ )
3949     {}
3950 
3951     VULKAN_HPP_CONSTEXPR BufferImageCopy( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3952 
BufferImageCopyVULKAN_HPP_NAMESPACE::BufferImageCopy3953     BufferImageCopy( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
3954       : BufferImageCopy( *reinterpret_cast<BufferImageCopy const *>( &rhs ) )
3955     {}
3956 
3957 
3958     BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
3959 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
3960 
operator =VULKAN_HPP_NAMESPACE::BufferImageCopy3961     BufferImageCopy & operator=( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
3962     {
3963       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy const *>( &rhs );
3964       return *this;
3965     }
3966 
3967 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy3968     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
3969     {
3970       bufferOffset = bufferOffset_;
3971       return *this;
3972     }
3973 
setBufferRowLengthVULKAN_HPP_NAMESPACE::BufferImageCopy3974     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
3975     {
3976       bufferRowLength = bufferRowLength_;
3977       return *this;
3978     }
3979 
setBufferImageHeightVULKAN_HPP_NAMESPACE::BufferImageCopy3980     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
3981     {
3982       bufferImageHeight = bufferImageHeight_;
3983       return *this;
3984     }
3985 
setImageSubresourceVULKAN_HPP_NAMESPACE::BufferImageCopy3986     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
3987     {
3988       imageSubresource = imageSubresource_;
3989       return *this;
3990     }
3991 
setImageOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy3992     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
3993     {
3994       imageOffset = imageOffset_;
3995       return *this;
3996     }
3997 
setImageExtentVULKAN_HPP_NAMESPACE::BufferImageCopy3998     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
3999     {
4000       imageExtent = imageExtent_;
4001       return *this;
4002     }
4003 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4004 
4005 
operator VkBufferImageCopy const&VULKAN_HPP_NAMESPACE::BufferImageCopy4006     operator VkBufferImageCopy const &() const VULKAN_HPP_NOEXCEPT
4007     {
4008       return *reinterpret_cast<const VkBufferImageCopy*>( this );
4009     }
4010 
operator VkBufferImageCopy&VULKAN_HPP_NAMESPACE::BufferImageCopy4011     operator VkBufferImageCopy &() VULKAN_HPP_NOEXCEPT
4012     {
4013       return *reinterpret_cast<VkBufferImageCopy*>( this );
4014     }
4015 
4016 #if defined( VULKAN_HPP_USE_REFLECT )
4017 #if 14 <= VULKAN_HPP_CPP_VERSION
4018     auto
4019 #else
4020     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
4021 #endif
reflectVULKAN_HPP_NAMESPACE::BufferImageCopy4022       reflect() const VULKAN_HPP_NOEXCEPT
4023     {
4024       return std::tie( bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
4025     }
4026 #endif
4027 
4028 
4029 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
4030 auto operator<=>( BufferImageCopy const & ) const = default;
4031 #else
operator ==VULKAN_HPP_NAMESPACE::BufferImageCopy4032     bool operator==( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
4033     {
4034 #if defined( VULKAN_HPP_USE_REFLECT )
4035       return this->reflect() == rhs.reflect();
4036 #else
4037       return ( bufferOffset == rhs.bufferOffset )
4038           && ( bufferRowLength == rhs.bufferRowLength )
4039           && ( bufferImageHeight == rhs.bufferImageHeight )
4040           && ( imageSubresource == rhs.imageSubresource )
4041           && ( imageOffset == rhs.imageOffset )
4042           && ( imageExtent == rhs.imageExtent );
4043 #endif
4044     }
4045 
operator !=VULKAN_HPP_NAMESPACE::BufferImageCopy4046     bool operator!=( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
4047     {
4048       return !operator==( rhs );
4049     }
4050 #endif
4051 
4052     public:
4053     VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset = {};
4054     uint32_t bufferRowLength = {};
4055     uint32_t bufferImageHeight = {};
4056     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource = {};
4057     VULKAN_HPP_NAMESPACE::Offset3D imageOffset = {};
4058     VULKAN_HPP_NAMESPACE::Extent3D imageExtent = {};
4059 
4060   };
4061 
4062   struct BufferImageCopy2
4063   {
4064     using NativeType = VkBufferImageCopy2;
4065 
4066     static const bool allowDuplicate = false;
4067     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferImageCopy2;
4068 
4069 
4070 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferImageCopy2VULKAN_HPP_NAMESPACE::BufferImageCopy24071 VULKAN_HPP_CONSTEXPR BufferImageCopy2(VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ = {}, uint32_t bufferRowLength_ = {}, uint32_t bufferImageHeight_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D imageOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D imageExtent_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
4072     : pNext( pNext_ ), bufferOffset( bufferOffset_ ), bufferRowLength( bufferRowLength_ ), bufferImageHeight( bufferImageHeight_ ), imageSubresource( imageSubresource_ ), imageOffset( imageOffset_ ), imageExtent( imageExtent_ )
4073     {}
4074 
4075     VULKAN_HPP_CONSTEXPR BufferImageCopy2( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4076 
BufferImageCopy2VULKAN_HPP_NAMESPACE::BufferImageCopy24077     BufferImageCopy2( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
4078       : BufferImageCopy2( *reinterpret_cast<BufferImageCopy2 const *>( &rhs ) )
4079     {}
4080 
4081 
4082     BufferImageCopy2 & operator=( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4083 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4084 
operator =VULKAN_HPP_NAMESPACE::BufferImageCopy24085     BufferImageCopy2 & operator=( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
4086     {
4087       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferImageCopy2 const *>( &rhs );
4088       return *this;
4089     }
4090 
4091 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferImageCopy24092     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4093     {
4094       pNext = pNext_;
4095       return *this;
4096     }
4097 
setBufferOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy24098     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT
4099     {
4100       bufferOffset = bufferOffset_;
4101       return *this;
4102     }
4103 
setBufferRowLengthVULKAN_HPP_NAMESPACE::BufferImageCopy24104     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT
4105     {
4106       bufferRowLength = bufferRowLength_;
4107       return *this;
4108     }
4109 
setBufferImageHeightVULKAN_HPP_NAMESPACE::BufferImageCopy24110     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT
4111     {
4112       bufferImageHeight = bufferImageHeight_;
4113       return *this;
4114     }
4115 
setImageSubresourceVULKAN_HPP_NAMESPACE::BufferImageCopy24116     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT
4117     {
4118       imageSubresource = imageSubresource_;
4119       return *this;
4120     }
4121 
setImageOffsetVULKAN_HPP_NAMESPACE::BufferImageCopy24122     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT
4123     {
4124       imageOffset = imageOffset_;
4125       return *this;
4126     }
4127 
setImageExtentVULKAN_HPP_NAMESPACE::BufferImageCopy24128     VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
4129     {
4130       imageExtent = imageExtent_;
4131       return *this;
4132     }
4133 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4134 
4135 
operator VkBufferImageCopy2 const&VULKAN_HPP_NAMESPACE::BufferImageCopy24136     operator VkBufferImageCopy2 const &() const VULKAN_HPP_NOEXCEPT
4137     {
4138       return *reinterpret_cast<const VkBufferImageCopy2*>( this );
4139     }
4140 
operator VkBufferImageCopy2&VULKAN_HPP_NAMESPACE::BufferImageCopy24141     operator VkBufferImageCopy2 &() VULKAN_HPP_NOEXCEPT
4142     {
4143       return *reinterpret_cast<VkBufferImageCopy2*>( this );
4144     }
4145 
4146 #if defined( VULKAN_HPP_USE_REFLECT )
4147 #if 14 <= VULKAN_HPP_CPP_VERSION
4148     auto
4149 #else
4150     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
4151 #endif
reflectVULKAN_HPP_NAMESPACE::BufferImageCopy24152       reflect() const VULKAN_HPP_NOEXCEPT
4153     {
4154       return std::tie( sType, pNext, bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent );
4155     }
4156 #endif
4157 
4158 
4159 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
4160 auto operator<=>( BufferImageCopy2 const & ) const = default;
4161 #else
operator ==VULKAN_HPP_NAMESPACE::BufferImageCopy24162     bool operator==( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
4163     {
4164 #if defined( VULKAN_HPP_USE_REFLECT )
4165       return this->reflect() == rhs.reflect();
4166 #else
4167       return ( sType == rhs.sType )
4168           && ( pNext == rhs.pNext )
4169           && ( bufferOffset == rhs.bufferOffset )
4170           && ( bufferRowLength == rhs.bufferRowLength )
4171           && ( bufferImageHeight == rhs.bufferImageHeight )
4172           && ( imageSubresource == rhs.imageSubresource )
4173           && ( imageOffset == rhs.imageOffset )
4174           && ( imageExtent == rhs.imageExtent );
4175 #endif
4176     }
4177 
operator !=VULKAN_HPP_NAMESPACE::BufferImageCopy24178     bool operator!=( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
4179     {
4180       return !operator==( rhs );
4181     }
4182 #endif
4183 
4184     public:
4185     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferImageCopy2;
4186     const void * pNext = {};
4187     VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset = {};
4188     uint32_t bufferRowLength = {};
4189     uint32_t bufferImageHeight = {};
4190     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource = {};
4191     VULKAN_HPP_NAMESPACE::Offset3D imageOffset = {};
4192     VULKAN_HPP_NAMESPACE::Extent3D imageExtent = {};
4193 
4194   };
4195 
4196   template <>
4197   struct CppType<StructureType, StructureType::eBufferImageCopy2>
4198   {
4199     using Type = BufferImageCopy2;
4200   };
4201   using BufferImageCopy2KHR = BufferImageCopy2;
4202 
4203   struct BufferMemoryBarrier
4204   {
4205     using NativeType = VkBufferMemoryBarrier;
4206 
4207     static const bool allowDuplicate = false;
4208     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryBarrier;
4209 
4210 
4211 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryBarrierVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4212 VULKAN_HPP_CONSTEXPR BufferMemoryBarrier(VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, uint32_t srcQueueFamilyIndex_ = {}, uint32_t dstQueueFamilyIndex_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
4213     : pNext( pNext_ ), srcAccessMask( srcAccessMask_ ), dstAccessMask( dstAccessMask_ ), srcQueueFamilyIndex( srcQueueFamilyIndex_ ), dstQueueFamilyIndex( dstQueueFamilyIndex_ ), buffer( buffer_ ), offset( offset_ ), size( size_ )
4214     {}
4215 
4216     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4217 
BufferMemoryBarrierVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4218     BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
4219       : BufferMemoryBarrier( *reinterpret_cast<BufferMemoryBarrier const *>( &rhs ) )
4220     {}
4221 
4222 
4223     BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4224 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4225 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryBarrier4226     BufferMemoryBarrier & operator=( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
4227     {
4228       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier const *>( &rhs );
4229       return *this;
4230     }
4231 
4232 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4233     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4234     {
4235       pNext = pNext_;
4236       return *this;
4237     }
4238 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4239     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
4240     {
4241       srcAccessMask = srcAccessMask_;
4242       return *this;
4243     }
4244 
setDstAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4245     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
4246     {
4247       dstAccessMask = dstAccessMask_;
4248       return *this;
4249     }
4250 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4251     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
4252     {
4253       srcQueueFamilyIndex = srcQueueFamilyIndex_;
4254       return *this;
4255     }
4256 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4257     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
4258     {
4259       dstQueueFamilyIndex = dstQueueFamilyIndex_;
4260       return *this;
4261     }
4262 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4263     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
4264     {
4265       buffer = buffer_;
4266       return *this;
4267     }
4268 
setOffsetVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4269     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
4270     {
4271       offset = offset_;
4272       return *this;
4273     }
4274 
setSizeVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4275     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
4276     {
4277       size = size_;
4278       return *this;
4279     }
4280 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4281 
4282 
operator VkBufferMemoryBarrier const&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier4283     operator VkBufferMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
4284     {
4285       return *reinterpret_cast<const VkBufferMemoryBarrier*>( this );
4286     }
4287 
operator VkBufferMemoryBarrier&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier4288     operator VkBufferMemoryBarrier &() VULKAN_HPP_NOEXCEPT
4289     {
4290       return *reinterpret_cast<VkBufferMemoryBarrier*>( this );
4291     }
4292 
4293 #if defined( VULKAN_HPP_USE_REFLECT )
4294 #if 14 <= VULKAN_HPP_CPP_VERSION
4295     auto
4296 #else
4297     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
4298 #endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryBarrier4299       reflect() const VULKAN_HPP_NOEXCEPT
4300     {
4301       return std::tie( sType, pNext, srcAccessMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size );
4302     }
4303 #endif
4304 
4305 
4306 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
4307 auto operator<=>( BufferMemoryBarrier const & ) const = default;
4308 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryBarrier4309     bool operator==( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
4310     {
4311 #if defined( VULKAN_HPP_USE_REFLECT )
4312       return this->reflect() == rhs.reflect();
4313 #else
4314       return ( sType == rhs.sType )
4315           && ( pNext == rhs.pNext )
4316           && ( srcAccessMask == rhs.srcAccessMask )
4317           && ( dstAccessMask == rhs.dstAccessMask )
4318           && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
4319           && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
4320           && ( buffer == rhs.buffer )
4321           && ( offset == rhs.offset )
4322           && ( size == rhs.size );
4323 #endif
4324     }
4325 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryBarrier4326     bool operator!=( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
4327     {
4328       return !operator==( rhs );
4329     }
4330 #endif
4331 
4332     public:
4333     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryBarrier;
4334     const void * pNext = {};
4335     VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {};
4336     VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {};
4337     uint32_t srcQueueFamilyIndex = {};
4338     uint32_t dstQueueFamilyIndex = {};
4339     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
4340     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
4341     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
4342 
4343   };
4344 
4345   template <>
4346   struct CppType<StructureType, StructureType::eBufferMemoryBarrier>
4347   {
4348     using Type = BufferMemoryBarrier;
4349   };
4350 
4351   struct BufferMemoryBarrier2
4352   {
4353     using NativeType = VkBufferMemoryBarrier2;
4354 
4355     static const bool allowDuplicate = false;
4356     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryBarrier2;
4357 
4358 
4359 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryBarrier2VULKAN_HPP_NAMESPACE::BufferMemoryBarrier24360 VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2(VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ = {}, uint32_t srcQueueFamilyIndex_ = {}, uint32_t dstQueueFamilyIndex_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
4361     : pNext( pNext_ ), srcStageMask( srcStageMask_ ), srcAccessMask( srcAccessMask_ ), dstStageMask( dstStageMask_ ), dstAccessMask( dstAccessMask_ ), srcQueueFamilyIndex( srcQueueFamilyIndex_ ), dstQueueFamilyIndex( dstQueueFamilyIndex_ ), buffer( buffer_ ), offset( offset_ ), size( size_ )
4362     {}
4363 
4364     VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4365 
BufferMemoryBarrier2VULKAN_HPP_NAMESPACE::BufferMemoryBarrier24366     BufferMemoryBarrier2( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
4367       : BufferMemoryBarrier2( *reinterpret_cast<BufferMemoryBarrier2 const *>( &rhs ) )
4368     {}
4369 
4370 
4371     BufferMemoryBarrier2 & operator=( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4372 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4373 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryBarrier24374     BufferMemoryBarrier2 & operator=( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
4375     {
4376       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 const *>( &rhs );
4377       return *this;
4378     }
4379 
4380 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24381     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4382     {
4383       pNext = pNext_;
4384       return *this;
4385     }
4386 
setSrcStageMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24387     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
4388     {
4389       srcStageMask = srcStageMask_;
4390       return *this;
4391     }
4392 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24393     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
4394     {
4395       srcAccessMask = srcAccessMask_;
4396       return *this;
4397     }
4398 
setDstStageMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24399     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
4400     {
4401       dstStageMask = dstStageMask_;
4402       return *this;
4403     }
4404 
setDstAccessMaskVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24405     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
4406     {
4407       dstAccessMask = dstAccessMask_;
4408       return *this;
4409     }
4410 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24411     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
4412     {
4413       srcQueueFamilyIndex = srcQueueFamilyIndex_;
4414       return *this;
4415     }
4416 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24417     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
4418     {
4419       dstQueueFamilyIndex = dstQueueFamilyIndex_;
4420       return *this;
4421     }
4422 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24423     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
4424     {
4425       buffer = buffer_;
4426       return *this;
4427     }
4428 
setOffsetVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24429     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
4430     {
4431       offset = offset_;
4432       return *this;
4433     }
4434 
setSizeVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24435     VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
4436     {
4437       size = size_;
4438       return *this;
4439     }
4440 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4441 
4442 
operator VkBufferMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier24443     operator VkBufferMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
4444     {
4445       return *reinterpret_cast<const VkBufferMemoryBarrier2*>( this );
4446     }
4447 
operator VkBufferMemoryBarrier2&VULKAN_HPP_NAMESPACE::BufferMemoryBarrier24448     operator VkBufferMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
4449     {
4450       return *reinterpret_cast<VkBufferMemoryBarrier2*>( this );
4451     }
4452 
4453 #if defined( VULKAN_HPP_USE_REFLECT )
4454 #if 14 <= VULKAN_HPP_CPP_VERSION
4455     auto
4456 #else
4457     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, VULKAN_HPP_NAMESPACE::AccessFlags2 const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, VULKAN_HPP_NAMESPACE::AccessFlags2 const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
4458 #endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryBarrier24459       reflect() const VULKAN_HPP_NOEXCEPT
4460     {
4461       return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size );
4462     }
4463 #endif
4464 
4465 
4466 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
4467 auto operator<=>( BufferMemoryBarrier2 const & ) const = default;
4468 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryBarrier24469     bool operator==( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
4470     {
4471 #if defined( VULKAN_HPP_USE_REFLECT )
4472       return this->reflect() == rhs.reflect();
4473 #else
4474       return ( sType == rhs.sType )
4475           && ( pNext == rhs.pNext )
4476           && ( srcStageMask == rhs.srcStageMask )
4477           && ( srcAccessMask == rhs.srcAccessMask )
4478           && ( dstStageMask == rhs.dstStageMask )
4479           && ( dstAccessMask == rhs.dstAccessMask )
4480           && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
4481           && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
4482           && ( buffer == rhs.buffer )
4483           && ( offset == rhs.offset )
4484           && ( size == rhs.size );
4485 #endif
4486     }
4487 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryBarrier24488     bool operator!=( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
4489     {
4490       return !operator==( rhs );
4491     }
4492 #endif
4493 
4494     public:
4495     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryBarrier2;
4496     const void * pNext = {};
4497     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask = {};
4498     VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask = {};
4499     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask = {};
4500     VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask = {};
4501     uint32_t srcQueueFamilyIndex = {};
4502     uint32_t dstQueueFamilyIndex = {};
4503     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
4504     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
4505     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
4506 
4507   };
4508 
4509   template <>
4510   struct CppType<StructureType, StructureType::eBufferMemoryBarrier2>
4511   {
4512     using Type = BufferMemoryBarrier2;
4513   };
4514   using BufferMemoryBarrier2KHR = BufferMemoryBarrier2;
4515 
4516   struct BufferMemoryRequirementsInfo2
4517   {
4518     using NativeType = VkBufferMemoryRequirementsInfo2;
4519 
4520     static const bool allowDuplicate = false;
4521     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryRequirementsInfo2;
4522 
4523 
4524 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24525 VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
4526     : pNext( pNext_ ), buffer( buffer_ )
4527     {}
4528 
4529     VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4530 
BufferMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24531     BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
4532       : BufferMemoryRequirementsInfo2( *reinterpret_cast<BufferMemoryRequirementsInfo2 const *>( &rhs ) )
4533     {}
4534 
4535 
4536     BufferMemoryRequirementsInfo2 & operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4537 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4538 
operator =VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24539     BufferMemoryRequirementsInfo2 & operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
4540     {
4541       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 const *>( &rhs );
4542       return *this;
4543     }
4544 
4545 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24546     VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4547     {
4548       pNext = pNext_;
4549       return *this;
4550     }
4551 
setBufferVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24552     VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
4553     {
4554       buffer = buffer_;
4555       return *this;
4556     }
4557 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4558 
4559 
operator VkBufferMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24560     operator VkBufferMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
4561     {
4562       return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2*>( this );
4563     }
4564 
operator VkBufferMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24565     operator VkBufferMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
4566     {
4567       return *reinterpret_cast<VkBufferMemoryRequirementsInfo2*>( this );
4568     }
4569 
4570 #if defined( VULKAN_HPP_USE_REFLECT )
4571 #if 14 <= VULKAN_HPP_CPP_VERSION
4572     auto
4573 #else
4574     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &>
4575 #endif
reflectVULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24576       reflect() const VULKAN_HPP_NOEXCEPT
4577     {
4578       return std::tie( sType, pNext, buffer );
4579     }
4580 #endif
4581 
4582 
4583 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
4584 auto operator<=>( BufferMemoryRequirementsInfo2 const & ) const = default;
4585 #else
operator ==VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24586     bool operator==( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
4587     {
4588 #if defined( VULKAN_HPP_USE_REFLECT )
4589       return this->reflect() == rhs.reflect();
4590 #else
4591       return ( sType == rhs.sType )
4592           && ( pNext == rhs.pNext )
4593           && ( buffer == rhs.buffer );
4594 #endif
4595     }
4596 
operator !=VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo24597     bool operator!=( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
4598     {
4599       return !operator==( rhs );
4600     }
4601 #endif
4602 
4603     public:
4604     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryRequirementsInfo2;
4605     const void * pNext = {};
4606     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
4607 
4608   };
4609 
4610   template <>
4611   struct CppType<StructureType, StructureType::eBufferMemoryRequirementsInfo2>
4612   {
4613     using Type = BufferMemoryRequirementsInfo2;
4614   };
4615   using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2;
4616 
4617   struct BufferOpaqueCaptureAddressCreateInfo
4618   {
4619     using NativeType = VkBufferOpaqueCaptureAddressCreateInfo;
4620 
4621     static const bool allowDuplicate = false;
4622     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
4623 
4624 
4625 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferOpaqueCaptureAddressCreateInfoVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4626 VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo(uint64_t opaqueCaptureAddress_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
4627     : pNext( pNext_ ), opaqueCaptureAddress( opaqueCaptureAddress_ )
4628     {}
4629 
4630     VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4631 
BufferOpaqueCaptureAddressCreateInfoVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4632     BufferOpaqueCaptureAddressCreateInfo( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
4633       : BufferOpaqueCaptureAddressCreateInfo( *reinterpret_cast<BufferOpaqueCaptureAddressCreateInfo const *>( &rhs ) )
4634     {}
4635 
4636 
4637     BufferOpaqueCaptureAddressCreateInfo & operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4638 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4639 
operator =VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4640     BufferOpaqueCaptureAddressCreateInfo & operator=( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
4641     {
4642       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo const *>( &rhs );
4643       return *this;
4644     }
4645 
4646 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4647     VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4648     {
4649       pNext = pNext_;
4650       return *this;
4651     }
4652 
setOpaqueCaptureAddressVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4653     VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT
4654     {
4655       opaqueCaptureAddress = opaqueCaptureAddress_;
4656       return *this;
4657     }
4658 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4659 
4660 
operator VkBufferOpaqueCaptureAddressCreateInfo const&VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4661     operator VkBufferOpaqueCaptureAddressCreateInfo const &() const VULKAN_HPP_NOEXCEPT
4662     {
4663       return *reinterpret_cast<const VkBufferOpaqueCaptureAddressCreateInfo*>( this );
4664     }
4665 
operator VkBufferOpaqueCaptureAddressCreateInfo&VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4666     operator VkBufferOpaqueCaptureAddressCreateInfo &() VULKAN_HPP_NOEXCEPT
4667     {
4668       return *reinterpret_cast<VkBufferOpaqueCaptureAddressCreateInfo*>( this );
4669     }
4670 
4671 #if defined( VULKAN_HPP_USE_REFLECT )
4672 #if 14 <= VULKAN_HPP_CPP_VERSION
4673     auto
4674 #else
4675     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
4676 #endif
reflectVULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4677       reflect() const VULKAN_HPP_NOEXCEPT
4678     {
4679       return std::tie( sType, pNext, opaqueCaptureAddress );
4680     }
4681 #endif
4682 
4683 
4684 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
4685 auto operator<=>( BufferOpaqueCaptureAddressCreateInfo const & ) const = default;
4686 #else
operator ==VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4687     bool operator==( BufferOpaqueCaptureAddressCreateInfo 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 )
4693           && ( pNext == rhs.pNext )
4694           && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress );
4695 #endif
4696     }
4697 
operator !=VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo4698     bool operator!=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
4699     {
4700       return !operator==( rhs );
4701     }
4702 #endif
4703 
4704     public:
4705     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferOpaqueCaptureAddressCreateInfo;
4706     const void * pNext = {};
4707     uint64_t opaqueCaptureAddress = {};
4708 
4709   };
4710 
4711   template <>
4712   struct CppType<StructureType, StructureType::eBufferOpaqueCaptureAddressCreateInfo>
4713   {
4714     using Type = BufferOpaqueCaptureAddressCreateInfo;
4715   };
4716   using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo;
4717 
4718   struct BufferViewCreateInfo
4719   {
4720     using NativeType = VkBufferViewCreateInfo;
4721 
4722     static const bool allowDuplicate = false;
4723     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferViewCreateInfo;
4724 
4725 
4726 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
BufferViewCreateInfoVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4727 VULKAN_HPP_CONSTEXPR BufferViewCreateInfo(VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize range_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
4728     : pNext( pNext_ ), flags( flags_ ), buffer( buffer_ ), format( format_ ), offset( offset_ ), range( range_ )
4729     {}
4730 
4731     VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4732 
BufferViewCreateInfoVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4733     BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
4734       : BufferViewCreateInfo( *reinterpret_cast<BufferViewCreateInfo const *>( &rhs ) )
4735     {}
4736 
4737 
4738     BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4739 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4740 
operator =VULKAN_HPP_NAMESPACE::BufferViewCreateInfo4741     BufferViewCreateInfo & operator=( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
4742     {
4743       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const *>( &rhs );
4744       return *this;
4745     }
4746 
4747 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4748     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4749     {
4750       pNext = pNext_;
4751       return *this;
4752     }
4753 
setFlagsVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4754     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
4755     {
4756       flags = flags_;
4757       return *this;
4758     }
4759 
setBufferVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4760     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
4761     {
4762       buffer = buffer_;
4763       return *this;
4764     }
4765 
setFormatVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4766     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
4767     {
4768       format = format_;
4769       return *this;
4770     }
4771 
setOffsetVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4772     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
4773     {
4774       offset = offset_;
4775       return *this;
4776     }
4777 
setRangeVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4778     VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
4779     {
4780       range = range_;
4781       return *this;
4782     }
4783 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4784 
4785 
operator VkBufferViewCreateInfo const&VULKAN_HPP_NAMESPACE::BufferViewCreateInfo4786     operator VkBufferViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
4787     {
4788       return *reinterpret_cast<const VkBufferViewCreateInfo*>( this );
4789     }
4790 
operator VkBufferViewCreateInfo&VULKAN_HPP_NAMESPACE::BufferViewCreateInfo4791     operator VkBufferViewCreateInfo &() VULKAN_HPP_NOEXCEPT
4792     {
4793       return *reinterpret_cast<VkBufferViewCreateInfo*>( this );
4794     }
4795 
4796 #if defined( VULKAN_HPP_USE_REFLECT )
4797 #if 14 <= VULKAN_HPP_CPP_VERSION
4798     auto
4799 #else
4800     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferViewCreateFlags const &, VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
4801 #endif
reflectVULKAN_HPP_NAMESPACE::BufferViewCreateInfo4802       reflect() const VULKAN_HPP_NOEXCEPT
4803     {
4804       return std::tie( sType, pNext, flags, buffer, format, offset, range );
4805     }
4806 #endif
4807 
4808 
4809 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
4810 auto operator<=>( BufferViewCreateInfo const & ) const = default;
4811 #else
operator ==VULKAN_HPP_NAMESPACE::BufferViewCreateInfo4812     bool operator==( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
4813     {
4814 #if defined( VULKAN_HPP_USE_REFLECT )
4815       return this->reflect() == rhs.reflect();
4816 #else
4817       return ( sType == rhs.sType )
4818           && ( pNext == rhs.pNext )
4819           && ( flags == rhs.flags )
4820           && ( buffer == rhs.buffer )
4821           && ( format == rhs.format )
4822           && ( offset == rhs.offset )
4823           && ( range == rhs.range );
4824 #endif
4825     }
4826 
operator !=VULKAN_HPP_NAMESPACE::BufferViewCreateInfo4827     bool operator!=( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
4828     {
4829       return !operator==( rhs );
4830     }
4831 #endif
4832 
4833     public:
4834     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferViewCreateInfo;
4835     const void * pNext = {};
4836     VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags = {};
4837     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
4838     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
4839     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
4840     VULKAN_HPP_NAMESPACE::DeviceSize range = {};
4841 
4842   };
4843 
4844   template <>
4845   struct CppType<StructureType, StructureType::eBufferViewCreateInfo>
4846   {
4847     using Type = BufferViewCreateInfo;
4848   };
4849 
4850   struct CalibratedTimestampInfoEXT
4851   {
4852     using NativeType = VkCalibratedTimestampInfoEXT;
4853 
4854     static const bool allowDuplicate = false;
4855     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCalibratedTimestampInfoEXT;
4856 
4857 
4858 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CalibratedTimestampInfoEXTVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4859 VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoEXT(VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain_ = VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
4860     : pNext( pNext_ ), timeDomain( timeDomain_ )
4861     {}
4862 
4863     VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoEXT( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4864 
CalibratedTimestampInfoEXTVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4865     CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
4866       : CalibratedTimestampInfoEXT( *reinterpret_cast<CalibratedTimestampInfoEXT const *>( &rhs ) )
4867     {}
4868 
4869 
4870     CalibratedTimestampInfoEXT & operator=( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4871 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4872 
operator =VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4873     CalibratedTimestampInfoEXT & operator=( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
4874     {
4875       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT const *>( &rhs );
4876       return *this;
4877     }
4878 
4879 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4880     VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
4881     {
4882       pNext = pNext_;
4883       return *this;
4884     }
4885 
setTimeDomainVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4886     VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoEXT & setTimeDomain( VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain_ ) VULKAN_HPP_NOEXCEPT
4887     {
4888       timeDomain = timeDomain_;
4889       return *this;
4890     }
4891 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
4892 
4893 
operator VkCalibratedTimestampInfoEXT const&VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4894     operator VkCalibratedTimestampInfoEXT const &() const VULKAN_HPP_NOEXCEPT
4895     {
4896       return *reinterpret_cast<const VkCalibratedTimestampInfoEXT*>( this );
4897     }
4898 
operator VkCalibratedTimestampInfoEXT&VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4899     operator VkCalibratedTimestampInfoEXT &() VULKAN_HPP_NOEXCEPT
4900     {
4901       return *reinterpret_cast<VkCalibratedTimestampInfoEXT*>( this );
4902     }
4903 
4904 #if defined( VULKAN_HPP_USE_REFLECT )
4905 #if 14 <= VULKAN_HPP_CPP_VERSION
4906     auto
4907 #else
4908     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::TimeDomainEXT const &>
4909 #endif
reflectVULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4910       reflect() const VULKAN_HPP_NOEXCEPT
4911     {
4912       return std::tie( sType, pNext, timeDomain );
4913     }
4914 #endif
4915 
4916 
4917 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
4918 auto operator<=>( CalibratedTimestampInfoEXT const & ) const = default;
4919 #else
operator ==VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4920     bool operator==( CalibratedTimestampInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
4921     {
4922 #if defined( VULKAN_HPP_USE_REFLECT )
4923       return this->reflect() == rhs.reflect();
4924 #else
4925       return ( sType == rhs.sType )
4926           && ( pNext == rhs.pNext )
4927           && ( timeDomain == rhs.timeDomain );
4928 #endif
4929     }
4930 
operator !=VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT4931     bool operator!=( CalibratedTimestampInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
4932     {
4933       return !operator==( rhs );
4934     }
4935 #endif
4936 
4937     public:
4938     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCalibratedTimestampInfoEXT;
4939     const void * pNext = {};
4940     VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain = VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice;
4941 
4942   };
4943 
4944   template <>
4945   struct CppType<StructureType, StructureType::eCalibratedTimestampInfoEXT>
4946   {
4947     using Type = CalibratedTimestampInfoEXT;
4948   };
4949 
4950   struct CheckpointData2NV
4951   {
4952     using NativeType = VkCheckpointData2NV;
4953 
4954     static const bool allowDuplicate = false;
4955     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCheckpointData2NV;
4956 
4957 
4958 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CheckpointData2NVVULKAN_HPP_NAMESPACE::CheckpointData2NV4959 VULKAN_HPP_CONSTEXPR CheckpointData2NV(VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage_ = {}, void * pCheckpointMarker_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
4960     : pNext( pNext_ ), stage( stage_ ), pCheckpointMarker( pCheckpointMarker_ )
4961     {}
4962 
4963     VULKAN_HPP_CONSTEXPR CheckpointData2NV( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4964 
CheckpointData2NVVULKAN_HPP_NAMESPACE::CheckpointData2NV4965     CheckpointData2NV( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT
4966       : CheckpointData2NV( *reinterpret_cast<CheckpointData2NV const *>( &rhs ) )
4967     {}
4968 
4969 
4970     CheckpointData2NV & operator=( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
4971 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
4972 
operator =VULKAN_HPP_NAMESPACE::CheckpointData2NV4973     CheckpointData2NV & operator=( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT
4974     {
4975       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CheckpointData2NV const *>( &rhs );
4976       return *this;
4977     }
4978 
4979 
operator VkCheckpointData2NV const&VULKAN_HPP_NAMESPACE::CheckpointData2NV4980     operator VkCheckpointData2NV const &() const VULKAN_HPP_NOEXCEPT
4981     {
4982       return *reinterpret_cast<const VkCheckpointData2NV*>( this );
4983     }
4984 
operator VkCheckpointData2NV&VULKAN_HPP_NAMESPACE::CheckpointData2NV4985     operator VkCheckpointData2NV &() VULKAN_HPP_NOEXCEPT
4986     {
4987       return *reinterpret_cast<VkCheckpointData2NV*>( this );
4988     }
4989 
4990 #if defined( VULKAN_HPP_USE_REFLECT )
4991 #if 14 <= VULKAN_HPP_CPP_VERSION
4992     auto
4993 #else
4994     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, void * const &>
4995 #endif
reflectVULKAN_HPP_NAMESPACE::CheckpointData2NV4996       reflect() const VULKAN_HPP_NOEXCEPT
4997     {
4998       return std::tie( sType, pNext, stage, pCheckpointMarker );
4999     }
5000 #endif
5001 
5002 
5003 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
5004 auto operator<=>( CheckpointData2NV const & ) const = default;
5005 #else
operator ==VULKAN_HPP_NAMESPACE::CheckpointData2NV5006     bool operator==( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
5007     {
5008 #if defined( VULKAN_HPP_USE_REFLECT )
5009       return this->reflect() == rhs.reflect();
5010 #else
5011       return ( sType == rhs.sType )
5012           && ( pNext == rhs.pNext )
5013           && ( stage == rhs.stage )
5014           && ( pCheckpointMarker == rhs.pCheckpointMarker );
5015 #endif
5016     }
5017 
operator !=VULKAN_HPP_NAMESPACE::CheckpointData2NV5018     bool operator!=( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
5019     {
5020       return !operator==( rhs );
5021     }
5022 #endif
5023 
5024     public:
5025     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCheckpointData2NV;
5026     void * pNext = {};
5027     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage = {};
5028     void * pCheckpointMarker = {};
5029 
5030   };
5031 
5032   template <>
5033   struct CppType<StructureType, StructureType::eCheckpointData2NV>
5034   {
5035     using Type = CheckpointData2NV;
5036   };
5037 
5038   union ClearColorValue
5039   {
5040     using NativeType = VkClearColorValue;
5041 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
5042 
ClearColorValue(const std::array<float,4> & float32_={} )5043     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<float,4>& float32_ = {} )
5044       : float32( float32_ )
5045     {}
5046 
ClearColorValue(float float32_0,float float32_1,float float32_2,float float32_3)5047     VULKAN_HPP_CONSTEXPR ClearColorValue( float float32_0, float float32_1, float float32_2, float float32_3 )
5048       : float32{ { { float32_0, float32_1, float32_2, float32_3 } } }
5049     {}
5050 
ClearColorValue(const std::array<int32_t,4> & int32_)5051     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<int32_t,4>& int32_ )
5052       : int32( int32_ )
5053     {}
5054 
ClearColorValue(int32_t int32_0,int32_t int32_1,int32_t int32_2,int32_t int32_3)5055     VULKAN_HPP_CONSTEXPR ClearColorValue( int32_t int32_0, int32_t int32_1, int32_t int32_2, int32_t int32_3 )
5056       : int32{ { { int32_0, int32_1, int32_2, int32_3 } } }
5057     {}
5058 
ClearColorValue(const std::array<uint32_t,4> & uint32_)5059     VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
5060       : uint32( uint32_ )
5061     {}
5062 
ClearColorValue(uint32_t uint32_0,uint32_t uint32_1,uint32_t uint32_2,uint32_t uint32_3)5063     VULKAN_HPP_CONSTEXPR ClearColorValue( uint32_t uint32_0, uint32_t uint32_1, uint32_t uint32_2, uint32_t uint32_3 )
5064       : uint32{ { { uint32_0, uint32_1, uint32_2, uint32_3 } } }
5065     {}
5066 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
5067 
5068 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setFloat32(std::array<float,4> float32_)5069     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setFloat32( std::array<float,4> float32_ ) VULKAN_HPP_NOEXCEPT
5070     {
5071       float32 = float32_;
5072       return *this;
5073     }
5074 
setInt32(std::array<int32_t,4> int32_)5075     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setInt32( std::array<int32_t,4> int32_ ) VULKAN_HPP_NOEXCEPT
5076     {
5077       int32 = int32_;
5078       return *this;
5079     }
5080 
setUint32(std::array<uint32_t,4> uint32_)5081     VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setUint32( std::array<uint32_t,4> uint32_ ) VULKAN_HPP_NOEXCEPT
5082     {
5083       uint32 = uint32_;
5084       return *this;
5085     }
5086 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
5087 
operator VkClearColorValue const&() const5088     operator VkClearColorValue const &() const
5089     {
5090       return *reinterpret_cast<const VkClearColorValue*>( this );
5091     }
5092 
operator VkClearColorValue&()5093     operator VkClearColorValue &()
5094     {
5095       return *reinterpret_cast<VkClearColorValue*>( this );
5096     }
5097 
5098     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> float32;
5099     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<int32_t, 4> int32;
5100     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 4> uint32;
5101 
5102   };
5103 
5104   struct ClearDepthStencilValue
5105   {
5106     using NativeType = VkClearDepthStencilValue;
5107 
5108 
5109 
5110 
5111 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearDepthStencilValueVULKAN_HPP_NAMESPACE::ClearDepthStencilValue5112 VULKAN_HPP_CONSTEXPR ClearDepthStencilValue(float depth_ = {}, uint32_t stencil_ = {}) VULKAN_HPP_NOEXCEPT
5113     : depth( depth_ ), stencil( stencil_ )
5114     {}
5115 
5116     VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5117 
ClearDepthStencilValueVULKAN_HPP_NAMESPACE::ClearDepthStencilValue5118     ClearDepthStencilValue( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
5119       : ClearDepthStencilValue( *reinterpret_cast<ClearDepthStencilValue const *>( &rhs ) )
5120     {}
5121 
5122 
5123     ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5124 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5125 
operator =VULKAN_HPP_NAMESPACE::ClearDepthStencilValue5126     ClearDepthStencilValue & operator=( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT
5127     {
5128       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const *>( &rhs );
5129       return *this;
5130     }
5131 
5132 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setDepthVULKAN_HPP_NAMESPACE::ClearDepthStencilValue5133     VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setDepth( float depth_ ) VULKAN_HPP_NOEXCEPT
5134     {
5135       depth = depth_;
5136       return *this;
5137     }
5138 
setStencilVULKAN_HPP_NAMESPACE::ClearDepthStencilValue5139     VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setStencil( uint32_t stencil_ ) VULKAN_HPP_NOEXCEPT
5140     {
5141       stencil = stencil_;
5142       return *this;
5143     }
5144 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5145 
5146 
operator VkClearDepthStencilValue const&VULKAN_HPP_NAMESPACE::ClearDepthStencilValue5147     operator VkClearDepthStencilValue const &() const VULKAN_HPP_NOEXCEPT
5148     {
5149       return *reinterpret_cast<const VkClearDepthStencilValue*>( this );
5150     }
5151 
operator VkClearDepthStencilValue&VULKAN_HPP_NAMESPACE::ClearDepthStencilValue5152     operator VkClearDepthStencilValue &() VULKAN_HPP_NOEXCEPT
5153     {
5154       return *reinterpret_cast<VkClearDepthStencilValue*>( this );
5155     }
5156 
5157 #if defined( VULKAN_HPP_USE_REFLECT )
5158 #if 14 <= VULKAN_HPP_CPP_VERSION
5159     auto
5160 #else
5161     std::tuple<float const &, uint32_t const &>
5162 #endif
reflectVULKAN_HPP_NAMESPACE::ClearDepthStencilValue5163       reflect() const VULKAN_HPP_NOEXCEPT
5164     {
5165       return std::tie( depth, stencil );
5166     }
5167 #endif
5168 
5169 
5170 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
5171 auto operator<=>( ClearDepthStencilValue const & ) const = default;
5172 #else
operator ==VULKAN_HPP_NAMESPACE::ClearDepthStencilValue5173     bool operator==( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT
5174     {
5175 #if defined( VULKAN_HPP_USE_REFLECT )
5176       return this->reflect() == rhs.reflect();
5177 #else
5178       return ( depth == rhs.depth )
5179           && ( stencil == rhs.stencil );
5180 #endif
5181     }
5182 
operator !=VULKAN_HPP_NAMESPACE::ClearDepthStencilValue5183     bool operator!=( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT
5184     {
5185       return !operator==( rhs );
5186     }
5187 #endif
5188 
5189     public:
5190     float depth = {};
5191     uint32_t stencil = {};
5192 
5193   };
5194 
5195   union ClearValue
5196   {
5197     using NativeType = VkClearValue;
5198 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
5199 
ClearValue(VULKAN_HPP_NAMESPACE::ClearColorValue color_={} )5200     VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearColorValue color_ = {} )
5201       : color( color_ )
5202     {}
5203 
ClearValue(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_)5204     VULKAN_HPP_CONSTEXPR_14 ClearValue( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_ )
5205       : depthStencil( depthStencil_ )
5206     {}
5207 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
5208 
5209 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setColor(VULKAN_HPP_NAMESPACE::ClearColorValue const & color_)5210     VULKAN_HPP_CONSTEXPR_14 ClearValue & setColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & color_ ) VULKAN_HPP_NOEXCEPT
5211     {
5212       color = color_;
5213       return *this;
5214     }
5215 
setDepthStencil(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_)5216     VULKAN_HPP_CONSTEXPR_14 ClearValue & setDepthStencil( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_ ) VULKAN_HPP_NOEXCEPT
5217     {
5218       depthStencil = depthStencil_;
5219       return *this;
5220     }
5221 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
5222 
operator VkClearValue const&() const5223     operator VkClearValue const &() const
5224     {
5225       return *reinterpret_cast<const VkClearValue*>( this );
5226     }
5227 
operator VkClearValue&()5228     operator VkClearValue &()
5229     {
5230       return *reinterpret_cast<VkClearValue*>( this );
5231     }
5232 
5233 #ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
5234     VULKAN_HPP_NAMESPACE::ClearColorValue color;
5235     VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil;
5236 #else
5237     VkClearColorValue color;
5238     VkClearDepthStencilValue depthStencil;
5239 #endif  /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/
5240 
5241   };
5242 
5243   struct ClearAttachment
5244   {
5245     using NativeType = VkClearAttachment;
5246 
5247 
5248 
5249 
5250 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment5251 VULKAN_HPP_CONSTEXPR_14 ClearAttachment(VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, uint32_t colorAttachment_ = {}, VULKAN_HPP_NAMESPACE::ClearValue clearValue_ = {}) VULKAN_HPP_NOEXCEPT
5252     : aspectMask( aspectMask_ ), colorAttachment( colorAttachment_ ), clearValue( clearValue_ )
5253     {}
5254 
5255     VULKAN_HPP_CONSTEXPR_14 ClearAttachment( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5256 
ClearAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment5257     ClearAttachment( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
5258       : ClearAttachment( *reinterpret_cast<ClearAttachment const *>( &rhs ) )
5259     {}
5260 
5261 
5262     ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5263 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5264 
operator =VULKAN_HPP_NAMESPACE::ClearAttachment5265     ClearAttachment & operator=( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT
5266     {
5267       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearAttachment const *>( &rhs );
5268       return *this;
5269     }
5270 
5271 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ClearAttachment5272     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
5273     {
5274       aspectMask = aspectMask_;
5275       return *this;
5276     }
5277 
setColorAttachmentVULKAN_HPP_NAMESPACE::ClearAttachment5278     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setColorAttachment( uint32_t colorAttachment_ ) VULKAN_HPP_NOEXCEPT
5279     {
5280       colorAttachment = colorAttachment_;
5281       return *this;
5282     }
5283 
setClearValueVULKAN_HPP_NAMESPACE::ClearAttachment5284     VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT
5285     {
5286       clearValue = clearValue_;
5287       return *this;
5288     }
5289 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5290 
5291 
operator VkClearAttachment const&VULKAN_HPP_NAMESPACE::ClearAttachment5292     operator VkClearAttachment const &() const VULKAN_HPP_NOEXCEPT
5293     {
5294       return *reinterpret_cast<const VkClearAttachment*>( this );
5295     }
5296 
operator VkClearAttachment&VULKAN_HPP_NAMESPACE::ClearAttachment5297     operator VkClearAttachment &() VULKAN_HPP_NOEXCEPT
5298     {
5299       return *reinterpret_cast<VkClearAttachment*>( this );
5300     }
5301 
5302 #if defined( VULKAN_HPP_USE_REFLECT )
5303 #if 14 <= VULKAN_HPP_CPP_VERSION
5304     auto
5305 #else
5306     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ClearValue const &>
5307 #endif
reflectVULKAN_HPP_NAMESPACE::ClearAttachment5308       reflect() const VULKAN_HPP_NOEXCEPT
5309     {
5310       return std::tie( aspectMask, colorAttachment, clearValue );
5311     }
5312 #endif
5313 
5314 
5315     public:
5316     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
5317     uint32_t colorAttachment = {};
5318     VULKAN_HPP_NAMESPACE::ClearValue clearValue = {};
5319 
5320   };
5321 
5322   struct ClearRect
5323   {
5324     using NativeType = VkClearRect;
5325 
5326 
5327 
5328 
5329 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ClearRectVULKAN_HPP_NAMESPACE::ClearRect5330 VULKAN_HPP_CONSTEXPR ClearRect(VULKAN_HPP_NAMESPACE::Rect2D rect_ = {}, uint32_t baseArrayLayer_ = {}, uint32_t layerCount_ = {}) VULKAN_HPP_NOEXCEPT
5331     : rect( rect_ ), baseArrayLayer( baseArrayLayer_ ), layerCount( layerCount_ )
5332     {}
5333 
5334     VULKAN_HPP_CONSTEXPR ClearRect( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5335 
ClearRectVULKAN_HPP_NAMESPACE::ClearRect5336     ClearRect( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT
5337       : ClearRect( *reinterpret_cast<ClearRect const *>( &rhs ) )
5338     {}
5339 
5340 
5341     ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5342 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5343 
operator =VULKAN_HPP_NAMESPACE::ClearRect5344     ClearRect & operator=( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT
5345     {
5346       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ClearRect const *>( &rhs );
5347       return *this;
5348     }
5349 
5350 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRectVULKAN_HPP_NAMESPACE::ClearRect5351     VULKAN_HPP_CONSTEXPR_14 ClearRect & setRect( VULKAN_HPP_NAMESPACE::Rect2D const & rect_ ) VULKAN_HPP_NOEXCEPT
5352     {
5353       rect = rect_;
5354       return *this;
5355     }
5356 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ClearRect5357     VULKAN_HPP_CONSTEXPR_14 ClearRect & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
5358     {
5359       baseArrayLayer = baseArrayLayer_;
5360       return *this;
5361     }
5362 
setLayerCountVULKAN_HPP_NAMESPACE::ClearRect5363     VULKAN_HPP_CONSTEXPR_14 ClearRect & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
5364     {
5365       layerCount = layerCount_;
5366       return *this;
5367     }
5368 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5369 
5370 
operator VkClearRect const&VULKAN_HPP_NAMESPACE::ClearRect5371     operator VkClearRect const &() const VULKAN_HPP_NOEXCEPT
5372     {
5373       return *reinterpret_cast<const VkClearRect*>( this );
5374     }
5375 
operator VkClearRect&VULKAN_HPP_NAMESPACE::ClearRect5376     operator VkClearRect &() VULKAN_HPP_NOEXCEPT
5377     {
5378       return *reinterpret_cast<VkClearRect*>( this );
5379     }
5380 
5381 #if defined( VULKAN_HPP_USE_REFLECT )
5382 #if 14 <= VULKAN_HPP_CPP_VERSION
5383     auto
5384 #else
5385     std::tuple<VULKAN_HPP_NAMESPACE::Rect2D const &, uint32_t const &, uint32_t const &>
5386 #endif
reflectVULKAN_HPP_NAMESPACE::ClearRect5387       reflect() const VULKAN_HPP_NOEXCEPT
5388     {
5389       return std::tie( rect, baseArrayLayer, layerCount );
5390     }
5391 #endif
5392 
5393 
5394 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
5395 auto operator<=>( ClearRect const & ) const = default;
5396 #else
operator ==VULKAN_HPP_NAMESPACE::ClearRect5397     bool operator==( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT
5398     {
5399 #if defined( VULKAN_HPP_USE_REFLECT )
5400       return this->reflect() == rhs.reflect();
5401 #else
5402       return ( rect == rhs.rect )
5403           && ( baseArrayLayer == rhs.baseArrayLayer )
5404           && ( layerCount == rhs.layerCount );
5405 #endif
5406     }
5407 
operator !=VULKAN_HPP_NAMESPACE::ClearRect5408     bool operator!=( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT
5409     {
5410       return !operator==( rhs );
5411     }
5412 #endif
5413 
5414     public:
5415     VULKAN_HPP_NAMESPACE::Rect2D rect = {};
5416     uint32_t baseArrayLayer = {};
5417     uint32_t layerCount = {};
5418 
5419   };
5420 
5421   struct CommandBufferAllocateInfo
5422   {
5423     using NativeType = VkCommandBufferAllocateInfo;
5424 
5425     static const bool allowDuplicate = false;
5426     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferAllocateInfo;
5427 
5428 
5429 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferAllocateInfoVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5430 VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo(VULKAN_HPP_NAMESPACE::CommandPool commandPool_ = {}, VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
5431     : pNext( pNext_ ), commandPool( commandPool_ ), level( level_ ), commandBufferCount( commandBufferCount_ )
5432     {}
5433 
5434     VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5435 
CommandBufferAllocateInfoVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5436     CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5437       : CommandBufferAllocateInfo( *reinterpret_cast<CommandBufferAllocateInfo const *>( &rhs ) )
5438     {}
5439 
5440 
5441     CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5442 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5443 
operator =VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5444     CommandBufferAllocateInfo & operator=( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5445     {
5446       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const *>( &rhs );
5447       return *this;
5448     }
5449 
5450 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5451     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5452     {
5453       pNext = pNext_;
5454       return *this;
5455     }
5456 
setCommandPoolVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5457     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool_ ) VULKAN_HPP_NOEXCEPT
5458     {
5459       commandPool = commandPool_;
5460       return *this;
5461     }
5462 
setLevelVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5463     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setLevel( VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ ) VULKAN_HPP_NOEXCEPT
5464     {
5465       level = level_;
5466       return *this;
5467     }
5468 
setCommandBufferCountVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5469     VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
5470     {
5471       commandBufferCount = commandBufferCount_;
5472       return *this;
5473     }
5474 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5475 
5476 
operator VkCommandBufferAllocateInfo const&VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5477     operator VkCommandBufferAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
5478     {
5479       return *reinterpret_cast<const VkCommandBufferAllocateInfo*>( this );
5480     }
5481 
operator VkCommandBufferAllocateInfo&VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5482     operator VkCommandBufferAllocateInfo &() VULKAN_HPP_NOEXCEPT
5483     {
5484       return *reinterpret_cast<VkCommandBufferAllocateInfo*>( this );
5485     }
5486 
5487 #if defined( VULKAN_HPP_USE_REFLECT )
5488 #if 14 <= VULKAN_HPP_CPP_VERSION
5489     auto
5490 #else
5491     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CommandPool const &, VULKAN_HPP_NAMESPACE::CommandBufferLevel const &, uint32_t const &>
5492 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5493       reflect() const VULKAN_HPP_NOEXCEPT
5494     {
5495       return std::tie( sType, pNext, commandPool, level, commandBufferCount );
5496     }
5497 #endif
5498 
5499 
5500 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
5501 auto operator<=>( CommandBufferAllocateInfo const & ) const = default;
5502 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5503     bool operator==( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5504     {
5505 #if defined( VULKAN_HPP_USE_REFLECT )
5506       return this->reflect() == rhs.reflect();
5507 #else
5508       return ( sType == rhs.sType )
5509           && ( pNext == rhs.pNext )
5510           && ( commandPool == rhs.commandPool )
5511           && ( level == rhs.level )
5512           && ( commandBufferCount == rhs.commandBufferCount );
5513 #endif
5514     }
5515 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo5516     bool operator!=( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5517     {
5518       return !operator==( rhs );
5519     }
5520 #endif
5521 
5522     public:
5523     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferAllocateInfo;
5524     const void * pNext = {};
5525     VULKAN_HPP_NAMESPACE::CommandPool commandPool = {};
5526     VULKAN_HPP_NAMESPACE::CommandBufferLevel level = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary;
5527     uint32_t commandBufferCount = {};
5528 
5529   };
5530 
5531   template <>
5532   struct CppType<StructureType, StructureType::eCommandBufferAllocateInfo>
5533   {
5534     using Type = CommandBufferAllocateInfo;
5535   };
5536 
5537   struct CommandBufferInheritanceInfo
5538   {
5539     using NativeType = VkCommandBufferInheritanceInfo;
5540 
5541     static const bool allowDuplicate = false;
5542     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceInfo;
5543 
5544 
5545 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5546 VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo(VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t subpass_ = {}, VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ = {}, VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ = {}, VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
5547     : pNext( pNext_ ), renderPass( renderPass_ ), subpass( subpass_ ), framebuffer( framebuffer_ ), occlusionQueryEnable( occlusionQueryEnable_ ), queryFlags( queryFlags_ ), pipelineStatistics( pipelineStatistics_ )
5548     {}
5549 
5550     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5551 
CommandBufferInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5552     CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5553       : CommandBufferInheritanceInfo( *reinterpret_cast<CommandBufferInheritanceInfo const *>( &rhs ) )
5554     {}
5555 
5556 
5557     CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5558 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5559 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5560     CommandBufferInheritanceInfo & operator=( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5561     {
5562       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo const *>( &rhs );
5563       return *this;
5564     }
5565 
5566 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5567     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5568     {
5569       pNext = pNext_;
5570       return *this;
5571     }
5572 
setRenderPassVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5573     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
5574     {
5575       renderPass = renderPass_;
5576       return *this;
5577     }
5578 
setSubpassVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5579     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
5580     {
5581       subpass = subpass_;
5582       return *this;
5583     }
5584 
setFramebufferVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5585     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT
5586     {
5587       framebuffer = framebuffer_;
5588       return *this;
5589     }
5590 
setOcclusionQueryEnableVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5591     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setOcclusionQueryEnable( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ ) VULKAN_HPP_NOEXCEPT
5592     {
5593       occlusionQueryEnable = occlusionQueryEnable_;
5594       return *this;
5595     }
5596 
setQueryFlagsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5597     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setQueryFlags( VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ ) VULKAN_HPP_NOEXCEPT
5598     {
5599       queryFlags = queryFlags_;
5600       return *this;
5601     }
5602 
setPipelineStatisticsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5603     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT
5604     {
5605       pipelineStatistics = pipelineStatistics_;
5606       return *this;
5607     }
5608 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5609 
5610 
operator VkCommandBufferInheritanceInfo const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5611     operator VkCommandBufferInheritanceInfo const &() const VULKAN_HPP_NOEXCEPT
5612     {
5613       return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>( this );
5614     }
5615 
operator VkCommandBufferInheritanceInfo&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5616     operator VkCommandBufferInheritanceInfo &() VULKAN_HPP_NOEXCEPT
5617     {
5618       return *reinterpret_cast<VkCommandBufferInheritanceInfo*>( this );
5619     }
5620 
5621 #if defined( VULKAN_HPP_USE_REFLECT )
5622 #if 14 <= VULKAN_HPP_CPP_VERSION
5623     auto
5624 #else
5625     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderPass const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Framebuffer const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::QueryControlFlags const &, VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags const &>
5626 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5627       reflect() const VULKAN_HPP_NOEXCEPT
5628     {
5629       return std::tie( sType, pNext, renderPass, subpass, framebuffer, occlusionQueryEnable, queryFlags, pipelineStatistics );
5630     }
5631 #endif
5632 
5633 
5634 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
5635 auto operator<=>( CommandBufferInheritanceInfo const & ) const = default;
5636 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5637     bool operator==( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5638     {
5639 #if defined( VULKAN_HPP_USE_REFLECT )
5640       return this->reflect() == rhs.reflect();
5641 #else
5642       return ( sType == rhs.sType )
5643           && ( pNext == rhs.pNext )
5644           && ( renderPass == rhs.renderPass )
5645           && ( subpass == rhs.subpass )
5646           && ( framebuffer == rhs.framebuffer )
5647           && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
5648           && ( queryFlags == rhs.queryFlags )
5649           && ( pipelineStatistics == rhs.pipelineStatistics );
5650 #endif
5651     }
5652 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo5653     bool operator!=( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5654     {
5655       return !operator==( rhs );
5656     }
5657 #endif
5658 
5659     public:
5660     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceInfo;
5661     const void * pNext = {};
5662     VULKAN_HPP_NAMESPACE::RenderPass renderPass = {};
5663     uint32_t subpass = {};
5664     VULKAN_HPP_NAMESPACE::Framebuffer framebuffer = {};
5665     VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable = {};
5666     VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags = {};
5667     VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {};
5668 
5669   };
5670 
5671   template <>
5672   struct CppType<StructureType, StructureType::eCommandBufferInheritanceInfo>
5673   {
5674     using Type = CommandBufferInheritanceInfo;
5675   };
5676 
5677   struct CommandBufferBeginInfo
5678   {
5679     using NativeType = VkCommandBufferBeginInfo;
5680 
5681     static const bool allowDuplicate = false;
5682     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferBeginInfo;
5683 
5684 
5685 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferBeginInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5686 VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo(VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ = {}, const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
5687     : pNext( pNext_ ), flags( flags_ ), pInheritanceInfo( pInheritanceInfo_ )
5688     {}
5689 
5690     VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5691 
CommandBufferBeginInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5692     CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5693       : CommandBufferBeginInfo( *reinterpret_cast<CommandBufferBeginInfo const *>( &rhs ) )
5694     {}
5695 
5696 
5697     CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5698 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5699 
operator =VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5700     CommandBufferBeginInfo & operator=( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5701     {
5702       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo const *>( &rhs );
5703       return *this;
5704     }
5705 
5706 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5707     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5708     {
5709       pNext = pNext_;
5710       return *this;
5711     }
5712 
setFlagsVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5713     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setFlags( VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ ) VULKAN_HPP_NOEXCEPT
5714     {
5715       flags = flags_;
5716       return *this;
5717     }
5718 
setPInheritanceInfoVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5719     VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPInheritanceInfo( const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo_ ) VULKAN_HPP_NOEXCEPT
5720     {
5721       pInheritanceInfo = pInheritanceInfo_;
5722       return *this;
5723     }
5724 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5725 
5726 
operator VkCommandBufferBeginInfo const&VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5727     operator VkCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT
5728     {
5729       return *reinterpret_cast<const VkCommandBufferBeginInfo*>( this );
5730     }
5731 
operator VkCommandBufferBeginInfo&VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5732     operator VkCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT
5733     {
5734       return *reinterpret_cast<VkCommandBufferBeginInfo*>( this );
5735     }
5736 
5737 #if defined( VULKAN_HPP_USE_REFLECT )
5738 #if 14 <= VULKAN_HPP_CPP_VERSION
5739     auto
5740 #else
5741     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags const &, const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * const &>
5742 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5743       reflect() const VULKAN_HPP_NOEXCEPT
5744     {
5745       return std::tie( sType, pNext, flags, pInheritanceInfo );
5746     }
5747 #endif
5748 
5749 
5750 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
5751 auto operator<=>( CommandBufferBeginInfo const & ) const = default;
5752 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5753     bool operator==( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5754     {
5755 #if defined( VULKAN_HPP_USE_REFLECT )
5756       return this->reflect() == rhs.reflect();
5757 #else
5758       return ( sType == rhs.sType )
5759           && ( pNext == rhs.pNext )
5760           && ( flags == rhs.flags )
5761           && ( pInheritanceInfo == rhs.pInheritanceInfo );
5762 #endif
5763     }
5764 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo5765     bool operator!=( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5766     {
5767       return !operator==( rhs );
5768     }
5769 #endif
5770 
5771     public:
5772     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferBeginInfo;
5773     const void * pNext = {};
5774     VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags = {};
5775     const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo * pInheritanceInfo = {};
5776 
5777   };
5778 
5779   template <>
5780   struct CppType<StructureType, StructureType::eCommandBufferBeginInfo>
5781   {
5782     using Type = CommandBufferBeginInfo;
5783   };
5784 
5785   struct CommandBufferInheritanceRenderingInfo
5786   {
5787     using NativeType = VkCommandBufferInheritanceRenderingInfo;
5788 
5789     static const bool allowDuplicate = false;
5790     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceRenderingInfo;
5791 
5792 
5793 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5794 VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfo(VULKAN_HPP_NAMESPACE::RenderingFlags flags_ = {}, uint32_t viewMask_ = {}, uint32_t colorAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {}, VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
5795     : pNext( pNext_ ), flags( flags_ ), viewMask( viewMask_ ), colorAttachmentCount( colorAttachmentCount_ ), pColorAttachmentFormats( pColorAttachmentFormats_ ), depthAttachmentFormat( depthAttachmentFormat_ ), stencilAttachmentFormat( stencilAttachmentFormat_ ), rasterizationSamples( rasterizationSamples_ )
5796     {}
5797 
5798     VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfo( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5799 
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5800     CommandBufferInheritanceRenderingInfo( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5801       : CommandBufferInheritanceRenderingInfo( *reinterpret_cast<CommandBufferInheritanceRenderingInfo const *>( &rhs ) )
5802     {}
5803 
5804 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CommandBufferInheritanceRenderingInfoVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5805     CommandBufferInheritanceRenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags flags_, uint32_t viewMask_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_, VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, const void * pNext_ = nullptr )
5806     : pNext( pNext_ ), flags( flags_ ), viewMask( viewMask_ ), colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) ), pColorAttachmentFormats( colorAttachmentFormats_.data() ), depthAttachmentFormat( depthAttachmentFormat_ ), stencilAttachmentFormat( stencilAttachmentFormat_ ), rasterizationSamples( rasterizationSamples_ )
5807     {}
5808 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
5809 
5810 
5811     CommandBufferInheritanceRenderingInfo & operator=( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5812 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5813 
operator =VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5814     CommandBufferInheritanceRenderingInfo & operator=( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5815     {
5816       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo const *>( &rhs );
5817       return *this;
5818     }
5819 
5820 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5821     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5822     {
5823       pNext = pNext_;
5824       return *this;
5825     }
5826 
setFlagsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5827     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderingFlags flags_ ) VULKAN_HPP_NOEXCEPT
5828     {
5829       flags = flags_;
5830       return *this;
5831     }
5832 
setViewMaskVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5833     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
5834     {
5835       viewMask = viewMask_;
5836       return *this;
5837     }
5838 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5839     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
5840     {
5841       colorAttachmentCount = colorAttachmentCount_;
5842       return *this;
5843     }
5844 
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5845     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
5846     {
5847       pColorAttachmentFormats = pColorAttachmentFormats_;
5848       return *this;
5849     }
5850 
5851 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5852     CommandBufferInheritanceRenderingInfo & setColorAttachmentFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
5853     {
5854       colorAttachmentCount = static_cast<uint32_t>( colorAttachmentFormats_.size() );
5855       pColorAttachmentFormats = colorAttachmentFormats_.data();
5856       return *this;
5857     }
5858 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
5859 
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5860     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
5861     {
5862       depthAttachmentFormat = depthAttachmentFormat_;
5863       return *this;
5864     }
5865 
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5866     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
5867     {
5868       stencilAttachmentFormat = stencilAttachmentFormat_;
5869       return *this;
5870     }
5871 
setRasterizationSamplesVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5872     VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
5873     {
5874       rasterizationSamples = rasterizationSamples_;
5875       return *this;
5876     }
5877 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5878 
5879 
operator VkCommandBufferInheritanceRenderingInfo const&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5880     operator VkCommandBufferInheritanceRenderingInfo const &() const VULKAN_HPP_NOEXCEPT
5881     {
5882       return *reinterpret_cast<const VkCommandBufferInheritanceRenderingInfo*>( this );
5883     }
5884 
operator VkCommandBufferInheritanceRenderingInfo&VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5885     operator VkCommandBufferInheritanceRenderingInfo &() VULKAN_HPP_NOEXCEPT
5886     {
5887       return *reinterpret_cast<VkCommandBufferInheritanceRenderingInfo*>( this );
5888     }
5889 
5890 #if defined( VULKAN_HPP_USE_REFLECT )
5891 #if 14 <= VULKAN_HPP_CPP_VERSION
5892     auto
5893 #else
5894     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderingFlags const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Format * const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &>
5895 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5896       reflect() const VULKAN_HPP_NOEXCEPT
5897     {
5898       return std::tie( sType, pNext, flags, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat, rasterizationSamples );
5899     }
5900 #endif
5901 
5902 
5903 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
5904 auto operator<=>( CommandBufferInheritanceRenderingInfo const & ) const = default;
5905 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5906     bool operator==( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5907     {
5908 #if defined( VULKAN_HPP_USE_REFLECT )
5909       return this->reflect() == rhs.reflect();
5910 #else
5911       return ( sType == rhs.sType )
5912           && ( pNext == rhs.pNext )
5913           && ( flags == rhs.flags )
5914           && ( viewMask == rhs.viewMask )
5915           && ( colorAttachmentCount == rhs.colorAttachmentCount )
5916           && ( pColorAttachmentFormats == rhs.pColorAttachmentFormats )
5917           && ( depthAttachmentFormat == rhs.depthAttachmentFormat )
5918           && ( stencilAttachmentFormat == rhs.stencilAttachmentFormat )
5919           && ( rasterizationSamples == rhs.rasterizationSamples );
5920 #endif
5921     }
5922 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo5923     bool operator!=( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
5924     {
5925       return !operator==( rhs );
5926     }
5927 #endif
5928 
5929     public:
5930     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceRenderingInfo;
5931     const void * pNext = {};
5932     VULKAN_HPP_NAMESPACE::RenderingFlags flags = {};
5933     uint32_t viewMask = {};
5934     uint32_t colorAttachmentCount = {};
5935     const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {};
5936     VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5937     VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
5938     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
5939 
5940   };
5941 
5942   template <>
5943   struct CppType<StructureType, StructureType::eCommandBufferInheritanceRenderingInfo>
5944   {
5945     using Type = CommandBufferInheritanceRenderingInfo;
5946   };
5947   using CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo;
5948 
5949   struct CommandBufferSubmitInfo
5950   {
5951     using NativeType = VkCommandBufferSubmitInfo;
5952 
5953     static const bool allowDuplicate = false;
5954     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferSubmitInfo;
5955 
5956 
5957 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandBufferSubmitInfoVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo5958 VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo(VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ = {}, uint32_t deviceMask_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
5959     : pNext( pNext_ ), commandBuffer( commandBuffer_ ), deviceMask( deviceMask_ )
5960     {}
5961 
5962     VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5963 
CommandBufferSubmitInfoVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo5964     CommandBufferSubmitInfo( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5965       : CommandBufferSubmitInfo( *reinterpret_cast<CommandBufferSubmitInfo const *>( &rhs ) )
5966     {}
5967 
5968 
5969     CommandBufferSubmitInfo & operator=( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
5970 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
5971 
operator =VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo5972     CommandBufferSubmitInfo & operator=( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
5973     {
5974       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo const *>( &rhs );
5975       return *this;
5976     }
5977 
5978 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo5979     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
5980     {
5981       pNext = pNext_;
5982       return *this;
5983     }
5984 
setCommandBufferVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo5985     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setCommandBuffer( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ ) VULKAN_HPP_NOEXCEPT
5986     {
5987       commandBuffer = commandBuffer_;
5988       return *this;
5989     }
5990 
setDeviceMaskVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo5991     VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
5992     {
5993       deviceMask = deviceMask_;
5994       return *this;
5995     }
5996 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
5997 
5998 
operator VkCommandBufferSubmitInfo const&VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo5999     operator VkCommandBufferSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
6000     {
6001       return *reinterpret_cast<const VkCommandBufferSubmitInfo*>( this );
6002     }
6003 
operator VkCommandBufferSubmitInfo&VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo6004     operator VkCommandBufferSubmitInfo &() VULKAN_HPP_NOEXCEPT
6005     {
6006       return *reinterpret_cast<VkCommandBufferSubmitInfo*>( this );
6007     }
6008 
6009 #if defined( VULKAN_HPP_USE_REFLECT )
6010 #if 14 <= VULKAN_HPP_CPP_VERSION
6011     auto
6012 #else
6013     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CommandBuffer const &, uint32_t const &>
6014 #endif
reflectVULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo6015       reflect() const VULKAN_HPP_NOEXCEPT
6016     {
6017       return std::tie( sType, pNext, commandBuffer, deviceMask );
6018     }
6019 #endif
6020 
6021 
6022 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
6023 auto operator<=>( CommandBufferSubmitInfo const & ) const = default;
6024 #else
operator ==VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo6025     bool operator==( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6026     {
6027 #if defined( VULKAN_HPP_USE_REFLECT )
6028       return this->reflect() == rhs.reflect();
6029 #else
6030       return ( sType == rhs.sType )
6031           && ( pNext == rhs.pNext )
6032           && ( commandBuffer == rhs.commandBuffer )
6033           && ( deviceMask == rhs.deviceMask );
6034 #endif
6035     }
6036 
operator !=VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo6037     bool operator!=( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6038     {
6039       return !operator==( rhs );
6040     }
6041 #endif
6042 
6043     public:
6044     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferSubmitInfo;
6045     const void * pNext = {};
6046     VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer = {};
6047     uint32_t deviceMask = {};
6048 
6049   };
6050 
6051   template <>
6052   struct CppType<StructureType, StructureType::eCommandBufferSubmitInfo>
6053   {
6054     using Type = CommandBufferSubmitInfo;
6055   };
6056   using CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo;
6057 
6058   struct CommandPoolCreateInfo
6059   {
6060     using NativeType = VkCommandPoolCreateInfo;
6061 
6062     static const bool allowDuplicate = false;
6063     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandPoolCreateInfo;
6064 
6065 
6066 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandPoolCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6067 VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo(VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ = {}, uint32_t queueFamilyIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
6068     : pNext( pNext_ ), flags( flags_ ), queueFamilyIndex( queueFamilyIndex_ )
6069     {}
6070 
6071     VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6072 
CommandPoolCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6073     CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6074       : CommandPoolCreateInfo( *reinterpret_cast<CommandPoolCreateInfo const *>( &rhs ) )
6075     {}
6076 
6077 
6078     CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6079 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6080 
operator =VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6081     CommandPoolCreateInfo & operator=( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6082     {
6083       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const *>( &rhs );
6084       return *this;
6085     }
6086 
6087 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6088     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6089     {
6090       pNext = pNext_;
6091       return *this;
6092     }
6093 
setFlagsVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6094     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
6095     {
6096       flags = flags_;
6097       return *this;
6098     }
6099 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6100     VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
6101     {
6102       queueFamilyIndex = queueFamilyIndex_;
6103       return *this;
6104     }
6105 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6106 
6107 
operator VkCommandPoolCreateInfo const&VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6108     operator VkCommandPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
6109     {
6110       return *reinterpret_cast<const VkCommandPoolCreateInfo*>( this );
6111     }
6112 
operator VkCommandPoolCreateInfo&VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6113     operator VkCommandPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
6114     {
6115       return *reinterpret_cast<VkCommandPoolCreateInfo*>( this );
6116     }
6117 
6118 #if defined( VULKAN_HPP_USE_REFLECT )
6119 #if 14 <= VULKAN_HPP_CPP_VERSION
6120     auto
6121 #else
6122     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags const &, uint32_t const &>
6123 #endif
reflectVULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6124       reflect() const VULKAN_HPP_NOEXCEPT
6125     {
6126       return std::tie( sType, pNext, flags, queueFamilyIndex );
6127     }
6128 #endif
6129 
6130 
6131 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
6132 auto operator<=>( CommandPoolCreateInfo const & ) const = default;
6133 #else
operator ==VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6134     bool operator==( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6135     {
6136 #if defined( VULKAN_HPP_USE_REFLECT )
6137       return this->reflect() == rhs.reflect();
6138 #else
6139       return ( sType == rhs.sType )
6140           && ( pNext == rhs.pNext )
6141           && ( flags == rhs.flags )
6142           && ( queueFamilyIndex == rhs.queueFamilyIndex );
6143 #endif
6144     }
6145 
operator !=VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo6146     bool operator!=( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6147     {
6148       return !operator==( rhs );
6149     }
6150 #endif
6151 
6152     public:
6153     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandPoolCreateInfo;
6154     const void * pNext = {};
6155     VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags = {};
6156     uint32_t queueFamilyIndex = {};
6157 
6158   };
6159 
6160   template <>
6161   struct CppType<StructureType, StructureType::eCommandPoolCreateInfo>
6162   {
6163     using Type = CommandPoolCreateInfo;
6164   };
6165 
6166   struct CommandPoolMemoryConsumption
6167   {
6168     using NativeType = VkCommandPoolMemoryConsumption;
6169 
6170     static const bool allowDuplicate = false;
6171     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandPoolMemoryConsumption;
6172 
6173 
6174 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandPoolMemoryConsumptionVULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption6175 VULKAN_HPP_CONSTEXPR CommandPoolMemoryConsumption(VULKAN_HPP_NAMESPACE::DeviceSize commandPoolAllocated_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize commandPoolReservedSize_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize commandBufferAllocated_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
6176     : pNext( pNext_ ), commandPoolAllocated( commandPoolAllocated_ ), commandPoolReservedSize( commandPoolReservedSize_ ), commandBufferAllocated( commandBufferAllocated_ )
6177     {}
6178 
6179     VULKAN_HPP_CONSTEXPR CommandPoolMemoryConsumption( CommandPoolMemoryConsumption const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6180 
CommandPoolMemoryConsumptionVULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption6181     CommandPoolMemoryConsumption( VkCommandPoolMemoryConsumption const & rhs ) VULKAN_HPP_NOEXCEPT
6182       : CommandPoolMemoryConsumption( *reinterpret_cast<CommandPoolMemoryConsumption const *>( &rhs ) )
6183     {}
6184 
6185 
6186     CommandPoolMemoryConsumption & operator=( CommandPoolMemoryConsumption const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6187 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6188 
operator =VULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption6189     CommandPoolMemoryConsumption & operator=( VkCommandPoolMemoryConsumption const & rhs ) VULKAN_HPP_NOEXCEPT
6190     {
6191       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption const *>( &rhs );
6192       return *this;
6193     }
6194 
6195 
operator VkCommandPoolMemoryConsumption const&VULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption6196     operator VkCommandPoolMemoryConsumption const &() const VULKAN_HPP_NOEXCEPT
6197     {
6198       return *reinterpret_cast<const VkCommandPoolMemoryConsumption*>( this );
6199     }
6200 
operator VkCommandPoolMemoryConsumption&VULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption6201     operator VkCommandPoolMemoryConsumption &() VULKAN_HPP_NOEXCEPT
6202     {
6203       return *reinterpret_cast<VkCommandPoolMemoryConsumption*>( this );
6204     }
6205 
6206 #if defined( VULKAN_HPP_USE_REFLECT )
6207 #if 14 <= VULKAN_HPP_CPP_VERSION
6208     auto
6209 #else
6210     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
6211 #endif
reflectVULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption6212       reflect() const VULKAN_HPP_NOEXCEPT
6213     {
6214       return std::tie( sType, pNext, commandPoolAllocated, commandPoolReservedSize, commandBufferAllocated );
6215     }
6216 #endif
6217 
6218 
6219 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
6220 auto operator<=>( CommandPoolMemoryConsumption const & ) const = default;
6221 #else
operator ==VULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption6222     bool operator==( CommandPoolMemoryConsumption const & rhs ) const VULKAN_HPP_NOEXCEPT
6223     {
6224 #if defined( VULKAN_HPP_USE_REFLECT )
6225       return this->reflect() == rhs.reflect();
6226 #else
6227       return ( sType == rhs.sType )
6228           && ( pNext == rhs.pNext )
6229           && ( commandPoolAllocated == rhs.commandPoolAllocated )
6230           && ( commandPoolReservedSize == rhs.commandPoolReservedSize )
6231           && ( commandBufferAllocated == rhs.commandBufferAllocated );
6232 #endif
6233     }
6234 
operator !=VULKAN_HPP_NAMESPACE::CommandPoolMemoryConsumption6235     bool operator!=( CommandPoolMemoryConsumption const & rhs ) const VULKAN_HPP_NOEXCEPT
6236     {
6237       return !operator==( rhs );
6238     }
6239 #endif
6240 
6241     public:
6242     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandPoolMemoryConsumption;
6243     void * pNext = {};
6244     VULKAN_HPP_NAMESPACE::DeviceSize commandPoolAllocated = {};
6245     VULKAN_HPP_NAMESPACE::DeviceSize commandPoolReservedSize = {};
6246     VULKAN_HPP_NAMESPACE::DeviceSize commandBufferAllocated = {};
6247 
6248   };
6249 
6250   template <>
6251   struct CppType<StructureType, StructureType::eCommandPoolMemoryConsumption>
6252   {
6253     using Type = CommandPoolMemoryConsumption;
6254   };
6255 
6256   struct CommandPoolMemoryReservationCreateInfo
6257   {
6258     using NativeType = VkCommandPoolMemoryReservationCreateInfo;
6259 
6260     static const bool allowDuplicate = false;
6261     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandPoolMemoryReservationCreateInfo;
6262 
6263 
6264 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CommandPoolMemoryReservationCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6265 VULKAN_HPP_CONSTEXPR CommandPoolMemoryReservationCreateInfo(VULKAN_HPP_NAMESPACE::DeviceSize commandPoolReservedSize_ = {}, uint32_t commandPoolMaxCommandBuffers_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
6266     : pNext( pNext_ ), commandPoolReservedSize( commandPoolReservedSize_ ), commandPoolMaxCommandBuffers( commandPoolMaxCommandBuffers_ )
6267     {}
6268 
6269     VULKAN_HPP_CONSTEXPR CommandPoolMemoryReservationCreateInfo( CommandPoolMemoryReservationCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6270 
CommandPoolMemoryReservationCreateInfoVULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6271     CommandPoolMemoryReservationCreateInfo( VkCommandPoolMemoryReservationCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6272       : CommandPoolMemoryReservationCreateInfo( *reinterpret_cast<CommandPoolMemoryReservationCreateInfo const *>( &rhs ) )
6273     {}
6274 
6275 
6276     CommandPoolMemoryReservationCreateInfo & operator=( CommandPoolMemoryReservationCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6277 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6278 
operator =VULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6279     CommandPoolMemoryReservationCreateInfo & operator=( VkCommandPoolMemoryReservationCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6280     {
6281       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo const *>( &rhs );
6282       return *this;
6283     }
6284 
6285 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6286     VULKAN_HPP_CONSTEXPR_14 CommandPoolMemoryReservationCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6287     {
6288       pNext = pNext_;
6289       return *this;
6290     }
6291 
setCommandPoolReservedSizeVULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6292     VULKAN_HPP_CONSTEXPR_14 CommandPoolMemoryReservationCreateInfo & setCommandPoolReservedSize( VULKAN_HPP_NAMESPACE::DeviceSize commandPoolReservedSize_ ) VULKAN_HPP_NOEXCEPT
6293     {
6294       commandPoolReservedSize = commandPoolReservedSize_;
6295       return *this;
6296     }
6297 
setCommandPoolMaxCommandBuffersVULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6298     VULKAN_HPP_CONSTEXPR_14 CommandPoolMemoryReservationCreateInfo & setCommandPoolMaxCommandBuffers( uint32_t commandPoolMaxCommandBuffers_ ) VULKAN_HPP_NOEXCEPT
6299     {
6300       commandPoolMaxCommandBuffers = commandPoolMaxCommandBuffers_;
6301       return *this;
6302     }
6303 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6304 
6305 
operator VkCommandPoolMemoryReservationCreateInfo const&VULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6306     operator VkCommandPoolMemoryReservationCreateInfo const &() const VULKAN_HPP_NOEXCEPT
6307     {
6308       return *reinterpret_cast<const VkCommandPoolMemoryReservationCreateInfo*>( this );
6309     }
6310 
operator VkCommandPoolMemoryReservationCreateInfo&VULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6311     operator VkCommandPoolMemoryReservationCreateInfo &() VULKAN_HPP_NOEXCEPT
6312     {
6313       return *reinterpret_cast<VkCommandPoolMemoryReservationCreateInfo*>( this );
6314     }
6315 
6316 #if defined( VULKAN_HPP_USE_REFLECT )
6317 #if 14 <= VULKAN_HPP_CPP_VERSION
6318     auto
6319 #else
6320     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
6321 #endif
reflectVULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6322       reflect() const VULKAN_HPP_NOEXCEPT
6323     {
6324       return std::tie( sType, pNext, commandPoolReservedSize, commandPoolMaxCommandBuffers );
6325     }
6326 #endif
6327 
6328 
6329 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
6330 auto operator<=>( CommandPoolMemoryReservationCreateInfo const & ) const = default;
6331 #else
operator ==VULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6332     bool operator==( CommandPoolMemoryReservationCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6333     {
6334 #if defined( VULKAN_HPP_USE_REFLECT )
6335       return this->reflect() == rhs.reflect();
6336 #else
6337       return ( sType == rhs.sType )
6338           && ( pNext == rhs.pNext )
6339           && ( commandPoolReservedSize == rhs.commandPoolReservedSize )
6340           && ( commandPoolMaxCommandBuffers == rhs.commandPoolMaxCommandBuffers );
6341 #endif
6342     }
6343 
operator !=VULKAN_HPP_NAMESPACE::CommandPoolMemoryReservationCreateInfo6344     bool operator!=( CommandPoolMemoryReservationCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6345     {
6346       return !operator==( rhs );
6347     }
6348 #endif
6349 
6350     public:
6351     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandPoolMemoryReservationCreateInfo;
6352     const void * pNext = {};
6353     VULKAN_HPP_NAMESPACE::DeviceSize commandPoolReservedSize = {};
6354     uint32_t commandPoolMaxCommandBuffers = {};
6355 
6356   };
6357 
6358   template <>
6359   struct CppType<StructureType, StructureType::eCommandPoolMemoryReservationCreateInfo>
6360   {
6361     using Type = CommandPoolMemoryReservationCreateInfo;
6362   };
6363 
6364   struct ComponentMapping
6365   {
6366     using NativeType = VkComponentMapping;
6367 
6368 
6369 
6370 
6371 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComponentMappingVULKAN_HPP_NAMESPACE::ComponentMapping6372 VULKAN_HPP_CONSTEXPR ComponentMapping(VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity) VULKAN_HPP_NOEXCEPT
6373     : r( r_ ), g( g_ ), b( b_ ), a( a_ )
6374     {}
6375 
6376     VULKAN_HPP_CONSTEXPR ComponentMapping( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6377 
ComponentMappingVULKAN_HPP_NAMESPACE::ComponentMapping6378     ComponentMapping( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
6379       : ComponentMapping( *reinterpret_cast<ComponentMapping const *>( &rhs ) )
6380     {}
6381 
6382 
6383     ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6384 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6385 
operator =VULKAN_HPP_NAMESPACE::ComponentMapping6386     ComponentMapping & operator=( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT
6387     {
6388       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComponentMapping const *>( &rhs );
6389       return *this;
6390     }
6391 
6392 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRVULKAN_HPP_NAMESPACE::ComponentMapping6393     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setR( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ ) VULKAN_HPP_NOEXCEPT
6394     {
6395       r = r_;
6396       return *this;
6397     }
6398 
setGVULKAN_HPP_NAMESPACE::ComponentMapping6399     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setG( VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ ) VULKAN_HPP_NOEXCEPT
6400     {
6401       g = g_;
6402       return *this;
6403     }
6404 
setBVULKAN_HPP_NAMESPACE::ComponentMapping6405     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setB( VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ ) VULKAN_HPP_NOEXCEPT
6406     {
6407       b = b_;
6408       return *this;
6409     }
6410 
setAVULKAN_HPP_NAMESPACE::ComponentMapping6411     VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setA( VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ ) VULKAN_HPP_NOEXCEPT
6412     {
6413       a = a_;
6414       return *this;
6415     }
6416 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6417 
6418 
operator VkComponentMapping const&VULKAN_HPP_NAMESPACE::ComponentMapping6419     operator VkComponentMapping const &() const VULKAN_HPP_NOEXCEPT
6420     {
6421       return *reinterpret_cast<const VkComponentMapping*>( this );
6422     }
6423 
operator VkComponentMapping&VULKAN_HPP_NAMESPACE::ComponentMapping6424     operator VkComponentMapping &() VULKAN_HPP_NOEXCEPT
6425     {
6426       return *reinterpret_cast<VkComponentMapping*>( this );
6427     }
6428 
6429 #if defined( VULKAN_HPP_USE_REFLECT )
6430 #if 14 <= VULKAN_HPP_CPP_VERSION
6431     auto
6432 #else
6433     std::tuple<VULKAN_HPP_NAMESPACE::ComponentSwizzle const &, VULKAN_HPP_NAMESPACE::ComponentSwizzle const &, VULKAN_HPP_NAMESPACE::ComponentSwizzle const &, VULKAN_HPP_NAMESPACE::ComponentSwizzle const &>
6434 #endif
reflectVULKAN_HPP_NAMESPACE::ComponentMapping6435       reflect() const VULKAN_HPP_NOEXCEPT
6436     {
6437       return std::tie( r, g, b, a );
6438     }
6439 #endif
6440 
6441 
6442 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
6443 auto operator<=>( ComponentMapping const & ) const = default;
6444 #else
operator ==VULKAN_HPP_NAMESPACE::ComponentMapping6445     bool operator==( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT
6446     {
6447 #if defined( VULKAN_HPP_USE_REFLECT )
6448       return this->reflect() == rhs.reflect();
6449 #else
6450       return ( r == rhs.r )
6451           && ( g == rhs.g )
6452           && ( b == rhs.b )
6453           && ( a == rhs.a );
6454 #endif
6455     }
6456 
operator !=VULKAN_HPP_NAMESPACE::ComponentMapping6457     bool operator!=( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT
6458     {
6459       return !operator==( rhs );
6460     }
6461 #endif
6462 
6463     public:
6464     VULKAN_HPP_NAMESPACE::ComponentSwizzle r = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
6465     VULKAN_HPP_NAMESPACE::ComponentSwizzle g = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
6466     VULKAN_HPP_NAMESPACE::ComponentSwizzle b = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
6467     VULKAN_HPP_NAMESPACE::ComponentSwizzle a = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity;
6468 
6469   };
6470 
6471   struct SpecializationMapEntry
6472   {
6473     using NativeType = VkSpecializationMapEntry;
6474 
6475 
6476 
6477 
6478 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SpecializationMapEntryVULKAN_HPP_NAMESPACE::SpecializationMapEntry6479 VULKAN_HPP_CONSTEXPR SpecializationMapEntry(uint32_t constantID_ = {}, uint32_t offset_ = {}, size_t size_ = {}) VULKAN_HPP_NOEXCEPT
6480     : constantID( constantID_ ), offset( offset_ ), size( size_ )
6481     {}
6482 
6483     VULKAN_HPP_CONSTEXPR SpecializationMapEntry( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6484 
SpecializationMapEntryVULKAN_HPP_NAMESPACE::SpecializationMapEntry6485     SpecializationMapEntry( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
6486       : SpecializationMapEntry( *reinterpret_cast<SpecializationMapEntry const *>( &rhs ) )
6487     {}
6488 
6489 
6490     SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6491 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6492 
operator =VULKAN_HPP_NAMESPACE::SpecializationMapEntry6493     SpecializationMapEntry & operator=( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT
6494     {
6495       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationMapEntry const *>( &rhs );
6496       return *this;
6497     }
6498 
6499 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setConstantIDVULKAN_HPP_NAMESPACE::SpecializationMapEntry6500     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setConstantID( uint32_t constantID_ ) VULKAN_HPP_NOEXCEPT
6501     {
6502       constantID = constantID_;
6503       return *this;
6504     }
6505 
setOffsetVULKAN_HPP_NAMESPACE::SpecializationMapEntry6506     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
6507     {
6508       offset = offset_;
6509       return *this;
6510     }
6511 
setSizeVULKAN_HPP_NAMESPACE::SpecializationMapEntry6512     VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setSize( size_t size_ ) VULKAN_HPP_NOEXCEPT
6513     {
6514       size = size_;
6515       return *this;
6516     }
6517 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6518 
6519 
operator VkSpecializationMapEntry const&VULKAN_HPP_NAMESPACE::SpecializationMapEntry6520     operator VkSpecializationMapEntry const &() const VULKAN_HPP_NOEXCEPT
6521     {
6522       return *reinterpret_cast<const VkSpecializationMapEntry*>( this );
6523     }
6524 
operator VkSpecializationMapEntry&VULKAN_HPP_NAMESPACE::SpecializationMapEntry6525     operator VkSpecializationMapEntry &() VULKAN_HPP_NOEXCEPT
6526     {
6527       return *reinterpret_cast<VkSpecializationMapEntry*>( this );
6528     }
6529 
6530 #if defined( VULKAN_HPP_USE_REFLECT )
6531 #if 14 <= VULKAN_HPP_CPP_VERSION
6532     auto
6533 #else
6534     std::tuple<uint32_t const &, uint32_t const &, size_t const &>
6535 #endif
reflectVULKAN_HPP_NAMESPACE::SpecializationMapEntry6536       reflect() const VULKAN_HPP_NOEXCEPT
6537     {
6538       return std::tie( constantID, offset, size );
6539     }
6540 #endif
6541 
6542 
6543 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
6544 auto operator<=>( SpecializationMapEntry const & ) const = default;
6545 #else
operator ==VULKAN_HPP_NAMESPACE::SpecializationMapEntry6546     bool operator==( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
6547     {
6548 #if defined( VULKAN_HPP_USE_REFLECT )
6549       return this->reflect() == rhs.reflect();
6550 #else
6551       return ( constantID == rhs.constantID )
6552           && ( offset == rhs.offset )
6553           && ( size == rhs.size );
6554 #endif
6555     }
6556 
operator !=VULKAN_HPP_NAMESPACE::SpecializationMapEntry6557     bool operator!=( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
6558     {
6559       return !operator==( rhs );
6560     }
6561 #endif
6562 
6563     public:
6564     uint32_t constantID = {};
6565     uint32_t offset = {};
6566     size_t size = {};
6567 
6568   };
6569 
6570   struct SpecializationInfo
6571   {
6572     using NativeType = VkSpecializationInfo;
6573 
6574 
6575 
6576 
6577 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo6578 VULKAN_HPP_CONSTEXPR SpecializationInfo(uint32_t mapEntryCount_ = {}, const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_ = {}, size_t dataSize_ = {}, const void * pData_ = {}) VULKAN_HPP_NOEXCEPT
6579     : mapEntryCount( mapEntryCount_ ), pMapEntries( pMapEntries_ ), dataSize( dataSize_ ), pData( pData_ )
6580     {}
6581 
6582     VULKAN_HPP_CONSTEXPR SpecializationInfo( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6583 
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo6584     SpecializationInfo( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6585       : SpecializationInfo( *reinterpret_cast<SpecializationInfo const *>( &rhs ) )
6586     {}
6587 
6588 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
6589     template <typename T>
SpecializationInfoVULKAN_HPP_NAMESPACE::SpecializationInfo6590     SpecializationInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const & mapEntries_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ = {} )
6591     : mapEntryCount( static_cast<uint32_t>( mapEntries_.size() ) ), pMapEntries( mapEntries_.data() ), dataSize( data_.size() * sizeof(T) ), pData( data_.data() )
6592     {}
6593 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6594 
6595 
6596     SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6597 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6598 
operator =VULKAN_HPP_NAMESPACE::SpecializationInfo6599     SpecializationInfo & operator=( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6600     {
6601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SpecializationInfo const *>( &rhs );
6602       return *this;
6603     }
6604 
6605 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMapEntryCountVULKAN_HPP_NAMESPACE::SpecializationInfo6606     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) VULKAN_HPP_NOEXCEPT
6607     {
6608       mapEntryCount = mapEntryCount_;
6609       return *this;
6610     }
6611 
setPMapEntriesVULKAN_HPP_NAMESPACE::SpecializationInfo6612     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPMapEntries( const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries_ ) VULKAN_HPP_NOEXCEPT
6613     {
6614       pMapEntries = pMapEntries_;
6615       return *this;
6616     }
6617 
6618 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setMapEntriesVULKAN_HPP_NAMESPACE::SpecializationInfo6619     SpecializationInfo & setMapEntries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SpecializationMapEntry> const & mapEntries_ ) VULKAN_HPP_NOEXCEPT
6620     {
6621       mapEntryCount = static_cast<uint32_t>( mapEntries_.size() );
6622       pMapEntries = mapEntries_.data();
6623       return *this;
6624     }
6625 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6626 
setDataSizeVULKAN_HPP_NAMESPACE::SpecializationInfo6627     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT
6628     {
6629       dataSize = dataSize_;
6630       return *this;
6631     }
6632 
setPDataVULKAN_HPP_NAMESPACE::SpecializationInfo6633     VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
6634     {
6635       pData = pData_;
6636       return *this;
6637     }
6638 
6639 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
6640     template <typename T>
setDataVULKAN_HPP_NAMESPACE::SpecializationInfo6641     SpecializationInfo & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
6642     {
6643       dataSize = data_.size() * sizeof(T);
6644       pData = data_.data();
6645       return *this;
6646     }
6647 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
6648 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6649 
6650 
operator VkSpecializationInfo const&VULKAN_HPP_NAMESPACE::SpecializationInfo6651     operator VkSpecializationInfo const &() const VULKAN_HPP_NOEXCEPT
6652     {
6653       return *reinterpret_cast<const VkSpecializationInfo*>( this );
6654     }
6655 
operator VkSpecializationInfo&VULKAN_HPP_NAMESPACE::SpecializationInfo6656     operator VkSpecializationInfo &() VULKAN_HPP_NOEXCEPT
6657     {
6658       return *reinterpret_cast<VkSpecializationInfo*>( this );
6659     }
6660 
6661 #if defined( VULKAN_HPP_USE_REFLECT )
6662 #if 14 <= VULKAN_HPP_CPP_VERSION
6663     auto
6664 #else
6665     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * const &, size_t const &, const void * const &>
6666 #endif
reflectVULKAN_HPP_NAMESPACE::SpecializationInfo6667       reflect() const VULKAN_HPP_NOEXCEPT
6668     {
6669       return std::tie( mapEntryCount, pMapEntries, dataSize, pData );
6670     }
6671 #endif
6672 
6673 
6674 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
6675 auto operator<=>( SpecializationInfo const & ) const = default;
6676 #else
operator ==VULKAN_HPP_NAMESPACE::SpecializationInfo6677     bool operator==( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6678     {
6679 #if defined( VULKAN_HPP_USE_REFLECT )
6680       return this->reflect() == rhs.reflect();
6681 #else
6682       return ( mapEntryCount == rhs.mapEntryCount )
6683           && ( pMapEntries == rhs.pMapEntries )
6684           && ( dataSize == rhs.dataSize )
6685           && ( pData == rhs.pData );
6686 #endif
6687     }
6688 
operator !=VULKAN_HPP_NAMESPACE::SpecializationInfo6689     bool operator!=( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6690     {
6691       return !operator==( rhs );
6692     }
6693 #endif
6694 
6695     public:
6696     uint32_t mapEntryCount = {};
6697     const VULKAN_HPP_NAMESPACE::SpecializationMapEntry * pMapEntries = {};
6698     size_t dataSize = {};
6699     const void * pData = {};
6700 
6701   };
6702 
6703   struct PipelineShaderStageCreateInfo
6704   {
6705     using NativeType = VkPipelineShaderStageCreateInfo;
6706 
6707     static const bool allowDuplicate = false;
6708     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageCreateInfo;
6709 
6710 
6711 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6712 VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo(VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex, VULKAN_HPP_NAMESPACE::ShaderModule module_ = {}, const char * pName_ = {}, const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
6713     : pNext( pNext_ ), flags( flags_ ), stage( stage_ ), module( module_ ), pName( pName_ ), pSpecializationInfo( pSpecializationInfo_ )
6714     {}
6715 
6716     VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6717 
PipelineShaderStageCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6718     PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6719       : PipelineShaderStageCreateInfo( *reinterpret_cast<PipelineShaderStageCreateInfo const *>( &rhs ) )
6720     {}
6721 
6722 
6723     PipelineShaderStageCreateInfo & operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6724 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6725 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6726     PipelineShaderStageCreateInfo & operator=( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6727     {
6728       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const *>( &rhs );
6729       return *this;
6730     }
6731 
6732 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6733     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6734     {
6735       pNext = pNext_;
6736       return *this;
6737     }
6738 
setFlagsVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6739     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
6740     {
6741       flags = flags_;
6742       return *this;
6743     }
6744 
setStageVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6745     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setStage( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ ) VULKAN_HPP_NOEXCEPT
6746     {
6747       stage = stage_;
6748       return *this;
6749     }
6750 
setModuleVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6751     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setModule( VULKAN_HPP_NAMESPACE::ShaderModule module_ ) VULKAN_HPP_NOEXCEPT
6752     {
6753       module = module_;
6754       return *this;
6755     }
6756 
setPNameVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6757     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPName( const char * pName_ ) VULKAN_HPP_NOEXCEPT
6758     {
6759       pName = pName_;
6760       return *this;
6761     }
6762 
setPSpecializationInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6763     VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPSpecializationInfo( const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo_ ) VULKAN_HPP_NOEXCEPT
6764     {
6765       pSpecializationInfo = pSpecializationInfo_;
6766       return *this;
6767     }
6768 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6769 
6770 
operator VkPipelineShaderStageCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6771     operator VkPipelineShaderStageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
6772     {
6773       return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>( this );
6774     }
6775 
operator VkPipelineShaderStageCreateInfo&VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6776     operator VkPipelineShaderStageCreateInfo &() VULKAN_HPP_NOEXCEPT
6777     {
6778       return *reinterpret_cast<VkPipelineShaderStageCreateInfo*>( this );
6779     }
6780 
6781 #if defined( VULKAN_HPP_USE_REFLECT )
6782 #if 14 <= VULKAN_HPP_CPP_VERSION
6783     auto
6784 #else
6785     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags const &, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits const &, VULKAN_HPP_NAMESPACE::ShaderModule const &, const char * const &, const VULKAN_HPP_NAMESPACE::SpecializationInfo * const &>
6786 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6787       reflect() const VULKAN_HPP_NOEXCEPT
6788     {
6789       return std::tie( sType, pNext, flags, stage, module, pName, pSpecializationInfo );
6790     }
6791 #endif
6792 
6793 
6794 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6795     std::strong_ordering operator<=>( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6796     {
6797       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
6798       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
6799       if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) return cmp;
6800       if ( auto cmp = stage <=> rhs.stage; cmp != 0 ) return cmp;
6801       if ( auto cmp = module <=> rhs.module; cmp != 0 ) return cmp;
6802      if ( pName != rhs.pName )
6803         if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 )
6804           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
6805       if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 ) return cmp;
6806 
6807       return std::strong_ordering::equivalent;
6808     }
6809 #endif
6810 
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6811     bool operator==( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6812     {
6813       return ( sType == rhs.sType )
6814           && ( pNext == rhs.pNext )
6815           && ( flags == rhs.flags )
6816           && ( stage == rhs.stage )
6817           && ( module == rhs.module )
6818           && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) )
6819           && ( pSpecializationInfo == rhs.pSpecializationInfo );
6820     }
6821 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo6822     bool operator!=( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6823     {
6824       return !operator==( rhs );
6825     }
6826 
6827     public:
6828     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageCreateInfo;
6829     const void * pNext = {};
6830     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags = {};
6831     VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex;
6832     VULKAN_HPP_NAMESPACE::ShaderModule module = {};
6833     const char * pName = {};
6834     const VULKAN_HPP_NAMESPACE::SpecializationInfo * pSpecializationInfo = {};
6835 
6836   };
6837 
6838   template <>
6839   struct CppType<StructureType, StructureType::ePipelineShaderStageCreateInfo>
6840   {
6841     using Type = PipelineShaderStageCreateInfo;
6842   };
6843 
6844   struct ComputePipelineCreateInfo
6845   {
6846     using NativeType = VkComputePipelineCreateInfo;
6847 
6848     static const bool allowDuplicate = false;
6849     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eComputePipelineCreateInfo;
6850 
6851 
6852 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ComputePipelineCreateInfoVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6853 VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo(VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
6854     : pNext( pNext_ ), flags( flags_ ), stage( stage_ ), layout( layout_ ), basePipelineHandle( basePipelineHandle_ ), basePipelineIndex( basePipelineIndex_ )
6855     {}
6856 
6857     VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6858 
ComputePipelineCreateInfoVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6859     ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6860       : ComputePipelineCreateInfo( *reinterpret_cast<ComputePipelineCreateInfo const *>( &rhs ) )
6861     {}
6862 
6863 
6864     ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6865 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6866 
operator =VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6867     ComputePipelineCreateInfo & operator=( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
6868     {
6869       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const *>( &rhs );
6870       return *this;
6871     }
6872 
6873 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6874     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
6875     {
6876       pNext = pNext_;
6877       return *this;
6878     }
6879 
setFlagsVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6880     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
6881     {
6882       flags = flags_;
6883       return *this;
6884     }
6885 
setStageVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6886     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setStage( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & stage_ ) VULKAN_HPP_NOEXCEPT
6887     {
6888       stage = stage_;
6889       return *this;
6890     }
6891 
setLayoutVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6892     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
6893     {
6894       layout = layout_;
6895       return *this;
6896     }
6897 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6898     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
6899     {
6900       basePipelineHandle = basePipelineHandle_;
6901       return *this;
6902     }
6903 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6904     VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
6905     {
6906       basePipelineIndex = basePipelineIndex_;
6907       return *this;
6908     }
6909 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
6910 
6911 
operator VkComputePipelineCreateInfo const&VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6912     operator VkComputePipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
6913     {
6914       return *reinterpret_cast<const VkComputePipelineCreateInfo*>( this );
6915     }
6916 
operator VkComputePipelineCreateInfo&VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6917     operator VkComputePipelineCreateInfo &() VULKAN_HPP_NOEXCEPT
6918     {
6919       return *reinterpret_cast<VkComputePipelineCreateInfo*>( this );
6920     }
6921 
6922 #if defined( VULKAN_HPP_USE_REFLECT )
6923 #if 14 <= VULKAN_HPP_CPP_VERSION
6924     auto
6925 #else
6926     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &, VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const &, VULKAN_HPP_NAMESPACE::PipelineLayout const &, VULKAN_HPP_NAMESPACE::Pipeline const &, int32_t const &>
6927 #endif
reflectVULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6928       reflect() const VULKAN_HPP_NOEXCEPT
6929     {
6930       return std::tie( sType, pNext, flags, stage, layout, basePipelineHandle, basePipelineIndex );
6931     }
6932 #endif
6933 
6934 
6935 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
6936 auto operator<=>( ComputePipelineCreateInfo const & ) const = default;
6937 #else
operator ==VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6938     bool operator==( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6939     {
6940 #if defined( VULKAN_HPP_USE_REFLECT )
6941       return this->reflect() == rhs.reflect();
6942 #else
6943       return ( sType == rhs.sType )
6944           && ( pNext == rhs.pNext )
6945           && ( flags == rhs.flags )
6946           && ( stage == rhs.stage )
6947           && ( layout == rhs.layout )
6948           && ( basePipelineHandle == rhs.basePipelineHandle )
6949           && ( basePipelineIndex == rhs.basePipelineIndex );
6950 #endif
6951     }
6952 
operator !=VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo6953     bool operator!=( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
6954     {
6955       return !operator==( rhs );
6956     }
6957 #endif
6958 
6959     public:
6960     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eComputePipelineCreateInfo;
6961     const void * pNext = {};
6962     VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {};
6963     VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage = {};
6964     VULKAN_HPP_NAMESPACE::PipelineLayout layout = {};
6965     VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {};
6966     int32_t basePipelineIndex = {};
6967 
6968   };
6969 
6970   template <>
6971   struct CppType<StructureType, StructureType::eComputePipelineCreateInfo>
6972   {
6973     using Type = ComputePipelineCreateInfo;
6974   };
6975 
6976   struct ConformanceVersion
6977   {
6978     using NativeType = VkConformanceVersion;
6979 
6980 
6981 
6982 
6983 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ConformanceVersionVULKAN_HPP_NAMESPACE::ConformanceVersion6984 VULKAN_HPP_CONSTEXPR ConformanceVersion(uint8_t major_ = {}, uint8_t minor_ = {}, uint8_t subminor_ = {}, uint8_t patch_ = {}) VULKAN_HPP_NOEXCEPT
6985     : major( major_ ), minor( minor_ ), subminor( subminor_ ), patch( patch_ )
6986     {}
6987 
6988     VULKAN_HPP_CONSTEXPR ConformanceVersion( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6989 
ConformanceVersionVULKAN_HPP_NAMESPACE::ConformanceVersion6990     ConformanceVersion( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
6991       : ConformanceVersion( *reinterpret_cast<ConformanceVersion const *>( &rhs ) )
6992     {}
6993 
6994 
6995     ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default;
6996 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
6997 
operator =VULKAN_HPP_NAMESPACE::ConformanceVersion6998     ConformanceVersion & operator=( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT
6999     {
7000       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ConformanceVersion const *>( &rhs );
7001       return *this;
7002     }
7003 
7004 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setMajorVULKAN_HPP_NAMESPACE::ConformanceVersion7005     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMajor( uint8_t major_ ) VULKAN_HPP_NOEXCEPT
7006     {
7007       major = major_;
7008       return *this;
7009     }
7010 
setMinorVULKAN_HPP_NAMESPACE::ConformanceVersion7011     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMinor( uint8_t minor_ ) VULKAN_HPP_NOEXCEPT
7012     {
7013       minor = minor_;
7014       return *this;
7015     }
7016 
setSubminorVULKAN_HPP_NAMESPACE::ConformanceVersion7017     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setSubminor( uint8_t subminor_ ) VULKAN_HPP_NOEXCEPT
7018     {
7019       subminor = subminor_;
7020       return *this;
7021     }
7022 
setPatchVULKAN_HPP_NAMESPACE::ConformanceVersion7023     VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setPatch( uint8_t patch_ ) VULKAN_HPP_NOEXCEPT
7024     {
7025       patch = patch_;
7026       return *this;
7027     }
7028 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7029 
7030 
operator VkConformanceVersion const&VULKAN_HPP_NAMESPACE::ConformanceVersion7031     operator VkConformanceVersion const &() const VULKAN_HPP_NOEXCEPT
7032     {
7033       return *reinterpret_cast<const VkConformanceVersion*>( this );
7034     }
7035 
operator VkConformanceVersion&VULKAN_HPP_NAMESPACE::ConformanceVersion7036     operator VkConformanceVersion &() VULKAN_HPP_NOEXCEPT
7037     {
7038       return *reinterpret_cast<VkConformanceVersion*>( this );
7039     }
7040 
7041 #if defined( VULKAN_HPP_USE_REFLECT )
7042 #if 14 <= VULKAN_HPP_CPP_VERSION
7043     auto
7044 #else
7045     std::tuple<uint8_t const &, uint8_t const &, uint8_t const &, uint8_t const &>
7046 #endif
reflectVULKAN_HPP_NAMESPACE::ConformanceVersion7047       reflect() const VULKAN_HPP_NOEXCEPT
7048     {
7049       return std::tie( major, minor, subminor, patch );
7050     }
7051 #endif
7052 
7053 
7054 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
7055 auto operator<=>( ConformanceVersion const & ) const = default;
7056 #else
operator ==VULKAN_HPP_NAMESPACE::ConformanceVersion7057     bool operator==( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT
7058     {
7059 #if defined( VULKAN_HPP_USE_REFLECT )
7060       return this->reflect() == rhs.reflect();
7061 #else
7062       return ( major == rhs.major )
7063           && ( minor == rhs.minor )
7064           && ( subminor == rhs.subminor )
7065           && ( patch == rhs.patch );
7066 #endif
7067     }
7068 
operator !=VULKAN_HPP_NAMESPACE::ConformanceVersion7069     bool operator!=( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT
7070     {
7071       return !operator==( rhs );
7072     }
7073 #endif
7074 
7075     public:
7076     uint8_t major = {};
7077     uint8_t minor = {};
7078     uint8_t subminor = {};
7079     uint8_t patch = {};
7080 
7081   };
7082   using ConformanceVersionKHR = ConformanceVersion;
7083 
7084   struct CopyBufferInfo2
7085   {
7086     using NativeType = VkCopyBufferInfo2;
7087 
7088     static const bool allowDuplicate = false;
7089     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyBufferInfo2;
7090 
7091 
7092 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo27093 VULKAN_HPP_CONSTEXPR CopyBufferInfo2(VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ = {}, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ = {}, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
7094     : pNext( pNext_ ), srcBuffer( srcBuffer_ ), dstBuffer( dstBuffer_ ), regionCount( regionCount_ ), pRegions( pRegions_ )
7095     {}
7096 
7097     VULKAN_HPP_CONSTEXPR CopyBufferInfo2( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7098 
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo27099     CopyBufferInfo2( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
7100       : CopyBufferInfo2( *reinterpret_cast<CopyBufferInfo2 const *>( &rhs ) )
7101     {}
7102 
7103 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyBufferInfo2VULKAN_HPP_NAMESPACE::CopyBufferInfo27104     CopyBufferInfo2( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2> const & regions_, const void * pNext_ = nullptr )
7105     : pNext( pNext_ ), srcBuffer( srcBuffer_ ), dstBuffer( dstBuffer_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
7106     {}
7107 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7108 
7109 
7110     CopyBufferInfo2 & operator=( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7111 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7112 
operator =VULKAN_HPP_NAMESPACE::CopyBufferInfo27113     CopyBufferInfo2 & operator=( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
7114     {
7115       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferInfo2 const *>( &rhs );
7116       return *this;
7117     }
7118 
7119 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyBufferInfo27120     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7121     {
7122       pNext = pNext_;
7123       return *this;
7124     }
7125 
setSrcBufferVULKAN_HPP_NAMESPACE::CopyBufferInfo27126     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
7127     {
7128       srcBuffer = srcBuffer_;
7129       return *this;
7130     }
7131 
setDstBufferVULKAN_HPP_NAMESPACE::CopyBufferInfo27132     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
7133     {
7134       dstBuffer = dstBuffer_;
7135       return *this;
7136     }
7137 
setRegionCountVULKAN_HPP_NAMESPACE::CopyBufferInfo27138     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
7139     {
7140       regionCount = regionCount_;
7141       return *this;
7142     }
7143 
setPRegionsVULKAN_HPP_NAMESPACE::CopyBufferInfo27144     VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
7145     {
7146       pRegions = pRegions_;
7147       return *this;
7148     }
7149 
7150 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyBufferInfo27151     CopyBufferInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
7152     {
7153       regionCount = static_cast<uint32_t>( regions_.size() );
7154       pRegions = regions_.data();
7155       return *this;
7156     }
7157 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7158 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7159 
7160 
operator VkCopyBufferInfo2 const&VULKAN_HPP_NAMESPACE::CopyBufferInfo27161     operator VkCopyBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT
7162     {
7163       return *reinterpret_cast<const VkCopyBufferInfo2*>( this );
7164     }
7165 
operator VkCopyBufferInfo2&VULKAN_HPP_NAMESPACE::CopyBufferInfo27166     operator VkCopyBufferInfo2 &() VULKAN_HPP_NOEXCEPT
7167     {
7168       return *reinterpret_cast<VkCopyBufferInfo2*>( this );
7169     }
7170 
7171 #if defined( VULKAN_HPP_USE_REFLECT )
7172 #if 14 <= VULKAN_HPP_CPP_VERSION
7173     auto
7174 #else
7175     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::Buffer const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::BufferCopy2 * const &>
7176 #endif
reflectVULKAN_HPP_NAMESPACE::CopyBufferInfo27177       reflect() const VULKAN_HPP_NOEXCEPT
7178     {
7179       return std::tie( sType, pNext, srcBuffer, dstBuffer, regionCount, pRegions );
7180     }
7181 #endif
7182 
7183 
7184 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
7185 auto operator<=>( CopyBufferInfo2 const & ) const = default;
7186 #else
operator ==VULKAN_HPP_NAMESPACE::CopyBufferInfo27187     bool operator==( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7188     {
7189 #if defined( VULKAN_HPP_USE_REFLECT )
7190       return this->reflect() == rhs.reflect();
7191 #else
7192       return ( sType == rhs.sType )
7193           && ( pNext == rhs.pNext )
7194           && ( srcBuffer == rhs.srcBuffer )
7195           && ( dstBuffer == rhs.dstBuffer )
7196           && ( regionCount == rhs.regionCount )
7197           && ( pRegions == rhs.pRegions );
7198 #endif
7199     }
7200 
operator !=VULKAN_HPP_NAMESPACE::CopyBufferInfo27201     bool operator!=( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7202     {
7203       return !operator==( rhs );
7204     }
7205 #endif
7206 
7207     public:
7208     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferInfo2;
7209     const void * pNext = {};
7210     VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {};
7211     VULKAN_HPP_NAMESPACE::Buffer dstBuffer = {};
7212     uint32_t regionCount = {};
7213     const VULKAN_HPP_NAMESPACE::BufferCopy2 * pRegions = {};
7214 
7215   };
7216 
7217   template <>
7218   struct CppType<StructureType, StructureType::eCopyBufferInfo2>
7219   {
7220     using Type = CopyBufferInfo2;
7221   };
7222   using CopyBufferInfo2KHR = CopyBufferInfo2;
7223 
7224   struct CopyBufferToImageInfo2
7225   {
7226     using NativeType = VkCopyBufferToImageInfo2;
7227 
7228     static const bool allowDuplicate = false;
7229     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyBufferToImageInfo2;
7230 
7231 
7232 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27233 VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2(VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ = {}, VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
7234     : pNext( pNext_ ), srcBuffer( srcBuffer_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( regionCount_ ), pRegions( pRegions_ )
7235     {}
7236 
7237     VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7238 
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27239     CopyBufferToImageInfo2( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
7240       : CopyBufferToImageInfo2( *reinterpret_cast<CopyBufferToImageInfo2 const *>( &rhs ) )
7241     {}
7242 
7243 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyBufferToImageInfo2VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27244     CopyBufferToImageInfo2( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_, const void * pNext_ = nullptr )
7245     : pNext( pNext_ ), srcBuffer( srcBuffer_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
7246     {}
7247 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7248 
7249 
7250     CopyBufferToImageInfo2 & operator=( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7251 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7252 
operator =VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27253     CopyBufferToImageInfo2 & operator=( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
7254     {
7255       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 const *>( &rhs );
7256       return *this;
7257     }
7258 
7259 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27260     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7261     {
7262       pNext = pNext_;
7263       return *this;
7264     }
7265 
setSrcBufferVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27266     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT
7267     {
7268       srcBuffer = srcBuffer_;
7269       return *this;
7270     }
7271 
setDstImageVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27272     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
7273     {
7274       dstImage = dstImage_;
7275       return *this;
7276     }
7277 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27278     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
7279     {
7280       dstImageLayout = dstImageLayout_;
7281       return *this;
7282     }
7283 
setRegionCountVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27284     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
7285     {
7286       regionCount = regionCount_;
7287       return *this;
7288     }
7289 
setPRegionsVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27290     VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
7291     {
7292       pRegions = pRegions_;
7293       return *this;
7294     }
7295 
7296 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27297     CopyBufferToImageInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
7298     {
7299       regionCount = static_cast<uint32_t>( regions_.size() );
7300       pRegions = regions_.data();
7301       return *this;
7302     }
7303 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7304 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7305 
7306 
operator VkCopyBufferToImageInfo2 const&VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27307     operator VkCopyBufferToImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
7308     {
7309       return *reinterpret_cast<const VkCopyBufferToImageInfo2*>( this );
7310     }
7311 
operator VkCopyBufferToImageInfo2&VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27312     operator VkCopyBufferToImageInfo2 &() VULKAN_HPP_NOEXCEPT
7313     {
7314       return *reinterpret_cast<VkCopyBufferToImageInfo2*>( this );
7315     }
7316 
7317 #if defined( VULKAN_HPP_USE_REFLECT )
7318 #if 14 <= VULKAN_HPP_CPP_VERSION
7319     auto
7320 #else
7321     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * const &>
7322 #endif
reflectVULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27323       reflect() const VULKAN_HPP_NOEXCEPT
7324     {
7325       return std::tie( sType, pNext, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions );
7326     }
7327 #endif
7328 
7329 
7330 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
7331 auto operator<=>( CopyBufferToImageInfo2 const & ) const = default;
7332 #else
operator ==VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27333     bool operator==( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7334     {
7335 #if defined( VULKAN_HPP_USE_REFLECT )
7336       return this->reflect() == rhs.reflect();
7337 #else
7338       return ( sType == rhs.sType )
7339           && ( pNext == rhs.pNext )
7340           && ( srcBuffer == rhs.srcBuffer )
7341           && ( dstImage == rhs.dstImage )
7342           && ( dstImageLayout == rhs.dstImageLayout )
7343           && ( regionCount == rhs.regionCount )
7344           && ( pRegions == rhs.pRegions );
7345 #endif
7346     }
7347 
operator !=VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo27348     bool operator!=( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7349     {
7350       return !operator==( rhs );
7351     }
7352 #endif
7353 
7354     public:
7355     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferToImageInfo2;
7356     const void * pNext = {};
7357     VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {};
7358     VULKAN_HPP_NAMESPACE::Image dstImage = {};
7359     VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
7360     uint32_t regionCount = {};
7361     const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions = {};
7362 
7363   };
7364 
7365   template <>
7366   struct CppType<StructureType, StructureType::eCopyBufferToImageInfo2>
7367   {
7368     using Type = CopyBufferToImageInfo2;
7369   };
7370   using CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2;
7371 
7372   struct CopyDescriptorSet
7373   {
7374     using NativeType = VkCopyDescriptorSet;
7375 
7376     static const bool allowDuplicate = false;
7377     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyDescriptorSet;
7378 
7379 
7380 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyDescriptorSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet7381 VULKAN_HPP_CONSTEXPR CopyDescriptorSet(VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ = {}, uint32_t srcBinding_ = {}, uint32_t srcArrayElement_ = {}, VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ = {}, uint32_t dstBinding_ = {}, uint32_t dstArrayElement_ = {}, uint32_t descriptorCount_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
7382     : pNext( pNext_ ), srcSet( srcSet_ ), srcBinding( srcBinding_ ), srcArrayElement( srcArrayElement_ ), dstSet( dstSet_ ), dstBinding( dstBinding_ ), dstArrayElement( dstArrayElement_ ), descriptorCount( descriptorCount_ )
7383     {}
7384 
7385     VULKAN_HPP_CONSTEXPR CopyDescriptorSet( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7386 
CopyDescriptorSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet7387     CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
7388       : CopyDescriptorSet( *reinterpret_cast<CopyDescriptorSet const *>( &rhs ) )
7389     {}
7390 
7391 
7392     CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7393 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7394 
operator =VULKAN_HPP_NAMESPACE::CopyDescriptorSet7395     CopyDescriptorSet & operator=( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
7396     {
7397       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyDescriptorSet const *>( &rhs );
7398       return *this;
7399     }
7400 
7401 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyDescriptorSet7402     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7403     {
7404       pNext = pNext_;
7405       return *this;
7406     }
7407 
setSrcSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet7408     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ ) VULKAN_HPP_NOEXCEPT
7409     {
7410       srcSet = srcSet_;
7411       return *this;
7412     }
7413 
setSrcBindingVULKAN_HPP_NAMESPACE::CopyDescriptorSet7414     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcBinding( uint32_t srcBinding_ ) VULKAN_HPP_NOEXCEPT
7415     {
7416       srcBinding = srcBinding_;
7417       return *this;
7418     }
7419 
setSrcArrayElementVULKAN_HPP_NAMESPACE::CopyDescriptorSet7420     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcArrayElement( uint32_t srcArrayElement_ ) VULKAN_HPP_NOEXCEPT
7421     {
7422       srcArrayElement = srcArrayElement_;
7423       return *this;
7424     }
7425 
setDstSetVULKAN_HPP_NAMESPACE::CopyDescriptorSet7426     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT
7427     {
7428       dstSet = dstSet_;
7429       return *this;
7430     }
7431 
setDstBindingVULKAN_HPP_NAMESPACE::CopyDescriptorSet7432     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
7433     {
7434       dstBinding = dstBinding_;
7435       return *this;
7436     }
7437 
setDstArrayElementVULKAN_HPP_NAMESPACE::CopyDescriptorSet7438     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
7439     {
7440       dstArrayElement = dstArrayElement_;
7441       return *this;
7442     }
7443 
setDescriptorCountVULKAN_HPP_NAMESPACE::CopyDescriptorSet7444     VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
7445     {
7446       descriptorCount = descriptorCount_;
7447       return *this;
7448     }
7449 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7450 
7451 
operator VkCopyDescriptorSet const&VULKAN_HPP_NAMESPACE::CopyDescriptorSet7452     operator VkCopyDescriptorSet const &() const VULKAN_HPP_NOEXCEPT
7453     {
7454       return *reinterpret_cast<const VkCopyDescriptorSet*>( this );
7455     }
7456 
operator VkCopyDescriptorSet&VULKAN_HPP_NAMESPACE::CopyDescriptorSet7457     operator VkCopyDescriptorSet &() VULKAN_HPP_NOEXCEPT
7458     {
7459       return *reinterpret_cast<VkCopyDescriptorSet*>( this );
7460     }
7461 
7462 #if defined( VULKAN_HPP_USE_REFLECT )
7463 #if 14 <= VULKAN_HPP_CPP_VERSION
7464     auto
7465 #else
7466     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DescriptorSet const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DescriptorSet const &, uint32_t const &, uint32_t const &, uint32_t const &>
7467 #endif
reflectVULKAN_HPP_NAMESPACE::CopyDescriptorSet7468       reflect() const VULKAN_HPP_NOEXCEPT
7469     {
7470       return std::tie( sType, pNext, srcSet, srcBinding, srcArrayElement, dstSet, dstBinding, dstArrayElement, descriptorCount );
7471     }
7472 #endif
7473 
7474 
7475 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
7476 auto operator<=>( CopyDescriptorSet const & ) const = default;
7477 #else
operator ==VULKAN_HPP_NAMESPACE::CopyDescriptorSet7478     bool operator==( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
7479     {
7480 #if defined( VULKAN_HPP_USE_REFLECT )
7481       return this->reflect() == rhs.reflect();
7482 #else
7483       return ( sType == rhs.sType )
7484           && ( pNext == rhs.pNext )
7485           && ( srcSet == rhs.srcSet )
7486           && ( srcBinding == rhs.srcBinding )
7487           && ( srcArrayElement == rhs.srcArrayElement )
7488           && ( dstSet == rhs.dstSet )
7489           && ( dstBinding == rhs.dstBinding )
7490           && ( dstArrayElement == rhs.dstArrayElement )
7491           && ( descriptorCount == rhs.descriptorCount );
7492 #endif
7493     }
7494 
operator !=VULKAN_HPP_NAMESPACE::CopyDescriptorSet7495     bool operator!=( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
7496     {
7497       return !operator==( rhs );
7498     }
7499 #endif
7500 
7501     public:
7502     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyDescriptorSet;
7503     const void * pNext = {};
7504     VULKAN_HPP_NAMESPACE::DescriptorSet srcSet = {};
7505     uint32_t srcBinding = {};
7506     uint32_t srcArrayElement = {};
7507     VULKAN_HPP_NAMESPACE::DescriptorSet dstSet = {};
7508     uint32_t dstBinding = {};
7509     uint32_t dstArrayElement = {};
7510     uint32_t descriptorCount = {};
7511 
7512   };
7513 
7514   template <>
7515   struct CppType<StructureType, StructureType::eCopyDescriptorSet>
7516   {
7517     using Type = CopyDescriptorSet;
7518   };
7519 
7520   struct ImageCopy2
7521   {
7522     using NativeType = VkImageCopy2;
7523 
7524     static const bool allowDuplicate = false;
7525     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCopy2;
7526 
7527 
7528 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCopy2VULKAN_HPP_NAMESPACE::ImageCopy27529 VULKAN_HPP_CONSTEXPR ImageCopy2(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
7530     : pNext( pNext_ ), srcSubresource( srcSubresource_ ), srcOffset( srcOffset_ ), dstSubresource( dstSubresource_ ), dstOffset( dstOffset_ ), extent( extent_ )
7531     {}
7532 
7533     VULKAN_HPP_CONSTEXPR ImageCopy2( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7534 
ImageCopy2VULKAN_HPP_NAMESPACE::ImageCopy27535     ImageCopy2( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
7536       : ImageCopy2( *reinterpret_cast<ImageCopy2 const *>( &rhs ) )
7537     {}
7538 
7539 
7540     ImageCopy2 & operator=( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7541 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7542 
operator =VULKAN_HPP_NAMESPACE::ImageCopy27543     ImageCopy2 & operator=( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT
7544     {
7545       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy2 const *>( &rhs );
7546       return *this;
7547     }
7548 
7549 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCopy27550     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7551     {
7552       pNext = pNext_;
7553       return *this;
7554     }
7555 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageCopy27556     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
7557     {
7558       srcSubresource = srcSubresource_;
7559       return *this;
7560     }
7561 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageCopy27562     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
7563     {
7564       srcOffset = srcOffset_;
7565       return *this;
7566     }
7567 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageCopy27568     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
7569     {
7570       dstSubresource = dstSubresource_;
7571       return *this;
7572     }
7573 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageCopy27574     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
7575     {
7576       dstOffset = dstOffset_;
7577       return *this;
7578     }
7579 
setExtentVULKAN_HPP_NAMESPACE::ImageCopy27580     VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
7581     {
7582       extent = extent_;
7583       return *this;
7584     }
7585 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7586 
7587 
operator VkImageCopy2 const&VULKAN_HPP_NAMESPACE::ImageCopy27588     operator VkImageCopy2 const &() const VULKAN_HPP_NOEXCEPT
7589     {
7590       return *reinterpret_cast<const VkImageCopy2*>( this );
7591     }
7592 
operator VkImageCopy2&VULKAN_HPP_NAMESPACE::ImageCopy27593     operator VkImageCopy2 &() VULKAN_HPP_NOEXCEPT
7594     {
7595       return *reinterpret_cast<VkImageCopy2*>( this );
7596     }
7597 
7598 #if defined( VULKAN_HPP_USE_REFLECT )
7599 #if 14 <= VULKAN_HPP_CPP_VERSION
7600     auto
7601 #else
7602     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
7603 #endif
reflectVULKAN_HPP_NAMESPACE::ImageCopy27604       reflect() const VULKAN_HPP_NOEXCEPT
7605     {
7606       return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
7607     }
7608 #endif
7609 
7610 
7611 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
7612 auto operator<=>( ImageCopy2 const & ) const = default;
7613 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCopy27614     bool operator==( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7615     {
7616 #if defined( VULKAN_HPP_USE_REFLECT )
7617       return this->reflect() == rhs.reflect();
7618 #else
7619       return ( sType == rhs.sType )
7620           && ( pNext == rhs.pNext )
7621           && ( srcSubresource == rhs.srcSubresource )
7622           && ( srcOffset == rhs.srcOffset )
7623           && ( dstSubresource == rhs.dstSubresource )
7624           && ( dstOffset == rhs.dstOffset )
7625           && ( extent == rhs.extent );
7626 #endif
7627     }
7628 
operator !=VULKAN_HPP_NAMESPACE::ImageCopy27629     bool operator!=( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7630     {
7631       return !operator==( rhs );
7632     }
7633 #endif
7634 
7635     public:
7636     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCopy2;
7637     const void * pNext = {};
7638     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
7639     VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {};
7640     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
7641     VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {};
7642     VULKAN_HPP_NAMESPACE::Extent3D extent = {};
7643 
7644   };
7645 
7646   template <>
7647   struct CppType<StructureType, StructureType::eImageCopy2>
7648   {
7649     using Type = ImageCopy2;
7650   };
7651   using ImageCopy2KHR = ImageCopy2;
7652 
7653   struct CopyImageInfo2
7654   {
7655     using NativeType = VkCopyImageInfo2;
7656 
7657     static const bool allowDuplicate = false;
7658     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageInfo2;
7659 
7660 
7661 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo27662 VULKAN_HPP_CONSTEXPR CopyImageInfo2(VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
7663     : pNext( pNext_ ), srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( regionCount_ ), pRegions( pRegions_ )
7664     {}
7665 
7666     VULKAN_HPP_CONSTEXPR CopyImageInfo2( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7667 
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo27668     CopyImageInfo2( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
7669       : CopyImageInfo2( *reinterpret_cast<CopyImageInfo2 const *>( &rhs ) )
7670     {}
7671 
7672 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageInfo2VULKAN_HPP_NAMESPACE::CopyImageInfo27673     CopyImageInfo2( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_, const void * pNext_ = nullptr )
7674     : pNext( pNext_ ), srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
7675     {}
7676 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7677 
7678 
7679     CopyImageInfo2 & operator=( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7680 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7681 
operator =VULKAN_HPP_NAMESPACE::CopyImageInfo27682     CopyImageInfo2 & operator=( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
7683     {
7684       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageInfo2 const *>( &rhs );
7685       return *this;
7686     }
7687 
7688 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageInfo27689     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7690     {
7691       pNext = pNext_;
7692       return *this;
7693     }
7694 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageInfo27695     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
7696     {
7697       srcImage = srcImage_;
7698       return *this;
7699     }
7700 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageInfo27701     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
7702     {
7703       srcImageLayout = srcImageLayout_;
7704       return *this;
7705     }
7706 
setDstImageVULKAN_HPP_NAMESPACE::CopyImageInfo27707     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
7708     {
7709       dstImage = dstImage_;
7710       return *this;
7711     }
7712 
setDstImageLayoutVULKAN_HPP_NAMESPACE::CopyImageInfo27713     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
7714     {
7715       dstImageLayout = dstImageLayout_;
7716       return *this;
7717     }
7718 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageInfo27719     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
7720     {
7721       regionCount = regionCount_;
7722       return *this;
7723     }
7724 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageInfo27725     VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
7726     {
7727       pRegions = pRegions_;
7728       return *this;
7729     }
7730 
7731 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyImageInfo27732     CopyImageInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
7733     {
7734       regionCount = static_cast<uint32_t>( regions_.size() );
7735       pRegions = regions_.data();
7736       return *this;
7737     }
7738 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7739 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7740 
7741 
operator VkCopyImageInfo2 const&VULKAN_HPP_NAMESPACE::CopyImageInfo27742     operator VkCopyImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
7743     {
7744       return *reinterpret_cast<const VkCopyImageInfo2*>( this );
7745     }
7746 
operator VkCopyImageInfo2&VULKAN_HPP_NAMESPACE::CopyImageInfo27747     operator VkCopyImageInfo2 &() VULKAN_HPP_NOEXCEPT
7748     {
7749       return *reinterpret_cast<VkCopyImageInfo2*>( this );
7750     }
7751 
7752 #if defined( VULKAN_HPP_USE_REFLECT )
7753 #if 14 <= VULKAN_HPP_CPP_VERSION
7754     auto
7755 #else
7756     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ImageCopy2 * const &>
7757 #endif
reflectVULKAN_HPP_NAMESPACE::CopyImageInfo27758       reflect() const VULKAN_HPP_NOEXCEPT
7759     {
7760       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
7761     }
7762 #endif
7763 
7764 
7765 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
7766 auto operator<=>( CopyImageInfo2 const & ) const = default;
7767 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageInfo27768     bool operator==( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7769     {
7770 #if defined( VULKAN_HPP_USE_REFLECT )
7771       return this->reflect() == rhs.reflect();
7772 #else
7773       return ( sType == rhs.sType )
7774           && ( pNext == rhs.pNext )
7775           && ( srcImage == rhs.srcImage )
7776           && ( srcImageLayout == rhs.srcImageLayout )
7777           && ( dstImage == rhs.dstImage )
7778           && ( dstImageLayout == rhs.dstImageLayout )
7779           && ( regionCount == rhs.regionCount )
7780           && ( pRegions == rhs.pRegions );
7781 #endif
7782     }
7783 
operator !=VULKAN_HPP_NAMESPACE::CopyImageInfo27784     bool operator!=( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7785     {
7786       return !operator==( rhs );
7787     }
7788 #endif
7789 
7790     public:
7791     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageInfo2;
7792     const void * pNext = {};
7793     VULKAN_HPP_NAMESPACE::Image srcImage = {};
7794     VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
7795     VULKAN_HPP_NAMESPACE::Image dstImage = {};
7796     VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
7797     uint32_t regionCount = {};
7798     const VULKAN_HPP_NAMESPACE::ImageCopy2 * pRegions = {};
7799 
7800   };
7801 
7802   template <>
7803   struct CppType<StructureType, StructureType::eCopyImageInfo2>
7804   {
7805     using Type = CopyImageInfo2;
7806   };
7807   using CopyImageInfo2KHR = CopyImageInfo2;
7808 
7809   struct CopyImageToBufferInfo2
7810   {
7811     using NativeType = VkCopyImageToBufferInfo2;
7812 
7813     static const bool allowDuplicate = false;
7814     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageToBufferInfo2;
7815 
7816 
7817 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27818 VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2(VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ = {}, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
7819     : pNext( pNext_ ), srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstBuffer( dstBuffer_ ), regionCount( regionCount_ ), pRegions( pRegions_ )
7820     {}
7821 
7822     VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7823 
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27824     CopyImageToBufferInfo2( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
7825       : CopyImageToBufferInfo2( *reinterpret_cast<CopyImageToBufferInfo2 const *>( &rhs ) )
7826     {}
7827 
7828 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
CopyImageToBufferInfo2VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27829     CopyImageToBufferInfo2( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_, const void * pNext_ = nullptr )
7830     : pNext( pNext_ ), srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstBuffer( dstBuffer_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
7831     {}
7832 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7833 
7834 
7835     CopyImageToBufferInfo2 & operator=( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7836 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7837 
operator =VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27838     CopyImageToBufferInfo2 & operator=( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
7839     {
7840       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 const *>( &rhs );
7841       return *this;
7842     }
7843 
7844 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27845     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7846     {
7847       pNext = pNext_;
7848       return *this;
7849     }
7850 
setSrcImageVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27851     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
7852     {
7853       srcImage = srcImage_;
7854       return *this;
7855     }
7856 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27857     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
7858     {
7859       srcImageLayout = srcImageLayout_;
7860       return *this;
7861     }
7862 
setDstBufferVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27863     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT
7864     {
7865       dstBuffer = dstBuffer_;
7866       return *this;
7867     }
7868 
setRegionCountVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27869     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
7870     {
7871       regionCount = regionCount_;
7872       return *this;
7873     }
7874 
setPRegionsVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27875     VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
7876     {
7877       pRegions = pRegions_;
7878       return *this;
7879     }
7880 
7881 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27882     CopyImageToBufferInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferImageCopy2> const & regions_ ) VULKAN_HPP_NOEXCEPT
7883     {
7884       regionCount = static_cast<uint32_t>( regions_.size() );
7885       pRegions = regions_.data();
7886       return *this;
7887     }
7888 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
7889 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
7890 
7891 
operator VkCopyImageToBufferInfo2 const&VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27892     operator VkCopyImageToBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT
7893     {
7894       return *reinterpret_cast<const VkCopyImageToBufferInfo2*>( this );
7895     }
7896 
operator VkCopyImageToBufferInfo2&VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27897     operator VkCopyImageToBufferInfo2 &() VULKAN_HPP_NOEXCEPT
7898     {
7899       return *reinterpret_cast<VkCopyImageToBufferInfo2*>( this );
7900     }
7901 
7902 #if defined( VULKAN_HPP_USE_REFLECT )
7903 #if 14 <= VULKAN_HPP_CPP_VERSION
7904     auto
7905 #else
7906     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::Buffer const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * const &>
7907 #endif
reflectVULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27908       reflect() const VULKAN_HPP_NOEXCEPT
7909     {
7910       return std::tie( sType, pNext, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions );
7911     }
7912 #endif
7913 
7914 
7915 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
7916 auto operator<=>( CopyImageToBufferInfo2 const & ) const = default;
7917 #else
operator ==VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27918     bool operator==( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7919     {
7920 #if defined( VULKAN_HPP_USE_REFLECT )
7921       return this->reflect() == rhs.reflect();
7922 #else
7923       return ( sType == rhs.sType )
7924           && ( pNext == rhs.pNext )
7925           && ( srcImage == rhs.srcImage )
7926           && ( srcImageLayout == rhs.srcImageLayout )
7927           && ( dstBuffer == rhs.dstBuffer )
7928           && ( regionCount == rhs.regionCount )
7929           && ( pRegions == rhs.pRegions );
7930 #endif
7931     }
7932 
operator !=VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo27933     bool operator!=( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
7934     {
7935       return !operator==( rhs );
7936     }
7937 #endif
7938 
7939     public:
7940     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageToBufferInfo2;
7941     const void * pNext = {};
7942     VULKAN_HPP_NAMESPACE::Image srcImage = {};
7943     VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
7944     VULKAN_HPP_NAMESPACE::Buffer dstBuffer = {};
7945     uint32_t regionCount = {};
7946     const VULKAN_HPP_NAMESPACE::BufferImageCopy2 * pRegions = {};
7947 
7948   };
7949 
7950   template <>
7951   struct CppType<StructureType, StructureType::eCopyImageToBufferInfo2>
7952   {
7953     using Type = CopyImageToBufferInfo2;
7954   };
7955   using CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2;
7956 
7957   struct DebugUtilsLabelEXT
7958   {
7959     using NativeType = VkDebugUtilsLabelEXT;
7960 
7961     static const bool allowDuplicate = false;
7962     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsLabelEXT;
7963 
7964 
7965 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsLabelEXTVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT7966 VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT(const char * pLabelName_ = {}, std::array<float,4> const & color_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
7967     : pNext( pNext_ ), pLabelName( pLabelName_ ), color( color_ )
7968     {}
7969 
7970     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7971 
DebugUtilsLabelEXTVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT7972     DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
7973       : DebugUtilsLabelEXT( *reinterpret_cast<DebugUtilsLabelEXT const *>( &rhs ) )
7974     {}
7975 
7976 
7977     DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
7978 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
7979 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT7980     DebugUtilsLabelEXT & operator=( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT
7981     {
7982       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT const *>( &rhs );
7983       return *this;
7984     }
7985 
7986 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT7987     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
7988     {
7989       pNext = pNext_;
7990       return *this;
7991     }
7992 
setPLabelNameVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT7993     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPLabelName( const char * pLabelName_ ) VULKAN_HPP_NOEXCEPT
7994     {
7995       pLabelName = pLabelName_;
7996       return *this;
7997     }
7998 
setColorVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT7999     VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setColor( std::array<float,4> color_ ) VULKAN_HPP_NOEXCEPT
8000     {
8001       color = color_;
8002       return *this;
8003     }
8004 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8005 
8006 
operator VkDebugUtilsLabelEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT8007     operator VkDebugUtilsLabelEXT const &() const VULKAN_HPP_NOEXCEPT
8008     {
8009       return *reinterpret_cast<const VkDebugUtilsLabelEXT*>( this );
8010     }
8011 
operator VkDebugUtilsLabelEXT&VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT8012     operator VkDebugUtilsLabelEXT &() VULKAN_HPP_NOEXCEPT
8013     {
8014       return *reinterpret_cast<VkDebugUtilsLabelEXT*>( this );
8015     }
8016 
8017 #if defined( VULKAN_HPP_USE_REFLECT )
8018 #if 14 <= VULKAN_HPP_CPP_VERSION
8019     auto
8020 #else
8021     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const char * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
8022 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT8023       reflect() const VULKAN_HPP_NOEXCEPT
8024     {
8025       return std::tie( sType, pNext, pLabelName, color );
8026     }
8027 #endif
8028 
8029 
8030 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT8031     std::partial_ordering operator<=>( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8032     {
8033       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
8034       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
8035      if ( pLabelName != rhs.pLabelName )
8036         if ( auto cmp = strcmp( pLabelName, rhs.pLabelName ); cmp != 0 )
8037           return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater;
8038       if ( auto cmp = color <=> rhs.color; cmp != 0 ) return cmp;
8039 
8040       return std::partial_ordering::equivalent;
8041     }
8042 #endif
8043 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT8044     bool operator==( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8045     {
8046       return ( sType == rhs.sType )
8047           && ( pNext == rhs.pNext )
8048           && ( ( pLabelName == rhs.pLabelName ) || ( strcmp( pLabelName, rhs.pLabelName ) == 0 ) )
8049           && ( color == rhs.color );
8050     }
8051 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT8052     bool operator!=( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8053     {
8054       return !operator==( rhs );
8055     }
8056 
8057     public:
8058     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsLabelEXT;
8059     const void * pNext = {};
8060     const char * pLabelName = {};
8061     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> color = {};
8062 
8063   };
8064 
8065   template <>
8066   struct CppType<StructureType, StructureType::eDebugUtilsLabelEXT>
8067   {
8068     using Type = DebugUtilsLabelEXT;
8069   };
8070 
8071   struct DebugUtilsObjectNameInfoEXT
8072   {
8073     using NativeType = VkDebugUtilsObjectNameInfoEXT;
8074 
8075     static const bool allowDuplicate = false;
8076     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsObjectNameInfoEXT;
8077 
8078 
8079 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8080 VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, uint64_t objectHandle_ = {}, const char * pObjectName_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
8081     : pNext( pNext_ ), objectType( objectType_ ), objectHandle( objectHandle_ ), pObjectName( pObjectName_ )
8082     {}
8083 
8084     VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8085 
DebugUtilsObjectNameInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8086     DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
8087       : DebugUtilsObjectNameInfoEXT( *reinterpret_cast<DebugUtilsObjectNameInfoEXT const *>( &rhs ) )
8088     {}
8089 
8090 
8091     DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8092 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8093 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8094     DebugUtilsObjectNameInfoEXT & operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
8095     {
8096       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT const *>( &rhs );
8097       return *this;
8098     }
8099 
8100 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8101     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8102     {
8103       pNext = pNext_;
8104       return *this;
8105     }
8106 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8107     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
8108     {
8109       objectType = objectType_;
8110       return *this;
8111     }
8112 
setObjectHandleVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8113     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
8114     {
8115       objectHandle = objectHandle_;
8116       return *this;
8117     }
8118 
setPObjectNameVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8119     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPObjectName( const char * pObjectName_ ) VULKAN_HPP_NOEXCEPT
8120     {
8121       pObjectName = pObjectName_;
8122       return *this;
8123     }
8124 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8125 
8126 
operator VkDebugUtilsObjectNameInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8127     operator VkDebugUtilsObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT
8128     {
8129       return *reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT*>( this );
8130     }
8131 
operator VkDebugUtilsObjectNameInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8132     operator VkDebugUtilsObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT
8133     {
8134       return *reinterpret_cast<VkDebugUtilsObjectNameInfoEXT*>( this );
8135     }
8136 
8137 #if defined( VULKAN_HPP_USE_REFLECT )
8138 #if 14 <= VULKAN_HPP_CPP_VERSION
8139     auto
8140 #else
8141     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ObjectType const &, uint64_t const &, const char * const &>
8142 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8143       reflect() const VULKAN_HPP_NOEXCEPT
8144     {
8145       return std::tie( sType, pNext, objectType, objectHandle, pObjectName );
8146     }
8147 #endif
8148 
8149 
8150 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8151     std::strong_ordering operator<=>( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8152     {
8153       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
8154       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
8155       if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 ) return cmp;
8156       if ( auto cmp = objectHandle <=> rhs.objectHandle; cmp != 0 ) return cmp;
8157      if ( pObjectName != rhs.pObjectName )
8158         if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 )
8159           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
8160 
8161       return std::strong_ordering::equivalent;
8162     }
8163 #endif
8164 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8165     bool operator==( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8166     {
8167       return ( sType == rhs.sType )
8168           && ( pNext == rhs.pNext )
8169           && ( objectType == rhs.objectType )
8170           && ( objectHandle == rhs.objectHandle )
8171           && ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) );
8172     }
8173 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT8174     bool operator!=( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8175     {
8176       return !operator==( rhs );
8177     }
8178 
8179     public:
8180     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT;
8181     const void * pNext = {};
8182     VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
8183     uint64_t objectHandle = {};
8184     const char * pObjectName = {};
8185 
8186   };
8187 
8188   template <>
8189   struct CppType<StructureType, StructureType::eDebugUtilsObjectNameInfoEXT>
8190   {
8191     using Type = DebugUtilsObjectNameInfoEXT;
8192   };
8193 
8194   struct DebugUtilsMessengerCallbackDataEXT
8195   {
8196     using NativeType = VkDebugUtilsMessengerCallbackDataEXT;
8197 
8198     static const bool allowDuplicate = false;
8199     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsMessengerCallbackDataEXT;
8200 
8201 
8202 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8203 VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ = {}, const char * pMessageIdName_ = {}, int32_t messageIdNumber_ = {}, const char * pMessage_ = {}, uint32_t queueLabelCount_ = {}, const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels_ = {}, uint32_t cmdBufLabelCount_ = {}, const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels_ = {}, uint32_t objectCount_ = {}, const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
8204     : pNext( pNext_ ), flags( flags_ ), pMessageIdName( pMessageIdName_ ), messageIdNumber( messageIdNumber_ ), pMessage( pMessage_ ), queueLabelCount( queueLabelCount_ ), pQueueLabels( pQueueLabels_ ), cmdBufLabelCount( cmdBufLabelCount_ ), pCmdBufLabels( pCmdBufLabels_ ), objectCount( objectCount_ ), pObjects( pObjects_ )
8205     {}
8206 
8207     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8208 
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8209     DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
8210       : DebugUtilsMessengerCallbackDataEXT( *reinterpret_cast<DebugUtilsMessengerCallbackDataEXT const *>( &rhs ) )
8211     {}
8212 
8213 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DebugUtilsMessengerCallbackDataEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8214     DebugUtilsMessengerCallbackDataEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_, const char * pMessageIdName_, int32_t messageIdNumber_, const char * pMessage_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & queueLabels_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & cmdBufLabels_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const & objects_ = {}, const void * pNext_ = nullptr )
8215     : pNext( pNext_ ), flags( flags_ ), pMessageIdName( pMessageIdName_ ), messageIdNumber( messageIdNumber_ ), pMessage( pMessage_ ), queueLabelCount( static_cast<uint32_t>( queueLabels_.size() ) ), pQueueLabels( queueLabels_.data() ), cmdBufLabelCount( static_cast<uint32_t>( cmdBufLabels_.size() ) ), pCmdBufLabels( cmdBufLabels_.data() ), objectCount( static_cast<uint32_t>( objects_.size() ) ), pObjects( objects_.data() )
8216     {}
8217 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8218 
8219 
8220     DebugUtilsMessengerCallbackDataEXT & operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8221 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8222 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8223     DebugUtilsMessengerCallbackDataEXT & operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
8224     {
8225       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT const *>( &rhs );
8226       return *this;
8227     }
8228 
8229 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8230     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8231     {
8232       pNext = pNext_;
8233       return *this;
8234     }
8235 
setFlagsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8236     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
8237     {
8238       flags = flags_;
8239       return *this;
8240     }
8241 
setPMessageIdNameVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8242     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPMessageIdName( const char * pMessageIdName_ ) VULKAN_HPP_NOEXCEPT
8243     {
8244       pMessageIdName = pMessageIdName_;
8245       return *this;
8246     }
8247 
setMessageIdNumberVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8248     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setMessageIdNumber( int32_t messageIdNumber_ ) VULKAN_HPP_NOEXCEPT
8249     {
8250       messageIdNumber = messageIdNumber_;
8251       return *this;
8252     }
8253 
setPMessageVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8254     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPMessage( const char * pMessage_ ) VULKAN_HPP_NOEXCEPT
8255     {
8256       pMessage = pMessage_;
8257       return *this;
8258     }
8259 
setQueueLabelCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8260     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setQueueLabelCount( uint32_t queueLabelCount_ ) VULKAN_HPP_NOEXCEPT
8261     {
8262       queueLabelCount = queueLabelCount_;
8263       return *this;
8264     }
8265 
setPQueueLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8266     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPQueueLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels_ ) VULKAN_HPP_NOEXCEPT
8267     {
8268       pQueueLabels = pQueueLabels_;
8269       return *this;
8270     }
8271 
8272 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8273     DebugUtilsMessengerCallbackDataEXT & setQueueLabels( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & queueLabels_ ) VULKAN_HPP_NOEXCEPT
8274     {
8275       queueLabelCount = static_cast<uint32_t>( queueLabels_.size() );
8276       pQueueLabels = queueLabels_.data();
8277       return *this;
8278     }
8279 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8280 
setCmdBufLabelCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8281     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) VULKAN_HPP_NOEXCEPT
8282     {
8283       cmdBufLabelCount = cmdBufLabelCount_;
8284       return *this;
8285     }
8286 
setPCmdBufLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8287     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPCmdBufLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels_ ) VULKAN_HPP_NOEXCEPT
8288     {
8289       pCmdBufLabels = pCmdBufLabels_;
8290       return *this;
8291     }
8292 
8293 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCmdBufLabelsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8294     DebugUtilsMessengerCallbackDataEXT & setCmdBufLabels( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT> const & cmdBufLabels_ ) VULKAN_HPP_NOEXCEPT
8295     {
8296       cmdBufLabelCount = static_cast<uint32_t>( cmdBufLabels_.size() );
8297       pCmdBufLabels = cmdBufLabels_.data();
8298       return *this;
8299     }
8300 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8301 
setObjectCountVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8302     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setObjectCount( uint32_t objectCount_ ) VULKAN_HPP_NOEXCEPT
8303     {
8304       objectCount = objectCount_;
8305       return *this;
8306     }
8307 
setPObjectsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8308     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPObjects( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects_ ) VULKAN_HPP_NOEXCEPT
8309     {
8310       pObjects = pObjects_;
8311       return *this;
8312     }
8313 
8314 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setObjectsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8315     DebugUtilsMessengerCallbackDataEXT & setObjects( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT> const & objects_ ) VULKAN_HPP_NOEXCEPT
8316     {
8317       objectCount = static_cast<uint32_t>( objects_.size() );
8318       pObjects = objects_.data();
8319       return *this;
8320     }
8321 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8322 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8323 
8324 
operator VkDebugUtilsMessengerCallbackDataEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8325     operator VkDebugUtilsMessengerCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT
8326     {
8327       return *reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT*>( this );
8328     }
8329 
operator VkDebugUtilsMessengerCallbackDataEXT&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8330     operator VkDebugUtilsMessengerCallbackDataEXT &() VULKAN_HPP_NOEXCEPT
8331     {
8332       return *reinterpret_cast<VkDebugUtilsMessengerCallbackDataEXT*>( this );
8333     }
8334 
8335 #if defined( VULKAN_HPP_USE_REFLECT )
8336 #if 14 <= VULKAN_HPP_CPP_VERSION
8337     auto
8338 #else
8339     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT const &, const char * const &, int32_t const &, const char * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * const &>
8340 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8341       reflect() const VULKAN_HPP_NOEXCEPT
8342     {
8343       return std::tie( sType, pNext, flags, pMessageIdName, messageIdNumber, pMessage, queueLabelCount, pQueueLabels, cmdBufLabelCount, pCmdBufLabels, objectCount, pObjects );
8344     }
8345 #endif
8346 
8347 
8348 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8349     std::strong_ordering operator<=>( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8350     {
8351       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
8352       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
8353       if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) return cmp;
8354      if ( pMessageIdName != rhs.pMessageIdName )
8355         if ( auto cmp = strcmp( pMessageIdName, rhs.pMessageIdName ); cmp != 0 )
8356           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
8357       if ( auto cmp = messageIdNumber <=> rhs.messageIdNumber; cmp != 0 ) return cmp;
8358      if ( pMessage != rhs.pMessage )
8359         if ( auto cmp = strcmp( pMessage, rhs.pMessage ); cmp != 0 )
8360           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
8361       if ( auto cmp = queueLabelCount <=> rhs.queueLabelCount; cmp != 0 ) return cmp;
8362       if ( auto cmp = pQueueLabels <=> rhs.pQueueLabels; cmp != 0 ) return cmp;
8363       if ( auto cmp = cmdBufLabelCount <=> rhs.cmdBufLabelCount; cmp != 0 ) return cmp;
8364       if ( auto cmp = pCmdBufLabels <=> rhs.pCmdBufLabels; cmp != 0 ) return cmp;
8365       if ( auto cmp = objectCount <=> rhs.objectCount; cmp != 0 ) return cmp;
8366       if ( auto cmp = pObjects <=> rhs.pObjects; cmp != 0 ) return cmp;
8367 
8368       return std::strong_ordering::equivalent;
8369     }
8370 #endif
8371 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8372     bool operator==( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8373     {
8374       return ( sType == rhs.sType )
8375           && ( pNext == rhs.pNext )
8376           && ( flags == rhs.flags )
8377           && ( ( pMessageIdName == rhs.pMessageIdName ) || ( strcmp( pMessageIdName, rhs.pMessageIdName ) == 0 ) )
8378           && ( messageIdNumber == rhs.messageIdNumber )
8379           && ( ( pMessage == rhs.pMessage ) || ( strcmp( pMessage, rhs.pMessage ) == 0 ) )
8380           && ( queueLabelCount == rhs.queueLabelCount )
8381           && ( pQueueLabels == rhs.pQueueLabels )
8382           && ( cmdBufLabelCount == rhs.cmdBufLabelCount )
8383           && ( pCmdBufLabels == rhs.pCmdBufLabels )
8384           && ( objectCount == rhs.objectCount )
8385           && ( pObjects == rhs.pObjects );
8386     }
8387 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT8388     bool operator!=( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8389     {
8390       return !operator==( rhs );
8391     }
8392 
8393     public:
8394     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT;
8395     const void * pNext = {};
8396     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags = {};
8397     const char * pMessageIdName = {};
8398     int32_t messageIdNumber = {};
8399     const char * pMessage = {};
8400     uint32_t queueLabelCount = {};
8401     const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pQueueLabels = {};
8402     uint32_t cmdBufLabelCount = {};
8403     const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT * pCmdBufLabels = {};
8404     uint32_t objectCount = {};
8405     const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT * pObjects = {};
8406 
8407   };
8408 
8409   template <>
8410   struct CppType<StructureType, StructureType::eDebugUtilsMessengerCallbackDataEXT>
8411   {
8412     using Type = DebugUtilsMessengerCallbackDataEXT;
8413   };
8414 
8415   struct DebugUtilsMessengerCreateInfoEXT
8416   {
8417     using NativeType = VkDebugUtilsMessengerCreateInfoEXT;
8418 
8419     static const bool allowDuplicate = true;
8420     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsMessengerCreateInfoEXT;
8421 
8422 
8423 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsMessengerCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8424 VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = {}, VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ = {}, PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ = {}, void * pUserData_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
8425     : pNext( pNext_ ), flags( flags_ ), messageSeverity( messageSeverity_ ), messageType( messageType_ ), pfnUserCallback( pfnUserCallback_ ), pUserData( pUserData_ )
8426     {}
8427 
8428     VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8429 
DebugUtilsMessengerCreateInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8430     DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
8431       : DebugUtilsMessengerCreateInfoEXT( *reinterpret_cast<DebugUtilsMessengerCreateInfoEXT const *>( &rhs ) )
8432     {}
8433 
8434 
8435     DebugUtilsMessengerCreateInfoEXT & operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8436 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8437 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8438     DebugUtilsMessengerCreateInfoEXT & operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
8439     {
8440       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const *>( &rhs );
8441       return *this;
8442     }
8443 
8444 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8445     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8446     {
8447       pNext = pNext_;
8448       return *this;
8449     }
8450 
setFlagsVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8451     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
8452     {
8453       flags = flags_;
8454       return *this;
8455     }
8456 
setMessageSeverityVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8457     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setMessageSeverity( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) VULKAN_HPP_NOEXCEPT
8458     {
8459       messageSeverity = messageSeverity_;
8460       return *this;
8461     }
8462 
setMessageTypeVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8463     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setMessageType( VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ ) VULKAN_HPP_NOEXCEPT
8464     {
8465       messageType = messageType_;
8466       return *this;
8467     }
8468 
setPfnUserCallbackVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8469     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT
8470     {
8471       pfnUserCallback = pfnUserCallback_;
8472       return *this;
8473     }
8474 
setPUserDataVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8475     VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPUserData( void * pUserData_ ) VULKAN_HPP_NOEXCEPT
8476     {
8477       pUserData = pUserData_;
8478       return *this;
8479     }
8480 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8481 
8482 
operator VkDebugUtilsMessengerCreateInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8483     operator VkDebugUtilsMessengerCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
8484     {
8485       return *reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT*>( this );
8486     }
8487 
operator VkDebugUtilsMessengerCreateInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8488     operator VkDebugUtilsMessengerCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
8489     {
8490       return *reinterpret_cast<VkDebugUtilsMessengerCreateInfoEXT*>( this );
8491     }
8492 
8493 #if defined( VULKAN_HPP_USE_REFLECT )
8494 #if 14 <= VULKAN_HPP_CPP_VERSION
8495     auto
8496 #else
8497     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT const &, VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT const &, VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT const &, PFN_vkDebugUtilsMessengerCallbackEXT const &, void * const &>
8498 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8499       reflect() const VULKAN_HPP_NOEXCEPT
8500     {
8501       return std::tie( sType, pNext, flags, messageSeverity, messageType, pfnUserCallback, pUserData );
8502     }
8503 #endif
8504 
8505 
8506 
8507 
8508 
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8509     bool operator==( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8510     {
8511 #if defined( VULKAN_HPP_USE_REFLECT )
8512       return this->reflect() == rhs.reflect();
8513 #else
8514       return ( sType == rhs.sType )
8515           && ( pNext == rhs.pNext )
8516           && ( flags == rhs.flags )
8517           && ( messageSeverity == rhs.messageSeverity )
8518           && ( messageType == rhs.messageType )
8519           && ( pfnUserCallback == rhs.pfnUserCallback )
8520           && ( pUserData == rhs.pUserData );
8521 #endif
8522     }
8523 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT8524     bool operator!=( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8525     {
8526       return !operator==( rhs );
8527     }
8528 
8529     public:
8530     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT;
8531     const void * pNext = {};
8532     VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags = {};
8533     VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity = {};
8534     VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType = {};
8535     PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback = {};
8536     void * pUserData = {};
8537 
8538   };
8539 
8540   template <>
8541   struct CppType<StructureType, StructureType::eDebugUtilsMessengerCreateInfoEXT>
8542   {
8543     using Type = DebugUtilsMessengerCreateInfoEXT;
8544   };
8545 
8546   struct DebugUtilsObjectTagInfoEXT
8547   {
8548     using NativeType = VkDebugUtilsObjectTagInfoEXT;
8549 
8550     static const bool allowDuplicate = false;
8551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsObjectTagInfoEXT;
8552 
8553 
8554 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8555 VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, uint64_t objectHandle_ = {}, uint64_t tagName_ = {}, size_t tagSize_ = {}, const void * pTag_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
8556     : pNext( pNext_ ), objectType( objectType_ ), objectHandle( objectHandle_ ), tagName( tagName_ ), tagSize( tagSize_ ), pTag( pTag_ )
8557     {}
8558 
8559     VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8560 
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8561     DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
8562       : DebugUtilsObjectTagInfoEXT( *reinterpret_cast<DebugUtilsObjectTagInfoEXT const *>( &rhs ) )
8563     {}
8564 
8565 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
8566     template <typename T>
DebugUtilsObjectTagInfoEXTVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8567     DebugUtilsObjectTagInfoEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType_, uint64_t objectHandle_, uint64_t tagName_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_, const void * pNext_ = nullptr )
8568     : pNext( pNext_ ), objectType( objectType_ ), objectHandle( objectHandle_ ), tagName( tagName_ ), tagSize( tag_.size() * sizeof(T) ), pTag( tag_.data() )
8569     {}
8570 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8571 
8572 
8573     DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8574 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8575 
operator =VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8576     DebugUtilsObjectTagInfoEXT & operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
8577     {
8578       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT const *>( &rhs );
8579       return *this;
8580     }
8581 
8582 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8583     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8584     {
8585       pNext = pNext_;
8586       return *this;
8587     }
8588 
setObjectTypeVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8589     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
8590     {
8591       objectType = objectType_;
8592       return *this;
8593     }
8594 
setObjectHandleVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8595     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
8596     {
8597       objectHandle = objectHandle_;
8598       return *this;
8599     }
8600 
setTagNameVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8601     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT
8602     {
8603       tagName = tagName_;
8604       return *this;
8605     }
8606 
setTagSizeVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8607     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT
8608     {
8609       tagSize = tagSize_;
8610       return *this;
8611     }
8612 
setPTagVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8613     VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPTag( const void * pTag_ ) VULKAN_HPP_NOEXCEPT
8614     {
8615       pTag = pTag_;
8616       return *this;
8617     }
8618 
8619 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
8620     template <typename T>
setTagVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8621     DebugUtilsObjectTagInfoEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & tag_ ) VULKAN_HPP_NOEXCEPT
8622     {
8623       tagSize = tag_.size() * sizeof(T);
8624       pTag = tag_.data();
8625       return *this;
8626     }
8627 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
8628 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8629 
8630 
operator VkDebugUtilsObjectTagInfoEXT const&VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8631     operator VkDebugUtilsObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT
8632     {
8633       return *reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT*>( this );
8634     }
8635 
operator VkDebugUtilsObjectTagInfoEXT&VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8636     operator VkDebugUtilsObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT
8637     {
8638       return *reinterpret_cast<VkDebugUtilsObjectTagInfoEXT*>( this );
8639     }
8640 
8641 #if defined( VULKAN_HPP_USE_REFLECT )
8642 #if 14 <= VULKAN_HPP_CPP_VERSION
8643     auto
8644 #else
8645     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ObjectType const &, uint64_t const &, uint64_t const &, size_t const &, const void * const &>
8646 #endif
reflectVULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8647       reflect() const VULKAN_HPP_NOEXCEPT
8648     {
8649       return std::tie( sType, pNext, objectType, objectHandle, tagName, tagSize, pTag );
8650     }
8651 #endif
8652 
8653 
8654 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
8655 auto operator<=>( DebugUtilsObjectTagInfoEXT const & ) const = default;
8656 #else
operator ==VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8657     bool operator==( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8658     {
8659 #if defined( VULKAN_HPP_USE_REFLECT )
8660       return this->reflect() == rhs.reflect();
8661 #else
8662       return ( sType == rhs.sType )
8663           && ( pNext == rhs.pNext )
8664           && ( objectType == rhs.objectType )
8665           && ( objectHandle == rhs.objectHandle )
8666           && ( tagName == rhs.tagName )
8667           && ( tagSize == rhs.tagSize )
8668           && ( pTag == rhs.pTag );
8669 #endif
8670     }
8671 
operator !=VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT8672     bool operator!=( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
8673     {
8674       return !operator==( rhs );
8675     }
8676 #endif
8677 
8678     public:
8679     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT;
8680     const void * pNext = {};
8681     VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
8682     uint64_t objectHandle = {};
8683     uint64_t tagName = {};
8684     size_t tagSize = {};
8685     const void * pTag = {};
8686 
8687   };
8688 
8689   template <>
8690   struct CppType<StructureType, StructureType::eDebugUtilsObjectTagInfoEXT>
8691   {
8692     using Type = DebugUtilsObjectTagInfoEXT;
8693   };
8694 
8695   struct MemoryBarrier2
8696   {
8697     using NativeType = VkMemoryBarrier2;
8698 
8699     static const bool allowDuplicate = false;
8700     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrier2;
8701 
8702 
8703 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryBarrier2VULKAN_HPP_NAMESPACE::MemoryBarrier28704 VULKAN_HPP_CONSTEXPR MemoryBarrier2(VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
8705     : pNext( pNext_ ), srcStageMask( srcStageMask_ ), srcAccessMask( srcAccessMask_ ), dstStageMask( dstStageMask_ ), dstAccessMask( dstAccessMask_ )
8706     {}
8707 
8708     VULKAN_HPP_CONSTEXPR MemoryBarrier2( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8709 
MemoryBarrier2VULKAN_HPP_NAMESPACE::MemoryBarrier28710     MemoryBarrier2( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
8711       : MemoryBarrier2( *reinterpret_cast<MemoryBarrier2 const *>( &rhs ) )
8712     {}
8713 
8714 
8715     MemoryBarrier2 & operator=( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8716 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8717 
operator =VULKAN_HPP_NAMESPACE::MemoryBarrier28718     MemoryBarrier2 & operator=( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
8719     {
8720       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier2 const *>( &rhs );
8721       return *this;
8722     }
8723 
8724 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryBarrier28725     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8726     {
8727       pNext = pNext_;
8728       return *this;
8729     }
8730 
setSrcStageMaskVULKAN_HPP_NAMESPACE::MemoryBarrier28731     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
8732     {
8733       srcStageMask = srcStageMask_;
8734       return *this;
8735     }
8736 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier28737     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
8738     {
8739       srcAccessMask = srcAccessMask_;
8740       return *this;
8741     }
8742 
setDstStageMaskVULKAN_HPP_NAMESPACE::MemoryBarrier28743     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
8744     {
8745       dstStageMask = dstStageMask_;
8746       return *this;
8747     }
8748 
setDstAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier28749     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
8750     {
8751       dstAccessMask = dstAccessMask_;
8752       return *this;
8753     }
8754 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8755 
8756 
operator VkMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::MemoryBarrier28757     operator VkMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
8758     {
8759       return *reinterpret_cast<const VkMemoryBarrier2*>( this );
8760     }
8761 
operator VkMemoryBarrier2&VULKAN_HPP_NAMESPACE::MemoryBarrier28762     operator VkMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
8763     {
8764       return *reinterpret_cast<VkMemoryBarrier2*>( this );
8765     }
8766 
8767 #if defined( VULKAN_HPP_USE_REFLECT )
8768 #if 14 <= VULKAN_HPP_CPP_VERSION
8769     auto
8770 #else
8771     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, VULKAN_HPP_NAMESPACE::AccessFlags2 const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, VULKAN_HPP_NAMESPACE::AccessFlags2 const &>
8772 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryBarrier28773       reflect() const VULKAN_HPP_NOEXCEPT
8774     {
8775       return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask );
8776     }
8777 #endif
8778 
8779 
8780 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
8781 auto operator<=>( MemoryBarrier2 const & ) const = default;
8782 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryBarrier28783     bool operator==( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
8784     {
8785 #if defined( VULKAN_HPP_USE_REFLECT )
8786       return this->reflect() == rhs.reflect();
8787 #else
8788       return ( sType == rhs.sType )
8789           && ( pNext == rhs.pNext )
8790           && ( srcStageMask == rhs.srcStageMask )
8791           && ( srcAccessMask == rhs.srcAccessMask )
8792           && ( dstStageMask == rhs.dstStageMask )
8793           && ( dstAccessMask == rhs.dstAccessMask );
8794 #endif
8795     }
8796 
operator !=VULKAN_HPP_NAMESPACE::MemoryBarrier28797     bool operator!=( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
8798     {
8799       return !operator==( rhs );
8800     }
8801 #endif
8802 
8803     public:
8804     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryBarrier2;
8805     const void * pNext = {};
8806     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask = {};
8807     VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask = {};
8808     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask = {};
8809     VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask = {};
8810 
8811   };
8812 
8813   template <>
8814   struct CppType<StructureType, StructureType::eMemoryBarrier2>
8815   {
8816     using Type = MemoryBarrier2;
8817   };
8818   using MemoryBarrier2KHR = MemoryBarrier2;
8819 
8820   struct ImageSubresourceRange
8821   {
8822     using NativeType = VkImageSubresourceRange;
8823 
8824 
8825 
8826 
8827 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceRangeVULKAN_HPP_NAMESPACE::ImageSubresourceRange8828 VULKAN_HPP_CONSTEXPR ImageSubresourceRange(VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, uint32_t baseMipLevel_ = {}, uint32_t levelCount_ = {}, uint32_t baseArrayLayer_ = {}, uint32_t layerCount_ = {}) VULKAN_HPP_NOEXCEPT
8829     : aspectMask( aspectMask_ ), baseMipLevel( baseMipLevel_ ), levelCount( levelCount_ ), baseArrayLayer( baseArrayLayer_ ), layerCount( layerCount_ )
8830     {}
8831 
8832     VULKAN_HPP_CONSTEXPR ImageSubresourceRange( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8833 
ImageSubresourceRangeVULKAN_HPP_NAMESPACE::ImageSubresourceRange8834     ImageSubresourceRange( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
8835       : ImageSubresourceRange( *reinterpret_cast<ImageSubresourceRange const *>( &rhs ) )
8836     {}
8837 
8838 
8839     ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8840 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8841 
operator =VULKAN_HPP_NAMESPACE::ImageSubresourceRange8842     ImageSubresourceRange & operator=( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT
8843     {
8844       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresourceRange const *>( &rhs );
8845       return *this;
8846     }
8847 
8848 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresourceRange8849     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
8850     {
8851       aspectMask = aspectMask_;
8852       return *this;
8853     }
8854 
setBaseMipLevelVULKAN_HPP_NAMESPACE::ImageSubresourceRange8855     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseMipLevel( uint32_t baseMipLevel_ ) VULKAN_HPP_NOEXCEPT
8856     {
8857       baseMipLevel = baseMipLevel_;
8858       return *this;
8859     }
8860 
setLevelCountVULKAN_HPP_NAMESPACE::ImageSubresourceRange8861     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLevelCount( uint32_t levelCount_ ) VULKAN_HPP_NOEXCEPT
8862     {
8863       levelCount = levelCount_;
8864       return *this;
8865     }
8866 
setBaseArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresourceRange8867     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT
8868     {
8869       baseArrayLayer = baseArrayLayer_;
8870       return *this;
8871     }
8872 
setLayerCountVULKAN_HPP_NAMESPACE::ImageSubresourceRange8873     VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
8874     {
8875       layerCount = layerCount_;
8876       return *this;
8877     }
8878 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
8879 
8880 
operator VkImageSubresourceRange const&VULKAN_HPP_NAMESPACE::ImageSubresourceRange8881     operator VkImageSubresourceRange const &() const VULKAN_HPP_NOEXCEPT
8882     {
8883       return *reinterpret_cast<const VkImageSubresourceRange*>( this );
8884     }
8885 
operator VkImageSubresourceRange&VULKAN_HPP_NAMESPACE::ImageSubresourceRange8886     operator VkImageSubresourceRange &() VULKAN_HPP_NOEXCEPT
8887     {
8888       return *reinterpret_cast<VkImageSubresourceRange*>( this );
8889     }
8890 
8891 #if defined( VULKAN_HPP_USE_REFLECT )
8892 #if 14 <= VULKAN_HPP_CPP_VERSION
8893     auto
8894 #else
8895     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
8896 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresourceRange8897       reflect() const VULKAN_HPP_NOEXCEPT
8898     {
8899       return std::tie( aspectMask, baseMipLevel, levelCount, baseArrayLayer, layerCount );
8900     }
8901 #endif
8902 
8903 
8904 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
8905 auto operator<=>( ImageSubresourceRange const & ) const = default;
8906 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresourceRange8907     bool operator==( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT
8908     {
8909 #if defined( VULKAN_HPP_USE_REFLECT )
8910       return this->reflect() == rhs.reflect();
8911 #else
8912       return ( aspectMask == rhs.aspectMask )
8913           && ( baseMipLevel == rhs.baseMipLevel )
8914           && ( levelCount == rhs.levelCount )
8915           && ( baseArrayLayer == rhs.baseArrayLayer )
8916           && ( layerCount == rhs.layerCount );
8917 #endif
8918     }
8919 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresourceRange8920     bool operator!=( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT
8921     {
8922       return !operator==( rhs );
8923     }
8924 #endif
8925 
8926     public:
8927     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
8928     uint32_t baseMipLevel = {};
8929     uint32_t levelCount = {};
8930     uint32_t baseArrayLayer = {};
8931     uint32_t layerCount = {};
8932 
8933   };
8934 
8935   struct ImageMemoryBarrier2
8936   {
8937     using NativeType = VkImageMemoryBarrier2;
8938 
8939     static const bool allowDuplicate = false;
8940     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryBarrier2;
8941 
8942 
8943 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryBarrier2VULKAN_HPP_NAMESPACE::ImageMemoryBarrier28944 VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2(VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t srcQueueFamilyIndex_ = {}, uint32_t dstQueueFamilyIndex_ = {}, VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
8945     : pNext( pNext_ ), srcStageMask( srcStageMask_ ), srcAccessMask( srcAccessMask_ ), dstStageMask( dstStageMask_ ), dstAccessMask( dstAccessMask_ ), oldLayout( oldLayout_ ), newLayout( newLayout_ ), srcQueueFamilyIndex( srcQueueFamilyIndex_ ), dstQueueFamilyIndex( dstQueueFamilyIndex_ ), image( image_ ), subresourceRange( subresourceRange_ )
8946     {}
8947 
8948     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8949 
ImageMemoryBarrier2VULKAN_HPP_NAMESPACE::ImageMemoryBarrier28950     ImageMemoryBarrier2( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
8951       : ImageMemoryBarrier2( *reinterpret_cast<ImageMemoryBarrier2 const *>( &rhs ) )
8952     {}
8953 
8954 
8955     ImageMemoryBarrier2 & operator=( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
8956 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
8957 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryBarrier28958     ImageMemoryBarrier2 & operator=( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT
8959     {
8960       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 const *>( &rhs );
8961       return *this;
8962     }
8963 
8964 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryBarrier28965     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
8966     {
8967       pNext = pNext_;
8968       return *this;
8969     }
8970 
setSrcStageMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier28971     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask_ ) VULKAN_HPP_NOEXCEPT
8972     {
8973       srcStageMask = srcStageMask_;
8974       return *this;
8975     }
8976 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier28977     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
8978     {
8979       srcAccessMask = srcAccessMask_;
8980       return *this;
8981     }
8982 
setDstStageMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier28983     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask_ ) VULKAN_HPP_NOEXCEPT
8984     {
8985       dstStageMask = dstStageMask_;
8986       return *this;
8987     }
8988 
setDstAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier28989     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
8990     {
8991       dstAccessMask = dstAccessMask_;
8992       return *this;
8993     }
8994 
setOldLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier28995     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
8996     {
8997       oldLayout = oldLayout_;
8998       return *this;
8999     }
9000 
setNewLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier29001     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
9002     {
9003       newLayout = newLayout_;
9004       return *this;
9005     }
9006 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier29007     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
9008     {
9009       srcQueueFamilyIndex = srcQueueFamilyIndex_;
9010       return *this;
9011     }
9012 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier29013     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
9014     {
9015       dstQueueFamilyIndex = dstQueueFamilyIndex_;
9016       return *this;
9017     }
9018 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryBarrier29019     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
9020     {
9021       image = image_;
9022       return *this;
9023     }
9024 
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageMemoryBarrier29025     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
9026     {
9027       subresourceRange = subresourceRange_;
9028       return *this;
9029     }
9030 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9031 
9032 
operator VkImageMemoryBarrier2 const&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier29033     operator VkImageMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT
9034     {
9035       return *reinterpret_cast<const VkImageMemoryBarrier2*>( this );
9036     }
9037 
operator VkImageMemoryBarrier2&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier29038     operator VkImageMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT
9039     {
9040       return *reinterpret_cast<VkImageMemoryBarrier2*>( this );
9041     }
9042 
9043 #if defined( VULKAN_HPP_USE_REFLECT )
9044 #if 14 <= VULKAN_HPP_CPP_VERSION
9045     auto
9046 #else
9047     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, VULKAN_HPP_NAMESPACE::AccessFlags2 const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, VULKAN_HPP_NAMESPACE::AccessFlags2 const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
9048 #endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryBarrier29049       reflect() const VULKAN_HPP_NOEXCEPT
9050     {
9051       return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask, oldLayout, newLayout, srcQueueFamilyIndex, dstQueueFamilyIndex, image, subresourceRange );
9052     }
9053 #endif
9054 
9055 
9056 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
9057 auto operator<=>( ImageMemoryBarrier2 const & ) const = default;
9058 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryBarrier29059     bool operator==( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
9060     {
9061 #if defined( VULKAN_HPP_USE_REFLECT )
9062       return this->reflect() == rhs.reflect();
9063 #else
9064       return ( sType == rhs.sType )
9065           && ( pNext == rhs.pNext )
9066           && ( srcStageMask == rhs.srcStageMask )
9067           && ( srcAccessMask == rhs.srcAccessMask )
9068           && ( dstStageMask == rhs.dstStageMask )
9069           && ( dstAccessMask == rhs.dstAccessMask )
9070           && ( oldLayout == rhs.oldLayout )
9071           && ( newLayout == rhs.newLayout )
9072           && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
9073           && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
9074           && ( image == rhs.image )
9075           && ( subresourceRange == rhs.subresourceRange );
9076 #endif
9077     }
9078 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryBarrier29079     bool operator!=( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT
9080     {
9081       return !operator==( rhs );
9082     }
9083 #endif
9084 
9085     public:
9086     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryBarrier2;
9087     const void * pNext = {};
9088     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 srcStageMask = {};
9089     VULKAN_HPP_NAMESPACE::AccessFlags2 srcAccessMask = {};
9090     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 dstStageMask = {};
9091     VULKAN_HPP_NAMESPACE::AccessFlags2 dstAccessMask = {};
9092     VULKAN_HPP_NAMESPACE::ImageLayout oldLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
9093     VULKAN_HPP_NAMESPACE::ImageLayout newLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
9094     uint32_t srcQueueFamilyIndex = {};
9095     uint32_t dstQueueFamilyIndex = {};
9096     VULKAN_HPP_NAMESPACE::Image image = {};
9097     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {};
9098 
9099   };
9100 
9101   template <>
9102   struct CppType<StructureType, StructureType::eImageMemoryBarrier2>
9103   {
9104     using Type = ImageMemoryBarrier2;
9105   };
9106   using ImageMemoryBarrier2KHR = ImageMemoryBarrier2;
9107 
9108   struct DependencyInfo
9109   {
9110     using NativeType = VkDependencyInfo;
9111 
9112     static const bool allowDuplicate = false;
9113     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDependencyInfo;
9114 
9115 
9116 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo9117 VULKAN_HPP_CONSTEXPR DependencyInfo(VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ = {}, uint32_t memoryBarrierCount_ = {}, const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * pMemoryBarriers_ = {}, uint32_t bufferMemoryBarrierCount_ = {}, const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers_ = {}, uint32_t imageMemoryBarrierCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * pImageMemoryBarriers_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
9118     : pNext( pNext_ ), dependencyFlags( dependencyFlags_ ), memoryBarrierCount( memoryBarrierCount_ ), pMemoryBarriers( pMemoryBarriers_ ), bufferMemoryBarrierCount( bufferMemoryBarrierCount_ ), pBufferMemoryBarriers( pBufferMemoryBarriers_ ), imageMemoryBarrierCount( imageMemoryBarrierCount_ ), pImageMemoryBarriers( pImageMemoryBarriers_ )
9119     {}
9120 
9121     VULKAN_HPP_CONSTEXPR DependencyInfo( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9122 
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo9123     DependencyInfo( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9124       : DependencyInfo( *reinterpret_cast<DependencyInfo const *>( &rhs ) )
9125     {}
9126 
9127 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DependencyInfoVULKAN_HPP_NAMESPACE::DependencyInfo9128     DependencyInfo( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryBarrier2> const & memoryBarriers_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2> const & bufferMemoryBarriers_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2> const & imageMemoryBarriers_ = {}, const void * pNext_ = nullptr )
9129     : pNext( pNext_ ), dependencyFlags( dependencyFlags_ ), memoryBarrierCount( static_cast<uint32_t>( memoryBarriers_.size() ) ), pMemoryBarriers( memoryBarriers_.data() ), bufferMemoryBarrierCount( static_cast<uint32_t>( bufferMemoryBarriers_.size() ) ), pBufferMemoryBarriers( bufferMemoryBarriers_.data() ), imageMemoryBarrierCount( static_cast<uint32_t>( imageMemoryBarriers_.size() ) ), pImageMemoryBarriers( imageMemoryBarriers_.data() )
9130     {}
9131 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9132 
9133 
9134     DependencyInfo & operator=( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9136 
operator =VULKAN_HPP_NAMESPACE::DependencyInfo9137     DependencyInfo & operator=( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9138     {
9139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DependencyInfo const *>( &rhs );
9140       return *this;
9141     }
9142 
9143 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DependencyInfo9144     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9145     {
9146       pNext = pNext_;
9147       return *this;
9148     }
9149 
setDependencyFlagsVULKAN_HPP_NAMESPACE::DependencyInfo9150     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
9151     {
9152       dependencyFlags = dependencyFlags_;
9153       return *this;
9154     }
9155 
setMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo9156     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setMemoryBarrierCount( uint32_t memoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
9157     {
9158       memoryBarrierCount = memoryBarrierCount_;
9159       return *this;
9160     }
9161 
setPMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo9162     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPMemoryBarriers( const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * pMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
9163     {
9164       pMemoryBarriers = pMemoryBarriers_;
9165       return *this;
9166     }
9167 
9168 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo9169     DependencyInfo & setMemoryBarriers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::MemoryBarrier2> const & memoryBarriers_ ) VULKAN_HPP_NOEXCEPT
9170     {
9171       memoryBarrierCount = static_cast<uint32_t>( memoryBarriers_.size() );
9172       pMemoryBarriers = memoryBarriers_.data();
9173       return *this;
9174     }
9175 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9176 
setBufferMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo9177     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setBufferMemoryBarrierCount( uint32_t bufferMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
9178     {
9179       bufferMemoryBarrierCount = bufferMemoryBarrierCount_;
9180       return *this;
9181     }
9182 
setPBufferMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo9183     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPBufferMemoryBarriers( const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
9184     {
9185       pBufferMemoryBarriers = pBufferMemoryBarriers_;
9186       return *this;
9187     }
9188 
9189 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo9190     DependencyInfo & setBufferMemoryBarriers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2> const & bufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
9191     {
9192       bufferMemoryBarrierCount = static_cast<uint32_t>( bufferMemoryBarriers_.size() );
9193       pBufferMemoryBarriers = bufferMemoryBarriers_.data();
9194       return *this;
9195     }
9196 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9197 
setImageMemoryBarrierCountVULKAN_HPP_NAMESPACE::DependencyInfo9198     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setImageMemoryBarrierCount( uint32_t imageMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT
9199     {
9200       imageMemoryBarrierCount = imageMemoryBarrierCount_;
9201       return *this;
9202     }
9203 
setPImageMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo9204     VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPImageMemoryBarriers( const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * pImageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
9205     {
9206       pImageMemoryBarriers = pImageMemoryBarriers_;
9207       return *this;
9208     }
9209 
9210 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageMemoryBarriersVULKAN_HPP_NAMESPACE::DependencyInfo9211     DependencyInfo & setImageMemoryBarriers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2> const & imageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT
9212     {
9213       imageMemoryBarrierCount = static_cast<uint32_t>( imageMemoryBarriers_.size() );
9214       pImageMemoryBarriers = imageMemoryBarriers_.data();
9215       return *this;
9216     }
9217 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9218 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9219 
9220 
operator VkDependencyInfo const&VULKAN_HPP_NAMESPACE::DependencyInfo9221     operator VkDependencyInfo const &() const VULKAN_HPP_NOEXCEPT
9222     {
9223       return *reinterpret_cast<const VkDependencyInfo*>( this );
9224     }
9225 
operator VkDependencyInfo&VULKAN_HPP_NAMESPACE::DependencyInfo9226     operator VkDependencyInfo &() VULKAN_HPP_NOEXCEPT
9227     {
9228       return *reinterpret_cast<VkDependencyInfo*>( this );
9229     }
9230 
9231 #if defined( VULKAN_HPP_USE_REFLECT )
9232 #if 14 <= VULKAN_HPP_CPP_VERSION
9233     auto
9234 #else
9235     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DependencyFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * const &>
9236 #endif
reflectVULKAN_HPP_NAMESPACE::DependencyInfo9237       reflect() const VULKAN_HPP_NOEXCEPT
9238     {
9239       return std::tie( sType, pNext, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers );
9240     }
9241 #endif
9242 
9243 
9244 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
9245 auto operator<=>( DependencyInfo const & ) const = default;
9246 #else
operator ==VULKAN_HPP_NAMESPACE::DependencyInfo9247     bool operator==( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9248     {
9249 #if defined( VULKAN_HPP_USE_REFLECT )
9250       return this->reflect() == rhs.reflect();
9251 #else
9252       return ( sType == rhs.sType )
9253           && ( pNext == rhs.pNext )
9254           && ( dependencyFlags == rhs.dependencyFlags )
9255           && ( memoryBarrierCount == rhs.memoryBarrierCount )
9256           && ( pMemoryBarriers == rhs.pMemoryBarriers )
9257           && ( bufferMemoryBarrierCount == rhs.bufferMemoryBarrierCount )
9258           && ( pBufferMemoryBarriers == rhs.pBufferMemoryBarriers )
9259           && ( imageMemoryBarrierCount == rhs.imageMemoryBarrierCount )
9260           && ( pImageMemoryBarriers == rhs.pImageMemoryBarriers );
9261 #endif
9262     }
9263 
operator !=VULKAN_HPP_NAMESPACE::DependencyInfo9264     bool operator!=( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9265     {
9266       return !operator==( rhs );
9267     }
9268 #endif
9269 
9270     public:
9271     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDependencyInfo;
9272     const void * pNext = {};
9273     VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {};
9274     uint32_t memoryBarrierCount = {};
9275     const VULKAN_HPP_NAMESPACE::MemoryBarrier2 * pMemoryBarriers = {};
9276     uint32_t bufferMemoryBarrierCount = {};
9277     const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 * pBufferMemoryBarriers = {};
9278     uint32_t imageMemoryBarrierCount = {};
9279     const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 * pImageMemoryBarriers = {};
9280 
9281   };
9282 
9283   template <>
9284   struct CppType<StructureType, StructureType::eDependencyInfo>
9285   {
9286     using Type = DependencyInfo;
9287   };
9288   using DependencyInfoKHR = DependencyInfo;
9289 
9290   struct DescriptorBufferInfo
9291   {
9292     using NativeType = VkDescriptorBufferInfo;
9293 
9294 
9295 
9296 
9297 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorBufferInfoVULKAN_HPP_NAMESPACE::DescriptorBufferInfo9298 VULKAN_HPP_CONSTEXPR DescriptorBufferInfo(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize range_ = {}) VULKAN_HPP_NOEXCEPT
9299     : buffer( buffer_ ), offset( offset_ ), range( range_ )
9300     {}
9301 
9302     VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9303 
DescriptorBufferInfoVULKAN_HPP_NAMESPACE::DescriptorBufferInfo9304     DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9305       : DescriptorBufferInfo( *reinterpret_cast<DescriptorBufferInfo const *>( &rhs ) )
9306     {}
9307 
9308 
9309     DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9310 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9311 
operator =VULKAN_HPP_NAMESPACE::DescriptorBufferInfo9312     DescriptorBufferInfo & operator=( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9313     {
9314       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorBufferInfo const *>( &rhs );
9315       return *this;
9316     }
9317 
9318 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBufferVULKAN_HPP_NAMESPACE::DescriptorBufferInfo9319     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
9320     {
9321       buffer = buffer_;
9322       return *this;
9323     }
9324 
setOffsetVULKAN_HPP_NAMESPACE::DescriptorBufferInfo9325     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
9326     {
9327       offset = offset_;
9328       return *this;
9329     }
9330 
setRangeVULKAN_HPP_NAMESPACE::DescriptorBufferInfo9331     VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT
9332     {
9333       range = range_;
9334       return *this;
9335     }
9336 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9337 
9338 
operator VkDescriptorBufferInfo const&VULKAN_HPP_NAMESPACE::DescriptorBufferInfo9339     operator VkDescriptorBufferInfo const &() const VULKAN_HPP_NOEXCEPT
9340     {
9341       return *reinterpret_cast<const VkDescriptorBufferInfo*>( this );
9342     }
9343 
operator VkDescriptorBufferInfo&VULKAN_HPP_NAMESPACE::DescriptorBufferInfo9344     operator VkDescriptorBufferInfo &() VULKAN_HPP_NOEXCEPT
9345     {
9346       return *reinterpret_cast<VkDescriptorBufferInfo*>( this );
9347     }
9348 
9349 #if defined( VULKAN_HPP_USE_REFLECT )
9350 #if 14 <= VULKAN_HPP_CPP_VERSION
9351     auto
9352 #else
9353     std::tuple<VULKAN_HPP_NAMESPACE::Buffer const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
9354 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorBufferInfo9355       reflect() const VULKAN_HPP_NOEXCEPT
9356     {
9357       return std::tie( buffer, offset, range );
9358     }
9359 #endif
9360 
9361 
9362 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
9363 auto operator<=>( DescriptorBufferInfo const & ) const = default;
9364 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorBufferInfo9365     bool operator==( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9366     {
9367 #if defined( VULKAN_HPP_USE_REFLECT )
9368       return this->reflect() == rhs.reflect();
9369 #else
9370       return ( buffer == rhs.buffer )
9371           && ( offset == rhs.offset )
9372           && ( range == rhs.range );
9373 #endif
9374     }
9375 
operator !=VULKAN_HPP_NAMESPACE::DescriptorBufferInfo9376     bool operator!=( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9377     {
9378       return !operator==( rhs );
9379     }
9380 #endif
9381 
9382     public:
9383     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
9384     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
9385     VULKAN_HPP_NAMESPACE::DeviceSize range = {};
9386 
9387   };
9388 
9389   struct DescriptorImageInfo
9390   {
9391     using NativeType = VkDescriptorImageInfo;
9392 
9393 
9394 
9395 
9396 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorImageInfoVULKAN_HPP_NAMESPACE::DescriptorImageInfo9397 VULKAN_HPP_CONSTEXPR DescriptorImageInfo(VULKAN_HPP_NAMESPACE::Sampler sampler_ = {}, VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined) VULKAN_HPP_NOEXCEPT
9398     : sampler( sampler_ ), imageView( imageView_ ), imageLayout( imageLayout_ )
9399     {}
9400 
9401     VULKAN_HPP_CONSTEXPR DescriptorImageInfo( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9402 
DescriptorImageInfoVULKAN_HPP_NAMESPACE::DescriptorImageInfo9403     DescriptorImageInfo( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9404       : DescriptorImageInfo( *reinterpret_cast<DescriptorImageInfo const *>( &rhs ) )
9405     {}
9406 
9407 
9408     DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9409 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9410 
operator =VULKAN_HPP_NAMESPACE::DescriptorImageInfo9411     DescriptorImageInfo & operator=( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9412     {
9413       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorImageInfo const *>( &rhs );
9414       return *this;
9415     }
9416 
9417 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSamplerVULKAN_HPP_NAMESPACE::DescriptorImageInfo9418     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT
9419     {
9420       sampler = sampler_;
9421       return *this;
9422     }
9423 
setImageViewVULKAN_HPP_NAMESPACE::DescriptorImageInfo9424     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
9425     {
9426       imageView = imageView_;
9427       return *this;
9428     }
9429 
setImageLayoutVULKAN_HPP_NAMESPACE::DescriptorImageInfo9430     VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
9431     {
9432       imageLayout = imageLayout_;
9433       return *this;
9434     }
9435 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9436 
9437 
operator VkDescriptorImageInfo const&VULKAN_HPP_NAMESPACE::DescriptorImageInfo9438     operator VkDescriptorImageInfo const &() const VULKAN_HPP_NOEXCEPT
9439     {
9440       return *reinterpret_cast<const VkDescriptorImageInfo*>( this );
9441     }
9442 
operator VkDescriptorImageInfo&VULKAN_HPP_NAMESPACE::DescriptorImageInfo9443     operator VkDescriptorImageInfo &() VULKAN_HPP_NOEXCEPT
9444     {
9445       return *reinterpret_cast<VkDescriptorImageInfo*>( this );
9446     }
9447 
9448 #if defined( VULKAN_HPP_USE_REFLECT )
9449 #if 14 <= VULKAN_HPP_CPP_VERSION
9450     auto
9451 #else
9452     std::tuple<VULKAN_HPP_NAMESPACE::Sampler const &, VULKAN_HPP_NAMESPACE::ImageView const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
9453 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorImageInfo9454       reflect() const VULKAN_HPP_NOEXCEPT
9455     {
9456       return std::tie( sampler, imageView, imageLayout );
9457     }
9458 #endif
9459 
9460 
9461 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
9462 auto operator<=>( DescriptorImageInfo const & ) const = default;
9463 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorImageInfo9464     bool operator==( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9465     {
9466 #if defined( VULKAN_HPP_USE_REFLECT )
9467       return this->reflect() == rhs.reflect();
9468 #else
9469       return ( sampler == rhs.sampler )
9470           && ( imageView == rhs.imageView )
9471           && ( imageLayout == rhs.imageLayout );
9472 #endif
9473     }
9474 
operator !=VULKAN_HPP_NAMESPACE::DescriptorImageInfo9475     bool operator!=( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9476     {
9477       return !operator==( rhs );
9478     }
9479 #endif
9480 
9481     public:
9482     VULKAN_HPP_NAMESPACE::Sampler sampler = {};
9483     VULKAN_HPP_NAMESPACE::ImageView imageView = {};
9484     VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
9485 
9486   };
9487 
9488   struct DescriptorPoolSize
9489   {
9490     using NativeType = VkDescriptorPoolSize;
9491 
9492 
9493 
9494 
9495 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolSizeVULKAN_HPP_NAMESPACE::DescriptorPoolSize9496 VULKAN_HPP_CONSTEXPR DescriptorPoolSize(VULKAN_HPP_NAMESPACE::DescriptorType type_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, uint32_t descriptorCount_ = {}) VULKAN_HPP_NOEXCEPT
9497     : type( type_ ), descriptorCount( descriptorCount_ )
9498     {}
9499 
9500     VULKAN_HPP_CONSTEXPR DescriptorPoolSize( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9501 
DescriptorPoolSizeVULKAN_HPP_NAMESPACE::DescriptorPoolSize9502     DescriptorPoolSize( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
9503       : DescriptorPoolSize( *reinterpret_cast<DescriptorPoolSize const *>( &rhs ) )
9504     {}
9505 
9506 
9507     DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9508 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9509 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolSize9510     DescriptorPoolSize & operator=( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
9511     {
9512       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolSize const *>( &rhs );
9513       return *this;
9514     }
9515 
9516 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setTypeVULKAN_HPP_NAMESPACE::DescriptorPoolSize9517     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT
9518     {
9519       type = type_;
9520       return *this;
9521     }
9522 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorPoolSize9523     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
9524     {
9525       descriptorCount = descriptorCount_;
9526       return *this;
9527     }
9528 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9529 
9530 
operator VkDescriptorPoolSize const&VULKAN_HPP_NAMESPACE::DescriptorPoolSize9531     operator VkDescriptorPoolSize const &() const VULKAN_HPP_NOEXCEPT
9532     {
9533       return *reinterpret_cast<const VkDescriptorPoolSize*>( this );
9534     }
9535 
operator VkDescriptorPoolSize&VULKAN_HPP_NAMESPACE::DescriptorPoolSize9536     operator VkDescriptorPoolSize &() VULKAN_HPP_NOEXCEPT
9537     {
9538       return *reinterpret_cast<VkDescriptorPoolSize*>( this );
9539     }
9540 
9541 #if defined( VULKAN_HPP_USE_REFLECT )
9542 #if 14 <= VULKAN_HPP_CPP_VERSION
9543     auto
9544 #else
9545     std::tuple<VULKAN_HPP_NAMESPACE::DescriptorType const &, uint32_t const &>
9546 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolSize9547       reflect() const VULKAN_HPP_NOEXCEPT
9548     {
9549       return std::tie( type, descriptorCount );
9550     }
9551 #endif
9552 
9553 
9554 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
9555 auto operator<=>( DescriptorPoolSize const & ) const = default;
9556 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolSize9557     bool operator==( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
9558     {
9559 #if defined( VULKAN_HPP_USE_REFLECT )
9560       return this->reflect() == rhs.reflect();
9561 #else
9562       return ( type == rhs.type )
9563           && ( descriptorCount == rhs.descriptorCount );
9564 #endif
9565     }
9566 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolSize9567     bool operator!=( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
9568     {
9569       return !operator==( rhs );
9570     }
9571 #endif
9572 
9573     public:
9574     VULKAN_HPP_NAMESPACE::DescriptorType type = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
9575     uint32_t descriptorCount = {};
9576 
9577   };
9578 
9579   struct DescriptorPoolCreateInfo
9580   {
9581     using NativeType = VkDescriptorPoolCreateInfo;
9582 
9583     static const bool allowDuplicate = false;
9584     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorPoolCreateInfo;
9585 
9586 
9587 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9588 VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo(VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ = {}, uint32_t maxSets_ = {}, uint32_t poolSizeCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
9589     : pNext( pNext_ ), flags( flags_ ), maxSets( maxSets_ ), poolSizeCount( poolSizeCount_ ), pPoolSizes( pPoolSizes_ )
9590     {}
9591 
9592     VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9593 
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9594     DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9595       : DescriptorPoolCreateInfo( *reinterpret_cast<DescriptorPoolCreateInfo const *>( &rhs ) )
9596     {}
9597 
9598 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorPoolCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9599     DescriptorPoolCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_, uint32_t maxSets_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_, const void * pNext_ = nullptr )
9600     : pNext( pNext_ ), flags( flags_ ), maxSets( maxSets_ ), poolSizeCount( static_cast<uint32_t>( poolSizes_.size() ) ), pPoolSizes( poolSizes_.data() )
9601     {}
9602 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9603 
9604 
9605     DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9606 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9607 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9608     DescriptorPoolCreateInfo & operator=( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9609     {
9610       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const *>( &rhs );
9611       return *this;
9612     }
9613 
9614 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9615     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9616     {
9617       pNext = pNext_;
9618       return *this;
9619     }
9620 
setFlagsVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9621     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
9622     {
9623       flags = flags_;
9624       return *this;
9625     }
9626 
setMaxSetsVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9627     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setMaxSets( uint32_t maxSets_ ) VULKAN_HPP_NOEXCEPT
9628     {
9629       maxSets = maxSets_;
9630       return *this;
9631     }
9632 
setPoolSizeCountVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9633     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPoolSizeCount( uint32_t poolSizeCount_ ) VULKAN_HPP_NOEXCEPT
9634     {
9635       poolSizeCount = poolSizeCount_;
9636       return *this;
9637     }
9638 
setPPoolSizesVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9639     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPPoolSizes( const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes_ ) VULKAN_HPP_NOEXCEPT
9640     {
9641       pPoolSizes = pPoolSizes_;
9642       return *this;
9643     }
9644 
9645 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPoolSizesVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9646     DescriptorPoolCreateInfo & setPoolSizes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorPoolSize> const & poolSizes_ ) VULKAN_HPP_NOEXCEPT
9647     {
9648       poolSizeCount = static_cast<uint32_t>( poolSizes_.size() );
9649       pPoolSizes = poolSizes_.data();
9650       return *this;
9651     }
9652 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9653 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9654 
9655 
operator VkDescriptorPoolCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9656     operator VkDescriptorPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
9657     {
9658       return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>( this );
9659     }
9660 
operator VkDescriptorPoolCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9661     operator VkDescriptorPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
9662     {
9663       return *reinterpret_cast<VkDescriptorPoolCreateInfo*>( this );
9664     }
9665 
9666 #if defined( VULKAN_HPP_USE_REFLECT )
9667 #if 14 <= VULKAN_HPP_CPP_VERSION
9668     auto
9669 #else
9670     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * const &>
9671 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9672       reflect() const VULKAN_HPP_NOEXCEPT
9673     {
9674       return std::tie( sType, pNext, flags, maxSets, poolSizeCount, pPoolSizes );
9675     }
9676 #endif
9677 
9678 
9679 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
9680 auto operator<=>( DescriptorPoolCreateInfo const & ) const = default;
9681 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9682     bool operator==( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9683     {
9684 #if defined( VULKAN_HPP_USE_REFLECT )
9685       return this->reflect() == rhs.reflect();
9686 #else
9687       return ( sType == rhs.sType )
9688           && ( pNext == rhs.pNext )
9689           && ( flags == rhs.flags )
9690           && ( maxSets == rhs.maxSets )
9691           && ( poolSizeCount == rhs.poolSizeCount )
9692           && ( pPoolSizes == rhs.pPoolSizes );
9693 #endif
9694     }
9695 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo9696     bool operator!=( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9697     {
9698       return !operator==( rhs );
9699     }
9700 #endif
9701 
9702     public:
9703     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolCreateInfo;
9704     const void * pNext = {};
9705     VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags = {};
9706     uint32_t maxSets = {};
9707     uint32_t poolSizeCount = {};
9708     const VULKAN_HPP_NAMESPACE::DescriptorPoolSize * pPoolSizes = {};
9709 
9710   };
9711 
9712   template <>
9713   struct CppType<StructureType, StructureType::eDescriptorPoolCreateInfo>
9714   {
9715     using Type = DescriptorPoolCreateInfo;
9716   };
9717 
9718   struct DescriptorPoolInlineUniformBlockCreateInfo
9719   {
9720     using NativeType = VkDescriptorPoolInlineUniformBlockCreateInfo;
9721 
9722     static const bool allowDuplicate = false;
9723     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo;
9724 
9725 
9726 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorPoolInlineUniformBlockCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9727 VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo(uint32_t maxInlineUniformBlockBindings_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
9728     : pNext( pNext_ ), maxInlineUniformBlockBindings( maxInlineUniformBlockBindings_ )
9729     {}
9730 
9731     VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9732 
DescriptorPoolInlineUniformBlockCreateInfoVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9733     DescriptorPoolInlineUniformBlockCreateInfo( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9734       : DescriptorPoolInlineUniformBlockCreateInfo( *reinterpret_cast<DescriptorPoolInlineUniformBlockCreateInfo const *>( &rhs ) )
9735     {}
9736 
9737 
9738     DescriptorPoolInlineUniformBlockCreateInfo & operator=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9739 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9740 
operator =VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9741     DescriptorPoolInlineUniformBlockCreateInfo & operator=( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9742     {
9743       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo const *>( &rhs );
9744       return *this;
9745     }
9746 
9747 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9748     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9749     {
9750       pNext = pNext_;
9751       return *this;
9752     }
9753 
setMaxInlineUniformBlockBindingsVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9754     VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo & setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) VULKAN_HPP_NOEXCEPT
9755     {
9756       maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_;
9757       return *this;
9758     }
9759 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9760 
9761 
operator VkDescriptorPoolInlineUniformBlockCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9762     operator VkDescriptorPoolInlineUniformBlockCreateInfo const &() const VULKAN_HPP_NOEXCEPT
9763     {
9764       return *reinterpret_cast<const VkDescriptorPoolInlineUniformBlockCreateInfo*>( this );
9765     }
9766 
operator VkDescriptorPoolInlineUniformBlockCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9767     operator VkDescriptorPoolInlineUniformBlockCreateInfo &() VULKAN_HPP_NOEXCEPT
9768     {
9769       return *reinterpret_cast<VkDescriptorPoolInlineUniformBlockCreateInfo*>( this );
9770     }
9771 
9772 #if defined( VULKAN_HPP_USE_REFLECT )
9773 #if 14 <= VULKAN_HPP_CPP_VERSION
9774     auto
9775 #else
9776     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
9777 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9778       reflect() const VULKAN_HPP_NOEXCEPT
9779     {
9780       return std::tie( sType, pNext, maxInlineUniformBlockBindings );
9781     }
9782 #endif
9783 
9784 
9785 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
9786 auto operator<=>( DescriptorPoolInlineUniformBlockCreateInfo const & ) const = default;
9787 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9788     bool operator==( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9789     {
9790 #if defined( VULKAN_HPP_USE_REFLECT )
9791       return this->reflect() == rhs.reflect();
9792 #else
9793       return ( sType == rhs.sType )
9794           && ( pNext == rhs.pNext )
9795           && ( maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings );
9796 #endif
9797     }
9798 
operator !=VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo9799     bool operator!=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9800     {
9801       return !operator==( rhs );
9802     }
9803 #endif
9804 
9805     public:
9806     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo;
9807     const void * pNext = {};
9808     uint32_t maxInlineUniformBlockBindings = {};
9809 
9810   };
9811 
9812   template <>
9813   struct CppType<StructureType, StructureType::eDescriptorPoolInlineUniformBlockCreateInfo>
9814   {
9815     using Type = DescriptorPoolInlineUniformBlockCreateInfo;
9816   };
9817   using DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo;
9818 
9819   struct DescriptorSetAllocateInfo
9820   {
9821     using NativeType = VkDescriptorSetAllocateInfo;
9822 
9823     static const bool allowDuplicate = false;
9824     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetAllocateInfo;
9825 
9826 
9827 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9828 VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo(VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ = {}, uint32_t descriptorSetCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
9829     : pNext( pNext_ ), descriptorPool( descriptorPool_ ), descriptorSetCount( descriptorSetCount_ ), pSetLayouts( pSetLayouts_ )
9830     {}
9831 
9832     VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9833 
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9834     DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9835       : DescriptorSetAllocateInfo( *reinterpret_cast<DescriptorSetAllocateInfo const *>( &rhs ) )
9836     {}
9837 
9838 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9839     DescriptorSetAllocateInfo( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_, const void * pNext_ = nullptr )
9840     : pNext( pNext_ ), descriptorPool( descriptorPool_ ), descriptorSetCount( static_cast<uint32_t>( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() )
9841     {}
9842 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9843 
9844 
9845     DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9846 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9847 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9848     DescriptorSetAllocateInfo & operator=( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
9849     {
9850       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const *>( &rhs );
9851       return *this;
9852     }
9853 
9854 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9855     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
9856     {
9857       pNext = pNext_;
9858       return *this;
9859     }
9860 
setDescriptorPoolVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9861     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ ) VULKAN_HPP_NOEXCEPT
9862     {
9863       descriptorPool = descriptorPool_;
9864       return *this;
9865     }
9866 
setDescriptorSetCountVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9867     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
9868     {
9869       descriptorSetCount = descriptorSetCount_;
9870       return *this;
9871     }
9872 
setPSetLayoutsVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9873     VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
9874     {
9875       pSetLayouts = pSetLayouts_;
9876       return *this;
9877     }
9878 
9879 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSetLayoutsVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9880     DescriptorSetAllocateInfo & setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT
9881     {
9882       descriptorSetCount = static_cast<uint32_t>( setLayouts_.size() );
9883       pSetLayouts = setLayouts_.data();
9884       return *this;
9885     }
9886 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9887 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
9888 
9889 
operator VkDescriptorSetAllocateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9890     operator VkDescriptorSetAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
9891     {
9892       return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>( this );
9893     }
9894 
operator VkDescriptorSetAllocateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9895     operator VkDescriptorSetAllocateInfo &() VULKAN_HPP_NOEXCEPT
9896     {
9897       return *reinterpret_cast<VkDescriptorSetAllocateInfo*>( this );
9898     }
9899 
9900 #if defined( VULKAN_HPP_USE_REFLECT )
9901 #if 14 <= VULKAN_HPP_CPP_VERSION
9902     auto
9903 #else
9904     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DescriptorPool const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &>
9905 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9906       reflect() const VULKAN_HPP_NOEXCEPT
9907     {
9908       return std::tie( sType, pNext, descriptorPool, descriptorSetCount, pSetLayouts );
9909     }
9910 #endif
9911 
9912 
9913 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
9914 auto operator<=>( DescriptorSetAllocateInfo const & ) const = default;
9915 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9916     bool operator==( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9917     {
9918 #if defined( VULKAN_HPP_USE_REFLECT )
9919       return this->reflect() == rhs.reflect();
9920 #else
9921       return ( sType == rhs.sType )
9922           && ( pNext == rhs.pNext )
9923           && ( descriptorPool == rhs.descriptorPool )
9924           && ( descriptorSetCount == rhs.descriptorSetCount )
9925           && ( pSetLayouts == rhs.pSetLayouts );
9926 #endif
9927     }
9928 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo9929     bool operator!=( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
9930     {
9931       return !operator==( rhs );
9932     }
9933 #endif
9934 
9935     public:
9936     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetAllocateInfo;
9937     const void * pNext = {};
9938     VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool = {};
9939     uint32_t descriptorSetCount = {};
9940     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts = {};
9941 
9942   };
9943 
9944   template <>
9945   struct CppType<StructureType, StructureType::eDescriptorSetAllocateInfo>
9946   {
9947     using Type = DescriptorSetAllocateInfo;
9948   };
9949 
9950   struct DescriptorSetLayoutBinding
9951   {
9952     using NativeType = VkDescriptorSetLayoutBinding;
9953 
9954 
9955 
9956 
9957 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding9958 VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding(uint32_t binding_ = {}, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, uint32_t descriptorCount_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers_ = {}) VULKAN_HPP_NOEXCEPT
9959     : binding( binding_ ), descriptorType( descriptorType_ ), descriptorCount( descriptorCount_ ), stageFlags( stageFlags_ ), pImmutableSamplers( pImmutableSamplers_ )
9960     {}
9961 
9962     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9963 
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding9964     DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
9965       : DescriptorSetLayoutBinding( *reinterpret_cast<DescriptorSetLayoutBinding const *>( &rhs ) )
9966     {}
9967 
9968 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding9969     DescriptorSetLayoutBinding( uint32_t binding_, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_, VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ )
9970     : binding( binding_ ), descriptorType( descriptorType_ ), descriptorCount( static_cast<uint32_t>( immutableSamplers_.size() ) ), stageFlags( stageFlags_ ), pImmutableSamplers( immutableSamplers_.data() )
9971     {}
9972 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
9973 
9974 
9975     DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default;
9976 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
9977 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding9978     DescriptorSetLayoutBinding & operator=( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT
9979     {
9980       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding const *>( &rhs );
9981       return *this;
9982     }
9983 
9984 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding9985     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
9986     {
9987       binding = binding_;
9988       return *this;
9989     }
9990 
setDescriptorTypeVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding9991     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
9992     {
9993       descriptorType = descriptorType_;
9994       return *this;
9995     }
9996 
setDescriptorCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding9997     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
9998     {
9999       descriptorCount = descriptorCount_;
10000       return *this;
10001     }
10002 
setStageFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding10003     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
10004     {
10005       stageFlags = stageFlags_;
10006       return *this;
10007     }
10008 
setPImmutableSamplersVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding10009     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setPImmutableSamplers( const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers_ ) VULKAN_HPP_NOEXCEPT
10010     {
10011       pImmutableSamplers = pImmutableSamplers_;
10012       return *this;
10013     }
10014 
10015 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImmutableSamplersVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding10016     DescriptorSetLayoutBinding & setImmutableSamplers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Sampler> const & immutableSamplers_ ) VULKAN_HPP_NOEXCEPT
10017     {
10018       descriptorCount = static_cast<uint32_t>( immutableSamplers_.size() );
10019       pImmutableSamplers = immutableSamplers_.data();
10020       return *this;
10021     }
10022 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10023 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10024 
10025 
operator VkDescriptorSetLayoutBinding const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding10026     operator VkDescriptorSetLayoutBinding const &() const VULKAN_HPP_NOEXCEPT
10027     {
10028       return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>( this );
10029     }
10030 
operator VkDescriptorSetLayoutBinding&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding10031     operator VkDescriptorSetLayoutBinding &() VULKAN_HPP_NOEXCEPT
10032     {
10033       return *reinterpret_cast<VkDescriptorSetLayoutBinding*>( this );
10034     }
10035 
10036 #if defined( VULKAN_HPP_USE_REFLECT )
10037 #if 14 <= VULKAN_HPP_CPP_VERSION
10038     auto
10039 #else
10040     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::DescriptorType const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, const VULKAN_HPP_NAMESPACE::Sampler * const &>
10041 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding10042       reflect() const VULKAN_HPP_NOEXCEPT
10043     {
10044       return std::tie( binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers );
10045     }
10046 #endif
10047 
10048 
10049 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
10050 auto operator<=>( DescriptorSetLayoutBinding const & ) const = default;
10051 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding10052     bool operator==( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT
10053     {
10054 #if defined( VULKAN_HPP_USE_REFLECT )
10055       return this->reflect() == rhs.reflect();
10056 #else
10057       return ( binding == rhs.binding )
10058           && ( descriptorType == rhs.descriptorType )
10059           && ( descriptorCount == rhs.descriptorCount )
10060           && ( stageFlags == rhs.stageFlags )
10061           && ( pImmutableSamplers == rhs.pImmutableSamplers );
10062 #endif
10063     }
10064 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding10065     bool operator!=( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT
10066     {
10067       return !operator==( rhs );
10068     }
10069 #endif
10070 
10071     public:
10072     uint32_t binding = {};
10073     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
10074     uint32_t descriptorCount = {};
10075     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
10076     const VULKAN_HPP_NAMESPACE::Sampler * pImmutableSamplers = {};
10077 
10078   };
10079 
10080   struct DescriptorSetLayoutBindingFlagsCreateInfo
10081   {
10082     using NativeType = VkDescriptorSetLayoutBindingFlagsCreateInfo;
10083 
10084     static const bool allowDuplicate = false;
10085     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
10086 
10087 
10088 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10089 VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo(uint32_t bindingCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
10090     : pNext( pNext_ ), bindingCount( bindingCount_ ), pBindingFlags( pBindingFlags_ )
10091     {}
10092 
10093     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10094 
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10095     DescriptorSetLayoutBindingFlagsCreateInfo( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10096       : DescriptorSetLayoutBindingFlagsCreateInfo( *reinterpret_cast<DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs ) )
10097     {}
10098 
10099 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutBindingFlagsCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10100     DescriptorSetLayoutBindingFlagsCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const & bindingFlags_, const void * pNext_ = nullptr )
10101     : pNext( pNext_ ), bindingCount( static_cast<uint32_t>( bindingFlags_.size() ) ), pBindingFlags( bindingFlags_.data() )
10102     {}
10103 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10104 
10105 
10106     DescriptorSetLayoutBindingFlagsCreateInfo & operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10107 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10108 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10109     DescriptorSetLayoutBindingFlagsCreateInfo & operator=( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10110     {
10111       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo const *>( &rhs );
10112       return *this;
10113     }
10114 
10115 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10116     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10117     {
10118       pNext = pNext_;
10119       return *this;
10120     }
10121 
setBindingCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10122     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT
10123     {
10124       bindingCount = bindingCount_;
10125       return *this;
10126     }
10127 
setPBindingFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10128     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setPBindingFlags( const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags_ ) VULKAN_HPP_NOEXCEPT
10129     {
10130       pBindingFlags = pBindingFlags_;
10131       return *this;
10132     }
10133 
10134 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindingFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10135     DescriptorSetLayoutBindingFlagsCreateInfo & setBindingFlags( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags> const & bindingFlags_ ) VULKAN_HPP_NOEXCEPT
10136     {
10137       bindingCount = static_cast<uint32_t>( bindingFlags_.size() );
10138       pBindingFlags = bindingFlags_.data();
10139       return *this;
10140     }
10141 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10142 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10143 
10144 
operator VkDescriptorSetLayoutBindingFlagsCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10145     operator VkDescriptorSetLayoutBindingFlagsCreateInfo const &() const VULKAN_HPP_NOEXCEPT
10146     {
10147       return *reinterpret_cast<const VkDescriptorSetLayoutBindingFlagsCreateInfo*>( this );
10148     }
10149 
operator VkDescriptorSetLayoutBindingFlagsCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10150     operator VkDescriptorSetLayoutBindingFlagsCreateInfo &() VULKAN_HPP_NOEXCEPT
10151     {
10152       return *reinterpret_cast<VkDescriptorSetLayoutBindingFlagsCreateInfo*>( this );
10153     }
10154 
10155 #if defined( VULKAN_HPP_USE_REFLECT )
10156 #if 14 <= VULKAN_HPP_CPP_VERSION
10157     auto
10158 #else
10159     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * const &>
10160 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10161       reflect() const VULKAN_HPP_NOEXCEPT
10162     {
10163       return std::tie( sType, pNext, bindingCount, pBindingFlags );
10164     }
10165 #endif
10166 
10167 
10168 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
10169 auto operator<=>( DescriptorSetLayoutBindingFlagsCreateInfo const & ) const = default;
10170 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10171     bool operator==( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10172     {
10173 #if defined( VULKAN_HPP_USE_REFLECT )
10174       return this->reflect() == rhs.reflect();
10175 #else
10176       return ( sType == rhs.sType )
10177           && ( pNext == rhs.pNext )
10178           && ( bindingCount == rhs.bindingCount )
10179           && ( pBindingFlags == rhs.pBindingFlags );
10180 #endif
10181     }
10182 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo10183     bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10184     {
10185       return !operator==( rhs );
10186     }
10187 #endif
10188 
10189     public:
10190     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo;
10191     const void * pNext = {};
10192     uint32_t bindingCount = {};
10193     const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags * pBindingFlags = {};
10194 
10195   };
10196 
10197   template <>
10198   struct CppType<StructureType, StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo>
10199   {
10200     using Type = DescriptorSetLayoutBindingFlagsCreateInfo;
10201   };
10202   using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo;
10203 
10204   struct DescriptorSetLayoutCreateInfo
10205   {
10206     using NativeType = VkDescriptorSetLayoutCreateInfo;
10207 
10208     static const bool allowDuplicate = false;
10209     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutCreateInfo;
10210 
10211 
10212 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10213 VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo(VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ = {}, uint32_t bindingCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
10214     : pNext( pNext_ ), flags( flags_ ), bindingCount( bindingCount_ ), pBindings( pBindings_ )
10215     {}
10216 
10217     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10218 
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10219     DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10220       : DescriptorSetLayoutCreateInfo( *reinterpret_cast<DescriptorSetLayoutCreateInfo const *>( &rhs ) )
10221     {}
10222 
10223 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetLayoutCreateInfoVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10224     DescriptorSetLayoutCreateInfo( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const & bindings_, const void * pNext_ = nullptr )
10225     : pNext( pNext_ ), flags( flags_ ), bindingCount( static_cast<uint32_t>( bindings_.size() ) ), pBindings( bindings_.data() )
10226     {}
10227 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10228 
10229 
10230     DescriptorSetLayoutCreateInfo & operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10231 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10232 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10233     DescriptorSetLayoutCreateInfo & operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10234     {
10235       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const *>( &rhs );
10236       return *this;
10237     }
10238 
10239 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10240     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10241     {
10242       pNext = pNext_;
10243       return *this;
10244     }
10245 
setFlagsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10246     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
10247     {
10248       flags = flags_;
10249       return *this;
10250     }
10251 
setBindingCountVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10252     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT
10253     {
10254       bindingCount = bindingCount_;
10255       return *this;
10256     }
10257 
setPBindingsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10258     VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setPBindings( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings_ ) VULKAN_HPP_NOEXCEPT
10259     {
10260       pBindings = pBindings_;
10261       return *this;
10262     }
10263 
10264 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBindingsVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10265     DescriptorSetLayoutCreateInfo & setBindings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding> const & bindings_ ) VULKAN_HPP_NOEXCEPT
10266     {
10267       bindingCount = static_cast<uint32_t>( bindings_.size() );
10268       pBindings = bindings_.data();
10269       return *this;
10270     }
10271 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10272 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10273 
10274 
operator VkDescriptorSetLayoutCreateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10275     operator VkDescriptorSetLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT
10276     {
10277       return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( this );
10278     }
10279 
operator VkDescriptorSetLayoutCreateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10280     operator VkDescriptorSetLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT
10281     {
10282       return *reinterpret_cast<VkDescriptorSetLayoutCreateInfo*>( this );
10283     }
10284 
10285 #if defined( VULKAN_HPP_USE_REFLECT )
10286 #if 14 <= VULKAN_HPP_CPP_VERSION
10287     auto
10288 #else
10289     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * const &>
10290 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10291       reflect() const VULKAN_HPP_NOEXCEPT
10292     {
10293       return std::tie( sType, pNext, flags, bindingCount, pBindings );
10294     }
10295 #endif
10296 
10297 
10298 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
10299 auto operator<=>( DescriptorSetLayoutCreateInfo const & ) const = default;
10300 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10301     bool operator==( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10302     {
10303 #if defined( VULKAN_HPP_USE_REFLECT )
10304       return this->reflect() == rhs.reflect();
10305 #else
10306       return ( sType == rhs.sType )
10307           && ( pNext == rhs.pNext )
10308           && ( flags == rhs.flags )
10309           && ( bindingCount == rhs.bindingCount )
10310           && ( pBindings == rhs.pBindings );
10311 #endif
10312     }
10313 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo10314     bool operator!=( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10315     {
10316       return !operator==( rhs );
10317     }
10318 #endif
10319 
10320     public:
10321     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo;
10322     const void * pNext = {};
10323     VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags = {};
10324     uint32_t bindingCount = {};
10325     const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding * pBindings = {};
10326 
10327   };
10328 
10329   template <>
10330   struct CppType<StructureType, StructureType::eDescriptorSetLayoutCreateInfo>
10331   {
10332     using Type = DescriptorSetLayoutCreateInfo;
10333   };
10334 
10335   struct DescriptorSetLayoutSupport
10336   {
10337     using NativeType = VkDescriptorSetLayoutSupport;
10338 
10339     static const bool allowDuplicate = false;
10340     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutSupport;
10341 
10342 
10343 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport10344 VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport(VULKAN_HPP_NAMESPACE::Bool32 supported_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
10345     : pNext( pNext_ ), supported( supported_ )
10346     {}
10347 
10348     VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10349 
DescriptorSetLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport10350     DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
10351       : DescriptorSetLayoutSupport( *reinterpret_cast<DescriptorSetLayoutSupport const *>( &rhs ) )
10352     {}
10353 
10354 
10355     DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10356 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10357 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport10358     DescriptorSetLayoutSupport & operator=( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
10359     {
10360       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport const *>( &rhs );
10361       return *this;
10362     }
10363 
10364 
operator VkDescriptorSetLayoutSupport const&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport10365     operator VkDescriptorSetLayoutSupport const &() const VULKAN_HPP_NOEXCEPT
10366     {
10367       return *reinterpret_cast<const VkDescriptorSetLayoutSupport*>( this );
10368     }
10369 
operator VkDescriptorSetLayoutSupport&VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport10370     operator VkDescriptorSetLayoutSupport &() VULKAN_HPP_NOEXCEPT
10371     {
10372       return *reinterpret_cast<VkDescriptorSetLayoutSupport*>( this );
10373     }
10374 
10375 #if defined( VULKAN_HPP_USE_REFLECT )
10376 #if 14 <= VULKAN_HPP_CPP_VERSION
10377     auto
10378 #else
10379     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
10380 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport10381       reflect() const VULKAN_HPP_NOEXCEPT
10382     {
10383       return std::tie( sType, pNext, supported );
10384     }
10385 #endif
10386 
10387 
10388 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
10389 auto operator<=>( DescriptorSetLayoutSupport const & ) const = default;
10390 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport10391     bool operator==( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
10392     {
10393 #if defined( VULKAN_HPP_USE_REFLECT )
10394       return this->reflect() == rhs.reflect();
10395 #else
10396       return ( sType == rhs.sType )
10397           && ( pNext == rhs.pNext )
10398           && ( supported == rhs.supported );
10399 #endif
10400     }
10401 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport10402     bool operator!=( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
10403     {
10404       return !operator==( rhs );
10405     }
10406 #endif
10407 
10408     public:
10409     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutSupport;
10410     void * pNext = {};
10411     VULKAN_HPP_NAMESPACE::Bool32 supported = {};
10412 
10413   };
10414 
10415   template <>
10416   struct CppType<StructureType, StructureType::eDescriptorSetLayoutSupport>
10417   {
10418     using Type = DescriptorSetLayoutSupport;
10419   };
10420   using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport;
10421 
10422   struct DescriptorSetVariableDescriptorCountAllocateInfo
10423   {
10424     using NativeType = VkDescriptorSetVariableDescriptorCountAllocateInfo;
10425 
10426     static const bool allowDuplicate = false;
10427     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
10428 
10429 
10430 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10431 VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo(uint32_t descriptorSetCount_ = {}, const uint32_t * pDescriptorCounts_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
10432     : pNext( pNext_ ), descriptorSetCount( descriptorSetCount_ ), pDescriptorCounts( pDescriptorCounts_ )
10433     {}
10434 
10435     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10436 
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10437     DescriptorSetVariableDescriptorCountAllocateInfo( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10438       : DescriptorSetVariableDescriptorCountAllocateInfo( *reinterpret_cast<DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs ) )
10439     {}
10440 
10441 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DescriptorSetVariableDescriptorCountAllocateInfoVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10442     DescriptorSetVariableDescriptorCountAllocateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_, const void * pNext_ = nullptr )
10443     : pNext( pNext_ ), descriptorSetCount( static_cast<uint32_t>( descriptorCounts_.size() ) ), pDescriptorCounts( descriptorCounts_.data() )
10444     {}
10445 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10446 
10447 
10448     DescriptorSetVariableDescriptorCountAllocateInfo & operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10449 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10450 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10451     DescriptorSetVariableDescriptorCountAllocateInfo & operator=( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10452     {
10453       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo const *>( &rhs );
10454       return *this;
10455     }
10456 
10457 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10458     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10459     {
10460       pNext = pNext_;
10461       return *this;
10462     }
10463 
setDescriptorSetCountVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10464     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT
10465     {
10466       descriptorSetCount = descriptorSetCount_;
10467       return *this;
10468     }
10469 
setPDescriptorCountsVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10470     VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setPDescriptorCounts( const uint32_t * pDescriptorCounts_ ) VULKAN_HPP_NOEXCEPT
10471     {
10472       pDescriptorCounts = pDescriptorCounts_;
10473       return *this;
10474     }
10475 
10476 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDescriptorCountsVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10477     DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & descriptorCounts_ ) VULKAN_HPP_NOEXCEPT
10478     {
10479       descriptorSetCount = static_cast<uint32_t>( descriptorCounts_.size() );
10480       pDescriptorCounts = descriptorCounts_.data();
10481       return *this;
10482     }
10483 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10484 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10485 
10486 
operator VkDescriptorSetVariableDescriptorCountAllocateInfo const&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10487     operator VkDescriptorSetVariableDescriptorCountAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
10488     {
10489       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountAllocateInfo*>( this );
10490     }
10491 
operator VkDescriptorSetVariableDescriptorCountAllocateInfo&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10492     operator VkDescriptorSetVariableDescriptorCountAllocateInfo &() VULKAN_HPP_NOEXCEPT
10493     {
10494       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountAllocateInfo*>( this );
10495     }
10496 
10497 #if defined( VULKAN_HPP_USE_REFLECT )
10498 #if 14 <= VULKAN_HPP_CPP_VERSION
10499     auto
10500 #else
10501     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &>
10502 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10503       reflect() const VULKAN_HPP_NOEXCEPT
10504     {
10505       return std::tie( sType, pNext, descriptorSetCount, pDescriptorCounts );
10506     }
10507 #endif
10508 
10509 
10510 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
10511 auto operator<=>( DescriptorSetVariableDescriptorCountAllocateInfo const & ) const = default;
10512 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10513     bool operator==( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10514     {
10515 #if defined( VULKAN_HPP_USE_REFLECT )
10516       return this->reflect() == rhs.reflect();
10517 #else
10518       return ( sType == rhs.sType )
10519           && ( pNext == rhs.pNext )
10520           && ( descriptorSetCount == rhs.descriptorSetCount )
10521           && ( pDescriptorCounts == rhs.pDescriptorCounts );
10522 #endif
10523     }
10524 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo10525     bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10526     {
10527       return !operator==( rhs );
10528     }
10529 #endif
10530 
10531     public:
10532     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo;
10533     const void * pNext = {};
10534     uint32_t descriptorSetCount = {};
10535     const uint32_t * pDescriptorCounts = {};
10536 
10537   };
10538 
10539   template <>
10540   struct CppType<StructureType, StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo>
10541   {
10542     using Type = DescriptorSetVariableDescriptorCountAllocateInfo;
10543   };
10544   using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo;
10545 
10546   struct DescriptorSetVariableDescriptorCountLayoutSupport
10547   {
10548     using NativeType = VkDescriptorSetVariableDescriptorCountLayoutSupport;
10549 
10550     static const bool allowDuplicate = false;
10551     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
10552 
10553 
10554 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DescriptorSetVariableDescriptorCountLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport10555 VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport(uint32_t maxVariableDescriptorCount_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
10556     : pNext( pNext_ ), maxVariableDescriptorCount( maxVariableDescriptorCount_ )
10557     {}
10558 
10559     VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10560 
DescriptorSetVariableDescriptorCountLayoutSupportVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport10561     DescriptorSetVariableDescriptorCountLayoutSupport( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
10562       : DescriptorSetVariableDescriptorCountLayoutSupport( *reinterpret_cast<DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs ) )
10563     {}
10564 
10565 
10566     DescriptorSetVariableDescriptorCountLayoutSupport & operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10567 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10568 
operator =VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport10569     DescriptorSetVariableDescriptorCountLayoutSupport & operator=( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT
10570     {
10571       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport const *>( &rhs );
10572       return *this;
10573     }
10574 
10575 
operator VkDescriptorSetVariableDescriptorCountLayoutSupport const&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport10576     operator VkDescriptorSetVariableDescriptorCountLayoutSupport const &() const VULKAN_HPP_NOEXCEPT
10577     {
10578       return *reinterpret_cast<const VkDescriptorSetVariableDescriptorCountLayoutSupport*>( this );
10579     }
10580 
operator VkDescriptorSetVariableDescriptorCountLayoutSupport&VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport10581     operator VkDescriptorSetVariableDescriptorCountLayoutSupport &() VULKAN_HPP_NOEXCEPT
10582     {
10583       return *reinterpret_cast<VkDescriptorSetVariableDescriptorCountLayoutSupport*>( this );
10584     }
10585 
10586 #if defined( VULKAN_HPP_USE_REFLECT )
10587 #if 14 <= VULKAN_HPP_CPP_VERSION
10588     auto
10589 #else
10590     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
10591 #endif
reflectVULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport10592       reflect() const VULKAN_HPP_NOEXCEPT
10593     {
10594       return std::tie( sType, pNext, maxVariableDescriptorCount );
10595     }
10596 #endif
10597 
10598 
10599 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
10600 auto operator<=>( DescriptorSetVariableDescriptorCountLayoutSupport const & ) const = default;
10601 #else
operator ==VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport10602     bool operator==( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
10603     {
10604 #if defined( VULKAN_HPP_USE_REFLECT )
10605       return this->reflect() == rhs.reflect();
10606 #else
10607       return ( sType == rhs.sType )
10608           && ( pNext == rhs.pNext )
10609           && ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount );
10610 #endif
10611     }
10612 
operator !=VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport10613     bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT
10614     {
10615       return !operator==( rhs );
10616     }
10617 #endif
10618 
10619     public:
10620     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport;
10621     void * pNext = {};
10622     uint32_t maxVariableDescriptorCount = {};
10623 
10624   };
10625 
10626   template <>
10627   struct CppType<StructureType, StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport>
10628   {
10629     using Type = DescriptorSetVariableDescriptorCountLayoutSupport;
10630   };
10631   using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport;
10632 
10633   struct DeviceBufferMemoryRequirements
10634   {
10635     using NativeType = VkDeviceBufferMemoryRequirements;
10636 
10637     static const bool allowDuplicate = false;
10638     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceBufferMemoryRequirements;
10639 
10640 
10641 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceBufferMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10642 VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements(const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
10643     : pNext( pNext_ ), pCreateInfo( pCreateInfo_ )
10644     {}
10645 
10646     VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10647 
DeviceBufferMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10648     DeviceBufferMemoryRequirements( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
10649       : DeviceBufferMemoryRequirements( *reinterpret_cast<DeviceBufferMemoryRequirements const *>( &rhs ) )
10650     {}
10651 
10652 
10653     DeviceBufferMemoryRequirements & operator=( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10654 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10655 
operator =VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10656     DeviceBufferMemoryRequirements & operator=( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
10657     {
10658       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements const *>( &rhs );
10659       return *this;
10660     }
10661 
10662 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10663     VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10664     {
10665       pNext = pNext_;
10666       return *this;
10667     }
10668 
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10669     VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPCreateInfo( const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
10670     {
10671       pCreateInfo = pCreateInfo_;
10672       return *this;
10673     }
10674 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10675 
10676 
operator VkDeviceBufferMemoryRequirements const&VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10677     operator VkDeviceBufferMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
10678     {
10679       return *reinterpret_cast<const VkDeviceBufferMemoryRequirements*>( this );
10680     }
10681 
operator VkDeviceBufferMemoryRequirements&VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10682     operator VkDeviceBufferMemoryRequirements &() VULKAN_HPP_NOEXCEPT
10683     {
10684       return *reinterpret_cast<VkDeviceBufferMemoryRequirements*>( this );
10685     }
10686 
10687 #if defined( VULKAN_HPP_USE_REFLECT )
10688 #if 14 <= VULKAN_HPP_CPP_VERSION
10689     auto
10690 #else
10691     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const VULKAN_HPP_NAMESPACE::BufferCreateInfo * const &>
10692 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10693       reflect() const VULKAN_HPP_NOEXCEPT
10694     {
10695       return std::tie( sType, pNext, pCreateInfo );
10696     }
10697 #endif
10698 
10699 
10700 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
10701 auto operator<=>( DeviceBufferMemoryRequirements const & ) const = default;
10702 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10703     bool operator==( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
10704     {
10705 #if defined( VULKAN_HPP_USE_REFLECT )
10706       return this->reflect() == rhs.reflect();
10707 #else
10708       return ( sType == rhs.sType )
10709           && ( pNext == rhs.pNext )
10710           && ( pCreateInfo == rhs.pCreateInfo );
10711 #endif
10712     }
10713 
operator !=VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements10714     bool operator!=( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
10715     {
10716       return !operator==( rhs );
10717     }
10718 #endif
10719 
10720     public:
10721     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceBufferMemoryRequirements;
10722     const void * pNext = {};
10723     const VULKAN_HPP_NAMESPACE::BufferCreateInfo * pCreateInfo = {};
10724 
10725   };
10726 
10727   template <>
10728   struct CppType<StructureType, StructureType::eDeviceBufferMemoryRequirements>
10729   {
10730     using Type = DeviceBufferMemoryRequirements;
10731   };
10732   using DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements;
10733 
10734   struct DeviceQueueCreateInfo
10735   {
10736     using NativeType = VkDeviceQueueCreateInfo;
10737 
10738     static const bool allowDuplicate = false;
10739     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueCreateInfo;
10740 
10741 
10742 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10743 VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo(VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ = {}, uint32_t queueFamilyIndex_ = {}, uint32_t queueCount_ = {}, const float * pQueuePriorities_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
10744     : pNext( pNext_ ), flags( flags_ ), queueFamilyIndex( queueFamilyIndex_ ), queueCount( queueCount_ ), pQueuePriorities( pQueuePriorities_ )
10745     {}
10746 
10747     VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10748 
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10749     DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10750       : DeviceQueueCreateInfo( *reinterpret_cast<DeviceQueueCreateInfo const *>( &rhs ) )
10751     {}
10752 
10753 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceQueueCreateInfoVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10754     DeviceQueueCreateInfo( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_, uint32_t queueFamilyIndex_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_, const void * pNext_ = nullptr )
10755     : pNext( pNext_ ), flags( flags_ ), queueFamilyIndex( queueFamilyIndex_ ), queueCount( static_cast<uint32_t>( queuePriorities_.size() ) ), pQueuePriorities( queuePriorities_.data() )
10756     {}
10757 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10758 
10759 
10760     DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10761 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10762 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10763     DeviceQueueCreateInfo & operator=( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
10764     {
10765       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo const *>( &rhs );
10766       return *this;
10767     }
10768 
10769 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10770     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
10771     {
10772       pNext = pNext_;
10773       return *this;
10774     }
10775 
setFlagsVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10776     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
10777     {
10778       flags = flags_;
10779       return *this;
10780     }
10781 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10782     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
10783     {
10784       queueFamilyIndex = queueFamilyIndex_;
10785       return *this;
10786     }
10787 
setQueueCountVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10788     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueCount( uint32_t queueCount_ ) VULKAN_HPP_NOEXCEPT
10789     {
10790       queueCount = queueCount_;
10791       return *this;
10792     }
10793 
setPQueuePrioritiesVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10794     VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPQueuePriorities( const float * pQueuePriorities_ ) VULKAN_HPP_NOEXCEPT
10795     {
10796       pQueuePriorities = pQueuePriorities_;
10797       return *this;
10798     }
10799 
10800 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueuePrioritiesVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10801     DeviceQueueCreateInfo & setQueuePriorities( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const float> const & queuePriorities_ ) VULKAN_HPP_NOEXCEPT
10802     {
10803       queueCount = static_cast<uint32_t>( queuePriorities_.size() );
10804       pQueuePriorities = queuePriorities_.data();
10805       return *this;
10806     }
10807 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
10808 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
10809 
10810 
operator VkDeviceQueueCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10811     operator VkDeviceQueueCreateInfo const &() const VULKAN_HPP_NOEXCEPT
10812     {
10813       return *reinterpret_cast<const VkDeviceQueueCreateInfo*>( this );
10814     }
10815 
operator VkDeviceQueueCreateInfo&VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10816     operator VkDeviceQueueCreateInfo &() VULKAN_HPP_NOEXCEPT
10817     {
10818       return *reinterpret_cast<VkDeviceQueueCreateInfo*>( this );
10819     }
10820 
10821 #if defined( VULKAN_HPP_USE_REFLECT )
10822 #if 14 <= VULKAN_HPP_CPP_VERSION
10823     auto
10824 #else
10825     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags const &, uint32_t const &, uint32_t const &, const float * const &>
10826 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10827       reflect() const VULKAN_HPP_NOEXCEPT
10828     {
10829       return std::tie( sType, pNext, flags, queueFamilyIndex, queueCount, pQueuePriorities );
10830     }
10831 #endif
10832 
10833 
10834 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
10835 auto operator<=>( DeviceQueueCreateInfo const & ) const = default;
10836 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10837     bool operator==( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10838     {
10839 #if defined( VULKAN_HPP_USE_REFLECT )
10840       return this->reflect() == rhs.reflect();
10841 #else
10842       return ( sType == rhs.sType )
10843           && ( pNext == rhs.pNext )
10844           && ( flags == rhs.flags )
10845           && ( queueFamilyIndex == rhs.queueFamilyIndex )
10846           && ( queueCount == rhs.queueCount )
10847           && ( pQueuePriorities == rhs.pQueuePriorities );
10848 #endif
10849     }
10850 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo10851     bool operator!=( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
10852     {
10853       return !operator==( rhs );
10854     }
10855 #endif
10856 
10857     public:
10858     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueCreateInfo;
10859     const void * pNext = {};
10860     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags = {};
10861     uint32_t queueFamilyIndex = {};
10862     uint32_t queueCount = {};
10863     const float * pQueuePriorities = {};
10864 
10865   };
10866 
10867   template <>
10868   struct CppType<StructureType, StructureType::eDeviceQueueCreateInfo>
10869   {
10870     using Type = DeviceQueueCreateInfo;
10871   };
10872 
10873   struct PhysicalDeviceFeatures
10874   {
10875     using NativeType = VkPhysicalDeviceFeatures;
10876 
10877 
10878 
10879 
10880 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10881 VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures(VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ = {}, VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ = {}, VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ = {}, VULKAN_HPP_NAMESPACE::Bool32 logicOp_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ = {}, VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ = {}, VULKAN_HPP_NAMESPACE::Bool32 wideLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 largePoints_ = {}, VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ = {}, VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ = {}, VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ = {}, VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ = {}, VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ = {}, VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ = {}, VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ = {}) VULKAN_HPP_NOEXCEPT
10882     : robustBufferAccess( robustBufferAccess_ ), fullDrawIndexUint32( fullDrawIndexUint32_ ), imageCubeArray( imageCubeArray_ ), independentBlend( independentBlend_ ), geometryShader( geometryShader_ ), tessellationShader( tessellationShader_ ), sampleRateShading( sampleRateShading_ ), dualSrcBlend( dualSrcBlend_ ), logicOp( logicOp_ ), multiDrawIndirect( multiDrawIndirect_ ), drawIndirectFirstInstance( drawIndirectFirstInstance_ ), depthClamp( depthClamp_ ), depthBiasClamp( depthBiasClamp_ ), fillModeNonSolid( fillModeNonSolid_ ), depthBounds( depthBounds_ ), wideLines( wideLines_ ), largePoints( largePoints_ ), alphaToOne( alphaToOne_ ), multiViewport( multiViewport_ ), samplerAnisotropy( samplerAnisotropy_ ), textureCompressionETC2( textureCompressionETC2_ ), textureCompressionASTC_LDR( textureCompressionASTC_LDR_ ), textureCompressionBC( textureCompressionBC_ ), occlusionQueryPrecise( occlusionQueryPrecise_ ), pipelineStatisticsQuery( pipelineStatisticsQuery_ ), vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ ), fragmentStoresAndAtomics( fragmentStoresAndAtomics_ ), shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ ), shaderImageGatherExtended( shaderImageGatherExtended_ ), shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ ), shaderStorageImageMultisample( shaderStorageImageMultisample_ ), shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ ), shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ ), shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ ), shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ ), shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ ), shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ ), shaderClipDistance( shaderClipDistance_ ), shaderCullDistance( shaderCullDistance_ ), shaderFloat64( shaderFloat64_ ), shaderInt64( shaderInt64_ ), shaderInt16( shaderInt16_ ), shaderResourceResidency( shaderResourceResidency_ ), shaderResourceMinLod( shaderResourceMinLod_ ), sparseBinding( sparseBinding_ ), sparseResidencyBuffer( sparseResidencyBuffer_ ), sparseResidencyImage2D( sparseResidencyImage2D_ ), sparseResidencyImage3D( sparseResidencyImage3D_ ), sparseResidency2Samples( sparseResidency2Samples_ ), sparseResidency4Samples( sparseResidency4Samples_ ), sparseResidency8Samples( sparseResidency8Samples_ ), sparseResidency16Samples( sparseResidency16Samples_ ), sparseResidencyAliased( sparseResidencyAliased_ ), variableMultisampleRate( variableMultisampleRate_ ), inheritedQueries( inheritedQueries_ )
10883     {}
10884 
10885     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10886 
PhysicalDeviceFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10887     PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
10888       : PhysicalDeviceFeatures( *reinterpret_cast<PhysicalDeviceFeatures const *>( &rhs ) )
10889     {}
10890 
10891 
10892     PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
10893 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
10894 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10895     PhysicalDeviceFeatures & operator=( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
10896     {
10897       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const *>( &rhs );
10898       return *this;
10899     }
10900 
10901 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRobustBufferAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10902     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ ) VULKAN_HPP_NOEXCEPT
10903     {
10904       robustBufferAccess = robustBufferAccess_;
10905       return *this;
10906     }
10907 
setFullDrawIndexUint32VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10908     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFullDrawIndexUint32( VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ ) VULKAN_HPP_NOEXCEPT
10909     {
10910       fullDrawIndexUint32 = fullDrawIndexUint32_;
10911       return *this;
10912     }
10913 
setImageCubeArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10914     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setImageCubeArray( VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ ) VULKAN_HPP_NOEXCEPT
10915     {
10916       imageCubeArray = imageCubeArray_;
10917       return *this;
10918     }
10919 
setIndependentBlendVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10920     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setIndependentBlend( VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ ) VULKAN_HPP_NOEXCEPT
10921     {
10922       independentBlend = independentBlend_;
10923       return *this;
10924     }
10925 
setGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10926     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ ) VULKAN_HPP_NOEXCEPT
10927     {
10928       geometryShader = geometryShader_;
10929       return *this;
10930     }
10931 
setTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10932     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ ) VULKAN_HPP_NOEXCEPT
10933     {
10934       tessellationShader = tessellationShader_;
10935       return *this;
10936     }
10937 
setSampleRateShadingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10938     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSampleRateShading( VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ ) VULKAN_HPP_NOEXCEPT
10939     {
10940       sampleRateShading = sampleRateShading_;
10941       return *this;
10942     }
10943 
setDualSrcBlendVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10944     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDualSrcBlend( VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ ) VULKAN_HPP_NOEXCEPT
10945     {
10946       dualSrcBlend = dualSrcBlend_;
10947       return *this;
10948     }
10949 
setLogicOpVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10950     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setLogicOp( VULKAN_HPP_NAMESPACE::Bool32 logicOp_ ) VULKAN_HPP_NOEXCEPT
10951     {
10952       logicOp = logicOp_;
10953       return *this;
10954     }
10955 
setMultiDrawIndirectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10956     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setMultiDrawIndirect( VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ ) VULKAN_HPP_NOEXCEPT
10957     {
10958       multiDrawIndirect = multiDrawIndirect_;
10959       return *this;
10960     }
10961 
setDrawIndirectFirstInstanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10962     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDrawIndirectFirstInstance( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ ) VULKAN_HPP_NOEXCEPT
10963     {
10964       drawIndirectFirstInstance = drawIndirectFirstInstance_;
10965       return *this;
10966     }
10967 
setDepthClampVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10968     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthClamp( VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ ) VULKAN_HPP_NOEXCEPT
10969     {
10970       depthClamp = depthClamp_;
10971       return *this;
10972     }
10973 
setDepthBiasClampVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10974     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthBiasClamp( VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
10975     {
10976       depthBiasClamp = depthBiasClamp_;
10977       return *this;
10978     }
10979 
setFillModeNonSolidVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10980     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFillModeNonSolid( VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ ) VULKAN_HPP_NOEXCEPT
10981     {
10982       fillModeNonSolid = fillModeNonSolid_;
10983       return *this;
10984     }
10985 
setDepthBoundsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10986     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthBounds( VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ ) VULKAN_HPP_NOEXCEPT
10987     {
10988       depthBounds = depthBounds_;
10989       return *this;
10990     }
10991 
setWideLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10992     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setWideLines( VULKAN_HPP_NAMESPACE::Bool32 wideLines_ ) VULKAN_HPP_NOEXCEPT
10993     {
10994       wideLines = wideLines_;
10995       return *this;
10996     }
10997 
setLargePointsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures10998     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setLargePoints( VULKAN_HPP_NAMESPACE::Bool32 largePoints_ ) VULKAN_HPP_NOEXCEPT
10999     {
11000       largePoints = largePoints_;
11001       return *this;
11002     }
11003 
setAlphaToOneVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11004     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setAlphaToOne( VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ ) VULKAN_HPP_NOEXCEPT
11005     {
11006       alphaToOne = alphaToOne_;
11007       return *this;
11008     }
11009 
setMultiViewportVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11010     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setMultiViewport( VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ ) VULKAN_HPP_NOEXCEPT
11011     {
11012       multiViewport = multiViewport_;
11013       return *this;
11014     }
11015 
setSamplerAnisotropyVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11016     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSamplerAnisotropy( VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ ) VULKAN_HPP_NOEXCEPT
11017     {
11018       samplerAnisotropy = samplerAnisotropy_;
11019       return *this;
11020     }
11021 
setTextureCompressionETC2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11022     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionETC2( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ ) VULKAN_HPP_NOEXCEPT
11023     {
11024       textureCompressionETC2 = textureCompressionETC2_;
11025       return *this;
11026     }
11027 
setTextureCompressionASTC_LDRVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11028     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionASTC_LDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ ) VULKAN_HPP_NOEXCEPT
11029     {
11030       textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
11031       return *this;
11032     }
11033 
setTextureCompressionBCVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11034     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionBC( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ ) VULKAN_HPP_NOEXCEPT
11035     {
11036       textureCompressionBC = textureCompressionBC_;
11037       return *this;
11038     }
11039 
setOcclusionQueryPreciseVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11040     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setOcclusionQueryPrecise( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ ) VULKAN_HPP_NOEXCEPT
11041     {
11042       occlusionQueryPrecise = occlusionQueryPrecise_;
11043       return *this;
11044     }
11045 
setPipelineStatisticsQueryVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11046     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setPipelineStatisticsQuery( VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ ) VULKAN_HPP_NOEXCEPT
11047     {
11048       pipelineStatisticsQuery = pipelineStatisticsQuery_;
11049       return *this;
11050     }
11051 
setVertexPipelineStoresAndAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11052     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setVertexPipelineStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT
11053     {
11054       vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
11055       return *this;
11056     }
11057 
setFragmentStoresAndAtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11058     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFragmentStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT
11059     {
11060       fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
11061       return *this;
11062     }
11063 
setShaderTessellationAndGeometryPointSizeVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11064     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderTessellationAndGeometryPointSize( VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ ) VULKAN_HPP_NOEXCEPT
11065     {
11066       shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
11067       return *this;
11068     }
11069 
setShaderImageGatherExtendedVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11070     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderImageGatherExtended( VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ ) VULKAN_HPP_NOEXCEPT
11071     {
11072       shaderImageGatherExtended = shaderImageGatherExtended_;
11073       return *this;
11074     }
11075 
setShaderStorageImageExtendedFormatsVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11076     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageExtendedFormats( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ ) VULKAN_HPP_NOEXCEPT
11077     {
11078       shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
11079       return *this;
11080     }
11081 
setShaderStorageImageMultisampleVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11082     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageMultisample( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ ) VULKAN_HPP_NOEXCEPT
11083     {
11084       shaderStorageImageMultisample = shaderStorageImageMultisample_;
11085       return *this;
11086     }
11087 
setShaderStorageImageReadWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11088     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageReadWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
11089     {
11090       shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
11091       return *this;
11092     }
11093 
setShaderStorageImageWriteWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11094     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageWriteWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
11095     {
11096       shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
11097       return *this;
11098     }
11099 
setShaderUniformBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11100     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderUniformBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
11101     {
11102       shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
11103       return *this;
11104     }
11105 
setShaderSampledImageArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11106     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderSampledImageArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
11107     {
11108       shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
11109       return *this;
11110     }
11111 
setShaderStorageBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11112     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
11113     {
11114       shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
11115       return *this;
11116     }
11117 
setShaderStorageImageArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11118     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
11119     {
11120       shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
11121       return *this;
11122     }
11123 
setShaderClipDistanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11124     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderClipDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ ) VULKAN_HPP_NOEXCEPT
11125     {
11126       shaderClipDistance = shaderClipDistance_;
11127       return *this;
11128     }
11129 
setShaderCullDistanceVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11130     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderCullDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ ) VULKAN_HPP_NOEXCEPT
11131     {
11132       shaderCullDistance = shaderCullDistance_;
11133       return *this;
11134     }
11135 
setShaderFloat64VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11136     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderFloat64( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ ) VULKAN_HPP_NOEXCEPT
11137     {
11138       shaderFloat64 = shaderFloat64_;
11139       return *this;
11140     }
11141 
setShaderInt64VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11142     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderInt64( VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ ) VULKAN_HPP_NOEXCEPT
11143     {
11144       shaderInt64 = shaderInt64_;
11145       return *this;
11146     }
11147 
setShaderInt16VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11148     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderInt16( VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ ) VULKAN_HPP_NOEXCEPT
11149     {
11150       shaderInt16 = shaderInt16_;
11151       return *this;
11152     }
11153 
setShaderResourceResidencyVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11154     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderResourceResidency( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ ) VULKAN_HPP_NOEXCEPT
11155     {
11156       shaderResourceResidency = shaderResourceResidency_;
11157       return *this;
11158     }
11159 
setShaderResourceMinLodVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11160     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderResourceMinLod( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ ) VULKAN_HPP_NOEXCEPT
11161     {
11162       shaderResourceMinLod = shaderResourceMinLod_;
11163       return *this;
11164     }
11165 
setSparseBindingVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11166     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseBinding( VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ ) VULKAN_HPP_NOEXCEPT
11167     {
11168       sparseBinding = sparseBinding_;
11169       return *this;
11170     }
11171 
setSparseResidencyBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11172     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyBuffer( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ ) VULKAN_HPP_NOEXCEPT
11173     {
11174       sparseResidencyBuffer = sparseResidencyBuffer_;
11175       return *this;
11176     }
11177 
setSparseResidencyImage2DVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11178     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyImage2D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ ) VULKAN_HPP_NOEXCEPT
11179     {
11180       sparseResidencyImage2D = sparseResidencyImage2D_;
11181       return *this;
11182     }
11183 
setSparseResidencyImage3DVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11184     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyImage3D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ ) VULKAN_HPP_NOEXCEPT
11185     {
11186       sparseResidencyImage3D = sparseResidencyImage3D_;
11187       return *this;
11188     }
11189 
setSparseResidency2SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11190     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency2Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ ) VULKAN_HPP_NOEXCEPT
11191     {
11192       sparseResidency2Samples = sparseResidency2Samples_;
11193       return *this;
11194     }
11195 
setSparseResidency4SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11196     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency4Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ ) VULKAN_HPP_NOEXCEPT
11197     {
11198       sparseResidency4Samples = sparseResidency4Samples_;
11199       return *this;
11200     }
11201 
setSparseResidency8SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11202     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency8Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ ) VULKAN_HPP_NOEXCEPT
11203     {
11204       sparseResidency8Samples = sparseResidency8Samples_;
11205       return *this;
11206     }
11207 
setSparseResidency16SamplesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11208     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency16Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ ) VULKAN_HPP_NOEXCEPT
11209     {
11210       sparseResidency16Samples = sparseResidency16Samples_;
11211       return *this;
11212     }
11213 
setSparseResidencyAliasedVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11214     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyAliased( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ ) VULKAN_HPP_NOEXCEPT
11215     {
11216       sparseResidencyAliased = sparseResidencyAliased_;
11217       return *this;
11218     }
11219 
setVariableMultisampleRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11220     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setVariableMultisampleRate( VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ ) VULKAN_HPP_NOEXCEPT
11221     {
11222       variableMultisampleRate = variableMultisampleRate_;
11223       return *this;
11224     }
11225 
setInheritedQueriesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11226     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setInheritedQueries( VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ ) VULKAN_HPP_NOEXCEPT
11227     {
11228       inheritedQueries = inheritedQueries_;
11229       return *this;
11230     }
11231 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11232 
11233 
operator VkPhysicalDeviceFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11234     operator VkPhysicalDeviceFeatures const &() const VULKAN_HPP_NOEXCEPT
11235     {
11236       return *reinterpret_cast<const VkPhysicalDeviceFeatures*>( this );
11237     }
11238 
operator VkPhysicalDeviceFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11239     operator VkPhysicalDeviceFeatures &() VULKAN_HPP_NOEXCEPT
11240     {
11241       return *reinterpret_cast<VkPhysicalDeviceFeatures*>( this );
11242     }
11243 
11244 #if defined( VULKAN_HPP_USE_REFLECT )
11245 #if 14 <= VULKAN_HPP_CPP_VERSION
11246     auto
11247 #else
11248     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
11249 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11250       reflect() const VULKAN_HPP_NOEXCEPT
11251     {
11252       return std::tie( robustBufferAccess, fullDrawIndexUint32, imageCubeArray, independentBlend, geometryShader, tessellationShader, sampleRateShading, dualSrcBlend, logicOp, multiDrawIndirect, drawIndirectFirstInstance, depthClamp, depthBiasClamp, fillModeNonSolid, depthBounds, wideLines, largePoints, alphaToOne, multiViewport, samplerAnisotropy, textureCompressionETC2, textureCompressionASTC_LDR, textureCompressionBC, occlusionQueryPrecise, pipelineStatisticsQuery, vertexPipelineStoresAndAtomics, fragmentStoresAndAtomics, shaderTessellationAndGeometryPointSize, shaderImageGatherExtended, shaderStorageImageExtendedFormats, shaderStorageImageMultisample, shaderStorageImageReadWithoutFormat, shaderStorageImageWriteWithoutFormat, shaderUniformBufferArrayDynamicIndexing, shaderSampledImageArrayDynamicIndexing, shaderStorageBufferArrayDynamicIndexing, shaderStorageImageArrayDynamicIndexing, shaderClipDistance, shaderCullDistance, shaderFloat64, shaderInt64, shaderInt16, shaderResourceResidency, shaderResourceMinLod, sparseBinding, sparseResidencyBuffer, sparseResidencyImage2D, sparseResidencyImage3D, sparseResidency2Samples, sparseResidency4Samples, sparseResidency8Samples, sparseResidency16Samples, sparseResidencyAliased, variableMultisampleRate, inheritedQueries );
11253     }
11254 #endif
11255 
11256 
11257 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
11258 auto operator<=>( PhysicalDeviceFeatures const & ) const = default;
11259 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11260     bool operator==( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
11261     {
11262 #if defined( VULKAN_HPP_USE_REFLECT )
11263       return this->reflect() == rhs.reflect();
11264 #else
11265       return ( robustBufferAccess == rhs.robustBufferAccess )
11266           && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
11267           && ( imageCubeArray == rhs.imageCubeArray )
11268           && ( independentBlend == rhs.independentBlend )
11269           && ( geometryShader == rhs.geometryShader )
11270           && ( tessellationShader == rhs.tessellationShader )
11271           && ( sampleRateShading == rhs.sampleRateShading )
11272           && ( dualSrcBlend == rhs.dualSrcBlend )
11273           && ( logicOp == rhs.logicOp )
11274           && ( multiDrawIndirect == rhs.multiDrawIndirect )
11275           && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
11276           && ( depthClamp == rhs.depthClamp )
11277           && ( depthBiasClamp == rhs.depthBiasClamp )
11278           && ( fillModeNonSolid == rhs.fillModeNonSolid )
11279           && ( depthBounds == rhs.depthBounds )
11280           && ( wideLines == rhs.wideLines )
11281           && ( largePoints == rhs.largePoints )
11282           && ( alphaToOne == rhs.alphaToOne )
11283           && ( multiViewport == rhs.multiViewport )
11284           && ( samplerAnisotropy == rhs.samplerAnisotropy )
11285           && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
11286           && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
11287           && ( textureCompressionBC == rhs.textureCompressionBC )
11288           && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
11289           && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
11290           && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
11291           && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
11292           && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
11293           && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
11294           && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
11295           && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
11296           && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
11297           && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
11298           && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
11299           && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
11300           && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
11301           && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
11302           && ( shaderClipDistance == rhs.shaderClipDistance )
11303           && ( shaderCullDistance == rhs.shaderCullDistance )
11304           && ( shaderFloat64 == rhs.shaderFloat64 )
11305           && ( shaderInt64 == rhs.shaderInt64 )
11306           && ( shaderInt16 == rhs.shaderInt16 )
11307           && ( shaderResourceResidency == rhs.shaderResourceResidency )
11308           && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
11309           && ( sparseBinding == rhs.sparseBinding )
11310           && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
11311           && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
11312           && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
11313           && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
11314           && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
11315           && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
11316           && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
11317           && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
11318           && ( variableMultisampleRate == rhs.variableMultisampleRate )
11319           && ( inheritedQueries == rhs.inheritedQueries );
11320 #endif
11321     }
11322 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures11323     bool operator!=( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
11324     {
11325       return !operator==( rhs );
11326     }
11327 #endif
11328 
11329     public:
11330     VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess = {};
11331     VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32 = {};
11332     VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray = {};
11333     VULKAN_HPP_NAMESPACE::Bool32 independentBlend = {};
11334     VULKAN_HPP_NAMESPACE::Bool32 geometryShader = {};
11335     VULKAN_HPP_NAMESPACE::Bool32 tessellationShader = {};
11336     VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading = {};
11337     VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend = {};
11338     VULKAN_HPP_NAMESPACE::Bool32 logicOp = {};
11339     VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect = {};
11340     VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance = {};
11341     VULKAN_HPP_NAMESPACE::Bool32 depthClamp = {};
11342     VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp = {};
11343     VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid = {};
11344     VULKAN_HPP_NAMESPACE::Bool32 depthBounds = {};
11345     VULKAN_HPP_NAMESPACE::Bool32 wideLines = {};
11346     VULKAN_HPP_NAMESPACE::Bool32 largePoints = {};
11347     VULKAN_HPP_NAMESPACE::Bool32 alphaToOne = {};
11348     VULKAN_HPP_NAMESPACE::Bool32 multiViewport = {};
11349     VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy = {};
11350     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2 = {};
11351     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR = {};
11352     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC = {};
11353     VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise = {};
11354     VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery = {};
11355     VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics = {};
11356     VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics = {};
11357     VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize = {};
11358     VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended = {};
11359     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats = {};
11360     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample = {};
11361     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat = {};
11362     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat = {};
11363     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing = {};
11364     VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing = {};
11365     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing = {};
11366     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing = {};
11367     VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance = {};
11368     VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance = {};
11369     VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64 = {};
11370     VULKAN_HPP_NAMESPACE::Bool32 shaderInt64 = {};
11371     VULKAN_HPP_NAMESPACE::Bool32 shaderInt16 = {};
11372     VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency = {};
11373     VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod = {};
11374     VULKAN_HPP_NAMESPACE::Bool32 sparseBinding = {};
11375     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer = {};
11376     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D = {};
11377     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D = {};
11378     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples = {};
11379     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples = {};
11380     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples = {};
11381     VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples = {};
11382     VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased = {};
11383     VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate = {};
11384     VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries = {};
11385 
11386   };
11387 
11388   struct DeviceCreateInfo
11389   {
11390     using NativeType = VkDeviceCreateInfo;
11391 
11392     static const bool allowDuplicate = false;
11393     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceCreateInfo;
11394 
11395 
11396 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo11397 VULKAN_HPP_CONSTEXPR DeviceCreateInfo(VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ = {}, uint32_t queueCreateInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos_ = {}, uint32_t enabledLayerCount_ = {}, const char * const * ppEnabledLayerNames_ = {}, uint32_t enabledExtensionCount_ = {}, const char * const * ppEnabledExtensionNames_ = {}, const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
11398     : pNext( pNext_ ), flags( flags_ ), queueCreateInfoCount( queueCreateInfoCount_ ), pQueueCreateInfos( pQueueCreateInfos_ ), enabledLayerCount( enabledLayerCount_ ), ppEnabledLayerNames( ppEnabledLayerNames_ ), enabledExtensionCount( enabledExtensionCount_ ), ppEnabledExtensionNames( ppEnabledExtensionNames_ ), pEnabledFeatures( pEnabledFeatures_ )
11399     {}
11400 
11401     VULKAN_HPP_CONSTEXPR DeviceCreateInfo( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11402 
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo11403     DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11404       : DeviceCreateInfo( *reinterpret_cast<DeviceCreateInfo const *>( &rhs ) )
11405     {}
11406 
11407 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceCreateInfo11408     DeviceCreateInfo( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const & queueCreateInfos_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ = {}, const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ = {}, const void * pNext_ = nullptr )
11409     : pNext( pNext_ ), flags( flags_ ), queueCreateInfoCount( static_cast<uint32_t>( queueCreateInfos_.size() ) ), pQueueCreateInfos( queueCreateInfos_.data() ), enabledLayerCount( static_cast<uint32_t>( pEnabledLayerNames_.size() ) ), ppEnabledLayerNames( pEnabledLayerNames_.data() ), enabledExtensionCount( static_cast<uint32_t>( pEnabledExtensionNames_.size() ) ), ppEnabledExtensionNames( pEnabledExtensionNames_.data() ), pEnabledFeatures( pEnabledFeatures_ )
11410     {}
11411 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11412 
11413 
11414     DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11415 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11416 
operator =VULKAN_HPP_NAMESPACE::DeviceCreateInfo11417     DeviceCreateInfo & operator=( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11418     {
11419       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceCreateInfo const *>( &rhs );
11420       return *this;
11421     }
11422 
11423 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceCreateInfo11424     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11425     {
11426       pNext = pNext_;
11427       return *this;
11428     }
11429 
setFlagsVULKAN_HPP_NAMESPACE::DeviceCreateInfo11430     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
11431     {
11432       flags = flags_;
11433       return *this;
11434     }
11435 
setQueueCreateInfoCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo11436     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) VULKAN_HPP_NOEXCEPT
11437     {
11438       queueCreateInfoCount = queueCreateInfoCount_;
11439       return *this;
11440     }
11441 
setPQueueCreateInfosVULKAN_HPP_NAMESPACE::DeviceCreateInfo11442     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPQueueCreateInfos( const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos_ ) VULKAN_HPP_NOEXCEPT
11443     {
11444       pQueueCreateInfos = pQueueCreateInfos_;
11445       return *this;
11446     }
11447 
11448 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueCreateInfosVULKAN_HPP_NAMESPACE::DeviceCreateInfo11449     DeviceCreateInfo & setQueueCreateInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo> const & queueCreateInfos_ ) VULKAN_HPP_NOEXCEPT
11450     {
11451       queueCreateInfoCount = static_cast<uint32_t>( queueCreateInfos_.size() );
11452       pQueueCreateInfos = queueCreateInfos_.data();
11453       return *this;
11454     }
11455 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11456 
setEnabledLayerCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo11457     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT
11458     {
11459       enabledLayerCount = enabledLayerCount_;
11460       return *this;
11461     }
11462 
setPpEnabledLayerNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo11463     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
11464     {
11465       ppEnabledLayerNames = ppEnabledLayerNames_;
11466       return *this;
11467     }
11468 
11469 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPEnabledLayerNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo11470     DeviceCreateInfo & setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
11471     {
11472       enabledLayerCount = static_cast<uint32_t>( pEnabledLayerNames_.size() );
11473       ppEnabledLayerNames = pEnabledLayerNames_.data();
11474       return *this;
11475     }
11476 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11477 
setEnabledExtensionCountVULKAN_HPP_NAMESPACE::DeviceCreateInfo11478     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT
11479     {
11480       enabledExtensionCount = enabledExtensionCount_;
11481       return *this;
11482     }
11483 
setPpEnabledExtensionNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo11484     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
11485     {
11486       ppEnabledExtensionNames = ppEnabledExtensionNames_;
11487       return *this;
11488     }
11489 
11490 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPEnabledExtensionNamesVULKAN_HPP_NAMESPACE::DeviceCreateInfo11491     DeviceCreateInfo & setPEnabledExtensionNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
11492     {
11493       enabledExtensionCount = static_cast<uint32_t>( pEnabledExtensionNames_.size() );
11494       ppEnabledExtensionNames = pEnabledExtensionNames_.data();
11495       return *this;
11496     }
11497 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11498 
setPEnabledFeaturesVULKAN_HPP_NAMESPACE::DeviceCreateInfo11499     VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPEnabledFeatures( const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures_ ) VULKAN_HPP_NOEXCEPT
11500     {
11501       pEnabledFeatures = pEnabledFeatures_;
11502       return *this;
11503     }
11504 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11505 
11506 
operator VkDeviceCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceCreateInfo11507     operator VkDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
11508     {
11509       return *reinterpret_cast<const VkDeviceCreateInfo*>( this );
11510     }
11511 
operator VkDeviceCreateInfo&VULKAN_HPP_NAMESPACE::DeviceCreateInfo11512     operator VkDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT
11513     {
11514       return *reinterpret_cast<VkDeviceCreateInfo*>( this );
11515     }
11516 
11517 #if defined( VULKAN_HPP_USE_REFLECT )
11518 #if 14 <= VULKAN_HPP_CPP_VERSION
11519     auto
11520 #else
11521     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * const &, uint32_t const &, const char * const * const &, uint32_t const &, const char * const * const &, const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * const &>
11522 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceCreateInfo11523       reflect() const VULKAN_HPP_NOEXCEPT
11524     {
11525       return std::tie( sType, pNext, flags, queueCreateInfoCount, pQueueCreateInfos, enabledLayerCount, ppEnabledLayerNames, enabledExtensionCount, ppEnabledExtensionNames, pEnabledFeatures );
11526     }
11527 #endif
11528 
11529 
11530 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::DeviceCreateInfo11531     std::strong_ordering operator<=>( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11532     {
11533       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
11534       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
11535       if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) return cmp;
11536       if ( auto cmp = queueCreateInfoCount <=> rhs.queueCreateInfoCount; cmp != 0 ) return cmp;
11537       if ( auto cmp = pQueueCreateInfos <=> rhs.pQueueCreateInfos; cmp != 0 ) return cmp;
11538       if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 ) return cmp;
11539       for ( size_t i = 0; i < enabledLayerCount; ++i )
11540       {
11541         if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] )
11542           if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 )
11543             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
11544       }
11545       if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 ) return cmp;
11546       for ( size_t i = 0; i < enabledExtensionCount; ++i )
11547       {
11548         if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] )
11549           if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 )
11550             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
11551       }
11552       if ( auto cmp = pEnabledFeatures <=> rhs.pEnabledFeatures; cmp != 0 ) return cmp;
11553 
11554       return std::strong_ordering::equivalent;
11555     }
11556 #endif
11557 
operator ==VULKAN_HPP_NAMESPACE::DeviceCreateInfo11558     bool operator==( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11559     {
11560       return ( sType == rhs.sType )
11561           && ( pNext == rhs.pNext )
11562           && ( flags == rhs.flags )
11563           && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
11564           && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
11565           && ( enabledLayerCount == rhs.enabledLayerCount )
11566           && std::equal( ppEnabledLayerNames, ppEnabledLayerNames + enabledLayerCount, rhs.ppEnabledLayerNames, []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } )
11567           && ( enabledExtensionCount == rhs.enabledExtensionCount )
11568           && std::equal( ppEnabledExtensionNames, ppEnabledExtensionNames + enabledExtensionCount, rhs.ppEnabledExtensionNames, []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } )
11569           && ( pEnabledFeatures == rhs.pEnabledFeatures );
11570     }
11571 
operator !=VULKAN_HPP_NAMESPACE::DeviceCreateInfo11572     bool operator!=( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11573     {
11574       return !operator==( rhs );
11575     }
11576 
11577     public:
11578     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceCreateInfo;
11579     const void * pNext = {};
11580     VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags = {};
11581     uint32_t queueCreateInfoCount = {};
11582     const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo * pQueueCreateInfos = {};
11583     uint32_t enabledLayerCount = {};
11584     const char * const * ppEnabledLayerNames = {};
11585     uint32_t enabledExtensionCount = {};
11586     const char * const * ppEnabledExtensionNames = {};
11587     const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures * pEnabledFeatures = {};
11588 
11589   };
11590 
11591   template <>
11592   struct CppType<StructureType, StructureType::eDeviceCreateInfo>
11593   {
11594     using Type = DeviceCreateInfo;
11595   };
11596 
11597   struct DeviceEventInfoEXT
11598   {
11599     using NativeType = VkDeviceEventInfoEXT;
11600 
11601     static const bool allowDuplicate = false;
11602     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceEventInfoEXT;
11603 
11604 
11605 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceEventInfoEXTVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11606 VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT(VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
11607     : pNext( pNext_ ), deviceEvent( deviceEvent_ )
11608     {}
11609 
11610     VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11611 
DeviceEventInfoEXTVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11612     DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
11613       : DeviceEventInfoEXT( *reinterpret_cast<DeviceEventInfoEXT const *>( &rhs ) )
11614     {}
11615 
11616 
11617     DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11618 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11619 
operator =VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11620     DeviceEventInfoEXT & operator=( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
11621     {
11622       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const *>( &rhs );
11623       return *this;
11624     }
11625 
11626 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11627     VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11628     {
11629       pNext = pNext_;
11630       return *this;
11631     }
11632 
setDeviceEventVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11633     VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setDeviceEvent( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ ) VULKAN_HPP_NOEXCEPT
11634     {
11635       deviceEvent = deviceEvent_;
11636       return *this;
11637     }
11638 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11639 
11640 
operator VkDeviceEventInfoEXT const&VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11641     operator VkDeviceEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
11642     {
11643       return *reinterpret_cast<const VkDeviceEventInfoEXT*>( this );
11644     }
11645 
operator VkDeviceEventInfoEXT&VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11646     operator VkDeviceEventInfoEXT &() VULKAN_HPP_NOEXCEPT
11647     {
11648       return *reinterpret_cast<VkDeviceEventInfoEXT*>( this );
11649     }
11650 
11651 #if defined( VULKAN_HPP_USE_REFLECT )
11652 #if 14 <= VULKAN_HPP_CPP_VERSION
11653     auto
11654 #else
11655     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT const &>
11656 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11657       reflect() const VULKAN_HPP_NOEXCEPT
11658     {
11659       return std::tie( sType, pNext, deviceEvent );
11660     }
11661 #endif
11662 
11663 
11664 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
11665 auto operator<=>( DeviceEventInfoEXT const & ) const = default;
11666 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11667     bool operator==( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
11668     {
11669 #if defined( VULKAN_HPP_USE_REFLECT )
11670       return this->reflect() == rhs.reflect();
11671 #else
11672       return ( sType == rhs.sType )
11673           && ( pNext == rhs.pNext )
11674           && ( deviceEvent == rhs.deviceEvent );
11675 #endif
11676     }
11677 
operator !=VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT11678     bool operator!=( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
11679     {
11680       return !operator==( rhs );
11681     }
11682 #endif
11683 
11684     public:
11685     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceEventInfoEXT;
11686     const void * pNext = {};
11687     VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug;
11688 
11689   };
11690 
11691   template <>
11692   struct CppType<StructureType, StructureType::eDeviceEventInfoEXT>
11693   {
11694     using Type = DeviceEventInfoEXT;
11695   };
11696 
11697   struct DeviceGroupCommandBufferBeginInfo
11698   {
11699     using NativeType = VkDeviceGroupCommandBufferBeginInfo;
11700 
11701     static const bool allowDuplicate = false;
11702     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupCommandBufferBeginInfo;
11703 
11704 
11705 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupCommandBufferBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11706 VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo(uint32_t deviceMask_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
11707     : pNext( pNext_ ), deviceMask( deviceMask_ )
11708     {}
11709 
11710     VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11711 
DeviceGroupCommandBufferBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11712     DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11713       : DeviceGroupCommandBufferBeginInfo( *reinterpret_cast<DeviceGroupCommandBufferBeginInfo const *>( &rhs ) )
11714     {}
11715 
11716 
11717     DeviceGroupCommandBufferBeginInfo & operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11718 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11719 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11720     DeviceGroupCommandBufferBeginInfo & operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11721     {
11722       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo const *>( &rhs );
11723       return *this;
11724     }
11725 
11726 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11727     VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11728     {
11729       pNext = pNext_;
11730       return *this;
11731     }
11732 
setDeviceMaskVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11733     VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
11734     {
11735       deviceMask = deviceMask_;
11736       return *this;
11737     }
11738 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11739 
11740 
operator VkDeviceGroupCommandBufferBeginInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11741     operator VkDeviceGroupCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT
11742     {
11743       return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfo*>( this );
11744     }
11745 
operator VkDeviceGroupCommandBufferBeginInfo&VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11746     operator VkDeviceGroupCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT
11747     {
11748       return *reinterpret_cast<VkDeviceGroupCommandBufferBeginInfo*>( this );
11749     }
11750 
11751 #if defined( VULKAN_HPP_USE_REFLECT )
11752 #if 14 <= VULKAN_HPP_CPP_VERSION
11753     auto
11754 #else
11755     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
11756 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11757       reflect() const VULKAN_HPP_NOEXCEPT
11758     {
11759       return std::tie( sType, pNext, deviceMask );
11760     }
11761 #endif
11762 
11763 
11764 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
11765 auto operator<=>( DeviceGroupCommandBufferBeginInfo const & ) const = default;
11766 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11767     bool operator==( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11768     {
11769 #if defined( VULKAN_HPP_USE_REFLECT )
11770       return this->reflect() == rhs.reflect();
11771 #else
11772       return ( sType == rhs.sType )
11773           && ( pNext == rhs.pNext )
11774           && ( deviceMask == rhs.deviceMask );
11775 #endif
11776     }
11777 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo11778     bool operator!=( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11779     {
11780       return !operator==( rhs );
11781     }
11782 #endif
11783 
11784     public:
11785     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo;
11786     const void * pNext = {};
11787     uint32_t deviceMask = {};
11788 
11789   };
11790 
11791   template <>
11792   struct CppType<StructureType, StructureType::eDeviceGroupCommandBufferBeginInfo>
11793   {
11794     using Type = DeviceGroupCommandBufferBeginInfo;
11795   };
11796   using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo;
11797 
11798   struct DeviceGroupDeviceCreateInfo
11799   {
11800     using NativeType = VkDeviceGroupDeviceCreateInfo;
11801 
11802     static const bool allowDuplicate = false;
11803     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupDeviceCreateInfo;
11804 
11805 
11806 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11807 VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo(uint32_t physicalDeviceCount_ = {}, const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
11808     : pNext( pNext_ ), physicalDeviceCount( physicalDeviceCount_ ), pPhysicalDevices( pPhysicalDevices_ )
11809     {}
11810 
11811     VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11812 
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11813     DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11814       : DeviceGroupDeviceCreateInfo( *reinterpret_cast<DeviceGroupDeviceCreateInfo const *>( &rhs ) )
11815     {}
11816 
11817 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupDeviceCreateInfoVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11818     DeviceGroupDeviceCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const & physicalDevices_, const void * pNext_ = nullptr )
11819     : pNext( pNext_ ), physicalDeviceCount( static_cast<uint32_t>( physicalDevices_.size() ) ), pPhysicalDevices( physicalDevices_.data() )
11820     {}
11821 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11822 
11823 
11824     DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11825 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11826 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11827     DeviceGroupDeviceCreateInfo & operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
11828     {
11829       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo const *>( &rhs );
11830       return *this;
11831     }
11832 
11833 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11834     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
11835     {
11836       pNext = pNext_;
11837       return *this;
11838     }
11839 
setPhysicalDeviceCountVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11840     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) VULKAN_HPP_NOEXCEPT
11841     {
11842       physicalDeviceCount = physicalDeviceCount_;
11843       return *this;
11844     }
11845 
setPPhysicalDevicesVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11846     VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPPhysicalDevices( const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices_ ) VULKAN_HPP_NOEXCEPT
11847     {
11848       pPhysicalDevices = pPhysicalDevices_;
11849       return *this;
11850     }
11851 
11852 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPhysicalDevicesVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11853     DeviceGroupDeviceCreateInfo & setPhysicalDevices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PhysicalDevice> const & physicalDevices_ ) VULKAN_HPP_NOEXCEPT
11854     {
11855       physicalDeviceCount = static_cast<uint32_t>( physicalDevices_.size() );
11856       pPhysicalDevices = physicalDevices_.data();
11857       return *this;
11858     }
11859 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
11860 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
11861 
11862 
operator VkDeviceGroupDeviceCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11863     operator VkDeviceGroupDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
11864     {
11865       return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfo*>( this );
11866     }
11867 
operator VkDeviceGroupDeviceCreateInfo&VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11868     operator VkDeviceGroupDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT
11869     {
11870       return *reinterpret_cast<VkDeviceGroupDeviceCreateInfo*>( this );
11871     }
11872 
11873 #if defined( VULKAN_HPP_USE_REFLECT )
11874 #if 14 <= VULKAN_HPP_CPP_VERSION
11875     auto
11876 #else
11877     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PhysicalDevice * const &>
11878 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11879       reflect() const VULKAN_HPP_NOEXCEPT
11880     {
11881       return std::tie( sType, pNext, physicalDeviceCount, pPhysicalDevices );
11882     }
11883 #endif
11884 
11885 
11886 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
11887 auto operator<=>( DeviceGroupDeviceCreateInfo const & ) const = default;
11888 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11889     bool operator==( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11890     {
11891 #if defined( VULKAN_HPP_USE_REFLECT )
11892       return this->reflect() == rhs.reflect();
11893 #else
11894       return ( sType == rhs.sType )
11895           && ( pNext == rhs.pNext )
11896           && ( physicalDeviceCount == rhs.physicalDeviceCount )
11897           && ( pPhysicalDevices == rhs.pPhysicalDevices );
11898 #endif
11899     }
11900 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo11901     bool operator!=( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
11902     {
11903       return !operator==( rhs );
11904     }
11905 #endif
11906 
11907     public:
11908     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo;
11909     const void * pNext = {};
11910     uint32_t physicalDeviceCount = {};
11911     const VULKAN_HPP_NAMESPACE::PhysicalDevice * pPhysicalDevices = {};
11912 
11913   };
11914 
11915   template <>
11916   struct CppType<StructureType, StructureType::eDeviceGroupDeviceCreateInfo>
11917   {
11918     using Type = DeviceGroupDeviceCreateInfo;
11919   };
11920   using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo;
11921 
11922   struct DeviceGroupPresentCapabilitiesKHR
11923   {
11924     using NativeType = VkDeviceGroupPresentCapabilitiesKHR;
11925 
11926     static const bool allowDuplicate = false;
11927     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupPresentCapabilitiesKHR;
11928 
11929 
11930 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupPresentCapabilitiesKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR11931 VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR(std::array<uint32_t,VK_MAX_DEVICE_GROUP_SIZE> const & presentMask_ = {}, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
11932     : pNext( pNext_ ), presentMask( presentMask_ ), modes( modes_ )
11933     {}
11934 
11935     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11936 
DeviceGroupPresentCapabilitiesKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR11937     DeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
11938       : DeviceGroupPresentCapabilitiesKHR( *reinterpret_cast<DeviceGroupPresentCapabilitiesKHR const *>( &rhs ) )
11939     {}
11940 
11941 
11942     DeviceGroupPresentCapabilitiesKHR & operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
11943 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
11944 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR11945     DeviceGroupPresentCapabilitiesKHR & operator=( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
11946     {
11947       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR const *>( &rhs );
11948       return *this;
11949     }
11950 
11951 
operator VkDeviceGroupPresentCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR11952     operator VkDeviceGroupPresentCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
11953     {
11954       return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHR*>( this );
11955     }
11956 
operator VkDeviceGroupPresentCapabilitiesKHR&VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR11957     operator VkDeviceGroupPresentCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
11958     {
11959       return *reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR*>( this );
11960     }
11961 
11962 #if defined( VULKAN_HPP_USE_REFLECT )
11963 #if 14 <= VULKAN_HPP_CPP_VERSION
11964     auto
11965 #else
11966     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> const &, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &>
11967 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR11968       reflect() const VULKAN_HPP_NOEXCEPT
11969     {
11970       return std::tie( sType, pNext, presentMask, modes );
11971     }
11972 #endif
11973 
11974 
11975 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
11976 auto operator<=>( DeviceGroupPresentCapabilitiesKHR const & ) const = default;
11977 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR11978     bool operator==( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
11979     {
11980 #if defined( VULKAN_HPP_USE_REFLECT )
11981       return this->reflect() == rhs.reflect();
11982 #else
11983       return ( sType == rhs.sType )
11984           && ( pNext == rhs.pNext )
11985           && ( presentMask == rhs.presentMask )
11986           && ( modes == rhs.modes );
11987 #endif
11988     }
11989 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR11990     bool operator!=( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
11991     {
11992       return !operator==( rhs );
11993     }
11994 #endif
11995 
11996     public:
11997     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR;
11998     void * pNext = {};
11999     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, VK_MAX_DEVICE_GROUP_SIZE> presentMask = {};
12000     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {};
12001 
12002   };
12003 
12004   template <>
12005   struct CppType<StructureType, StructureType::eDeviceGroupPresentCapabilitiesKHR>
12006   {
12007     using Type = DeviceGroupPresentCapabilitiesKHR;
12008   };
12009 
12010   struct DeviceGroupPresentInfoKHR
12011   {
12012     using NativeType = VkDeviceGroupPresentInfoKHR;
12013 
12014     static const bool allowDuplicate = false;
12015     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupPresentInfoKHR;
12016 
12017 
12018 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12019 VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR(uint32_t swapchainCount_ = {}, const uint32_t * pDeviceMasks_ = {}, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
12020     : pNext( pNext_ ), swapchainCount( swapchainCount_ ), pDeviceMasks( pDeviceMasks_ ), mode( mode_ )
12021     {}
12022 
12023     VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12024 
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12025     DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
12026       : DeviceGroupPresentInfoKHR( *reinterpret_cast<DeviceGroupPresentInfoKHR const *>( &rhs ) )
12027     {}
12028 
12029 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupPresentInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12030     DeviceGroupPresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal, const void * pNext_ = nullptr )
12031     : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( deviceMasks_.size() ) ), pDeviceMasks( deviceMasks_.data() ), mode( mode_ )
12032     {}
12033 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12034 
12035 
12036     DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12037 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12038 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12039     DeviceGroupPresentInfoKHR & operator=( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
12040     {
12041       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR const *>( &rhs );
12042       return *this;
12043     }
12044 
12045 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12046     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12047     {
12048       pNext = pNext_;
12049       return *this;
12050     }
12051 
setSwapchainCountVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12052     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
12053     {
12054       swapchainCount = swapchainCount_;
12055       return *this;
12056     }
12057 
setPDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12058     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPDeviceMasks( const uint32_t * pDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
12059     {
12060       pDeviceMasks = pDeviceMasks_;
12061       return *this;
12062     }
12063 
12064 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12065     DeviceGroupPresentInfoKHR & setDeviceMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & deviceMasks_ ) VULKAN_HPP_NOEXCEPT
12066     {
12067       swapchainCount = static_cast<uint32_t>( deviceMasks_.size() );
12068       pDeviceMasks = deviceMasks_.data();
12069       return *this;
12070     }
12071 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12072 
setModeVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12073     VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setMode( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ ) VULKAN_HPP_NOEXCEPT
12074     {
12075       mode = mode_;
12076       return *this;
12077     }
12078 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12079 
12080 
operator VkDeviceGroupPresentInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12081     operator VkDeviceGroupPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
12082     {
12083       return *reinterpret_cast<const VkDeviceGroupPresentInfoKHR*>( this );
12084     }
12085 
operator VkDeviceGroupPresentInfoKHR&VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12086     operator VkDeviceGroupPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
12087     {
12088       return *reinterpret_cast<VkDeviceGroupPresentInfoKHR*>( 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::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR const &>
12096 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12097       reflect() const VULKAN_HPP_NOEXCEPT
12098     {
12099       return std::tie( sType, pNext, swapchainCount, pDeviceMasks, mode );
12100     }
12101 #endif
12102 
12103 
12104 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
12105 auto operator<=>( DeviceGroupPresentInfoKHR const & ) const = default;
12106 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12107     bool operator==( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
12108     {
12109 #if defined( VULKAN_HPP_USE_REFLECT )
12110       return this->reflect() == rhs.reflect();
12111 #else
12112       return ( sType == rhs.sType )
12113           && ( pNext == rhs.pNext )
12114           && ( swapchainCount == rhs.swapchainCount )
12115           && ( pDeviceMasks == rhs.pDeviceMasks )
12116           && ( mode == rhs.mode );
12117 #endif
12118     }
12119 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR12120     bool operator!=( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
12121     {
12122       return !operator==( rhs );
12123     }
12124 #endif
12125 
12126     public:
12127     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentInfoKHR;
12128     const void * pNext = {};
12129     uint32_t swapchainCount = {};
12130     const uint32_t * pDeviceMasks = {};
12131     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal;
12132 
12133   };
12134 
12135   template <>
12136   struct CppType<StructureType, StructureType::eDeviceGroupPresentInfoKHR>
12137   {
12138     using Type = DeviceGroupPresentInfoKHR;
12139   };
12140 
12141   struct DeviceGroupRenderPassBeginInfo
12142   {
12143     using NativeType = VkDeviceGroupRenderPassBeginInfo;
12144 
12145     static const bool allowDuplicate = false;
12146     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupRenderPassBeginInfo;
12147 
12148 
12149 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12150 VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo(uint32_t deviceMask_ = {}, uint32_t deviceRenderAreaCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
12151     : pNext( pNext_ ), deviceMask( deviceMask_ ), deviceRenderAreaCount( deviceRenderAreaCount_ ), pDeviceRenderAreas( pDeviceRenderAreas_ )
12152     {}
12153 
12154     VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12155 
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12156     DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12157       : DeviceGroupRenderPassBeginInfo( *reinterpret_cast<DeviceGroupRenderPassBeginInfo const *>( &rhs ) )
12158     {}
12159 
12160 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupRenderPassBeginInfoVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12161     DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_, const void * pNext_ = nullptr )
12162     : pNext( pNext_ ), deviceMask( deviceMask_ ), deviceRenderAreaCount( static_cast<uint32_t>( deviceRenderAreas_.size() ) ), pDeviceRenderAreas( deviceRenderAreas_.data() )
12163     {}
12164 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12165 
12166 
12167     DeviceGroupRenderPassBeginInfo & operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12168 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12169 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12170     DeviceGroupRenderPassBeginInfo & operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12171     {
12172       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo const *>( &rhs );
12173       return *this;
12174     }
12175 
12176 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12177     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12178     {
12179       pNext = pNext_;
12180       return *this;
12181     }
12182 
setDeviceMaskVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12183     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
12184     {
12185       deviceMask = deviceMask_;
12186       return *this;
12187     }
12188 
setDeviceRenderAreaCountVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12189     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) VULKAN_HPP_NOEXCEPT
12190     {
12191       deviceRenderAreaCount = deviceRenderAreaCount_;
12192       return *this;
12193     }
12194 
setPDeviceRenderAreasVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12195     VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setPDeviceRenderAreas( const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT
12196     {
12197       pDeviceRenderAreas = pDeviceRenderAreas_;
12198       return *this;
12199     }
12200 
12201 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDeviceRenderAreasVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12202     DeviceGroupRenderPassBeginInfo & setDeviceRenderAreas( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & deviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT
12203     {
12204       deviceRenderAreaCount = static_cast<uint32_t>( deviceRenderAreas_.size() );
12205       pDeviceRenderAreas = deviceRenderAreas_.data();
12206       return *this;
12207     }
12208 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12209 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12210 
12211 
operator VkDeviceGroupRenderPassBeginInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12212     operator VkDeviceGroupRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
12213     {
12214       return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfo*>( this );
12215     }
12216 
operator VkDeviceGroupRenderPassBeginInfo&VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12217     operator VkDeviceGroupRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT
12218     {
12219       return *reinterpret_cast<VkDeviceGroupRenderPassBeginInfo*>( this );
12220     }
12221 
12222 #if defined( VULKAN_HPP_USE_REFLECT )
12223 #if 14 <= VULKAN_HPP_CPP_VERSION
12224     auto
12225 #else
12226     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
12227 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12228       reflect() const VULKAN_HPP_NOEXCEPT
12229     {
12230       return std::tie( sType, pNext, deviceMask, deviceRenderAreaCount, pDeviceRenderAreas );
12231     }
12232 #endif
12233 
12234 
12235 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
12236 auto operator<=>( DeviceGroupRenderPassBeginInfo const & ) const = default;
12237 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12238     bool operator==( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12239     {
12240 #if defined( VULKAN_HPP_USE_REFLECT )
12241       return this->reflect() == rhs.reflect();
12242 #else
12243       return ( sType == rhs.sType )
12244           && ( pNext == rhs.pNext )
12245           && ( deviceMask == rhs.deviceMask )
12246           && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
12247           && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
12248 #endif
12249     }
12250 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo12251     bool operator!=( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12252     {
12253       return !operator==( rhs );
12254     }
12255 #endif
12256 
12257     public:
12258     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo;
12259     const void * pNext = {};
12260     uint32_t deviceMask = {};
12261     uint32_t deviceRenderAreaCount = {};
12262     const VULKAN_HPP_NAMESPACE::Rect2D * pDeviceRenderAreas = {};
12263 
12264   };
12265 
12266   template <>
12267   struct CppType<StructureType, StructureType::eDeviceGroupRenderPassBeginInfo>
12268   {
12269     using Type = DeviceGroupRenderPassBeginInfo;
12270   };
12271   using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo;
12272 
12273   struct DeviceGroupSubmitInfo
12274   {
12275     using NativeType = VkDeviceGroupSubmitInfo;
12276 
12277     static const bool allowDuplicate = false;
12278     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupSubmitInfo;
12279 
12280 
12281 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12282 VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo(uint32_t waitSemaphoreCount_ = {}, const uint32_t * pWaitSemaphoreDeviceIndices_ = {}, uint32_t commandBufferCount_ = {}, const uint32_t * pCommandBufferDeviceMasks_ = {}, uint32_t signalSemaphoreCount_ = {}, const uint32_t * pSignalSemaphoreDeviceIndices_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
12283     : pNext( pNext_ ), waitSemaphoreCount( waitSemaphoreCount_ ), pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ ), commandBufferCount( commandBufferCount_ ), pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ ), signalSemaphoreCount( signalSemaphoreCount_ ), pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
12284     {}
12285 
12286     VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12287 
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12288     DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12289       : DeviceGroupSubmitInfo( *reinterpret_cast<DeviceGroupSubmitInfo const *>( &rhs ) )
12290     {}
12291 
12292 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceGroupSubmitInfoVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12293     DeviceGroupSubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ = {}, const void * pNext_ = nullptr )
12294     : pNext( pNext_ ), waitSemaphoreCount( static_cast<uint32_t>( waitSemaphoreDeviceIndices_.size() ) ), pWaitSemaphoreDeviceIndices( waitSemaphoreDeviceIndices_.data() ), commandBufferCount( static_cast<uint32_t>( commandBufferDeviceMasks_.size() ) ), pCommandBufferDeviceMasks( commandBufferDeviceMasks_.data() ), signalSemaphoreCount( static_cast<uint32_t>( signalSemaphoreDeviceIndices_.size() ) ), pSignalSemaphoreDeviceIndices( signalSemaphoreDeviceIndices_.data() )
12295     {}
12296 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12297 
12298 
12299     DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12300 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12301 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12302     DeviceGroupSubmitInfo & operator=( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12303     {
12304       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo const *>( &rhs );
12305       return *this;
12306     }
12307 
12308 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12309     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12310     {
12311       pNext = pNext_;
12312       return *this;
12313     }
12314 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12315     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
12316     {
12317       waitSemaphoreCount = waitSemaphoreCount_;
12318       return *this;
12319     }
12320 
setPWaitSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12321     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPWaitSemaphoreDeviceIndices( const uint32_t * pWaitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
12322     {
12323       pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
12324       return *this;
12325     }
12326 
12327 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12328     DeviceGroupSubmitInfo & setWaitSemaphoreDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & waitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
12329     {
12330       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphoreDeviceIndices_.size() );
12331       pWaitSemaphoreDeviceIndices = waitSemaphoreDeviceIndices_.data();
12332       return *this;
12333     }
12334 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12335 
setCommandBufferCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12336     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
12337     {
12338       commandBufferCount = commandBufferCount_;
12339       return *this;
12340     }
12341 
setPCommandBufferDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12342     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPCommandBufferDeviceMasks( const uint32_t * pCommandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
12343     {
12344       pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
12345       return *this;
12346     }
12347 
12348 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCommandBufferDeviceMasksVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12349     DeviceGroupSubmitInfo & setCommandBufferDeviceMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & commandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT
12350     {
12351       commandBufferCount = static_cast<uint32_t>( commandBufferDeviceMasks_.size() );
12352       pCommandBufferDeviceMasks = commandBufferDeviceMasks_.data();
12353       return *this;
12354     }
12355 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12356 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12357     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
12358     {
12359       signalSemaphoreCount = signalSemaphoreCount_;
12360       return *this;
12361     }
12362 
setPSignalSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12363     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPSignalSemaphoreDeviceIndices( const uint32_t * pSignalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
12364     {
12365       pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
12366       return *this;
12367     }
12368 
12369 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreDeviceIndicesVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12370     DeviceGroupSubmitInfo & setSignalSemaphoreDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & signalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT
12371     {
12372       signalSemaphoreCount = static_cast<uint32_t>( signalSemaphoreDeviceIndices_.size() );
12373       pSignalSemaphoreDeviceIndices = signalSemaphoreDeviceIndices_.data();
12374       return *this;
12375     }
12376 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12377 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12378 
12379 
operator VkDeviceGroupSubmitInfo const&VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12380     operator VkDeviceGroupSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
12381     {
12382       return *reinterpret_cast<const VkDeviceGroupSubmitInfo*>( this );
12383     }
12384 
operator VkDeviceGroupSubmitInfo&VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12385     operator VkDeviceGroupSubmitInfo &() VULKAN_HPP_NOEXCEPT
12386     {
12387       return *reinterpret_cast<VkDeviceGroupSubmitInfo*>( this );
12388     }
12389 
12390 #if defined( VULKAN_HPP_USE_REFLECT )
12391 #if 14 <= VULKAN_HPP_CPP_VERSION
12392     auto
12393 #else
12394     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &, uint32_t const &, const uint32_t * const &, uint32_t const &, const uint32_t * const &>
12395 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12396       reflect() const VULKAN_HPP_NOEXCEPT
12397     {
12398       return std::tie( sType, pNext, waitSemaphoreCount, pWaitSemaphoreDeviceIndices, commandBufferCount, pCommandBufferDeviceMasks, signalSemaphoreCount, pSignalSemaphoreDeviceIndices );
12399     }
12400 #endif
12401 
12402 
12403 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
12404 auto operator<=>( DeviceGroupSubmitInfo const & ) const = default;
12405 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12406     bool operator==( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12407     {
12408 #if defined( VULKAN_HPP_USE_REFLECT )
12409       return this->reflect() == rhs.reflect();
12410 #else
12411       return ( sType == rhs.sType )
12412           && ( pNext == rhs.pNext )
12413           && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
12414           && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
12415           && ( commandBufferCount == rhs.commandBufferCount )
12416           && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
12417           && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
12418           && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
12419 #endif
12420     }
12421 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo12422     bool operator!=( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12423     {
12424       return !operator==( rhs );
12425     }
12426 #endif
12427 
12428     public:
12429     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSubmitInfo;
12430     const void * pNext = {};
12431     uint32_t waitSemaphoreCount = {};
12432     const uint32_t * pWaitSemaphoreDeviceIndices = {};
12433     uint32_t commandBufferCount = {};
12434     const uint32_t * pCommandBufferDeviceMasks = {};
12435     uint32_t signalSemaphoreCount = {};
12436     const uint32_t * pSignalSemaphoreDeviceIndices = {};
12437 
12438   };
12439 
12440   template <>
12441   struct CppType<StructureType, StructureType::eDeviceGroupSubmitInfo>
12442   {
12443     using Type = DeviceGroupSubmitInfo;
12444   };
12445   using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo;
12446 
12447   struct DeviceGroupSwapchainCreateInfoKHR
12448   {
12449     using NativeType = VkDeviceGroupSwapchainCreateInfoKHR;
12450 
12451     static const bool allowDuplicate = false;
12452     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
12453 
12454 
12455 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceGroupSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12456 VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR(VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
12457     : pNext( pNext_ ), modes( modes_ )
12458     {}
12459 
12460     VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12461 
DeviceGroupSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12462     DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
12463       : DeviceGroupSwapchainCreateInfoKHR( *reinterpret_cast<DeviceGroupSwapchainCreateInfoKHR const *>( &rhs ) )
12464     {}
12465 
12466 
12467     DeviceGroupSwapchainCreateInfoKHR & operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12468 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12469 
operator =VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12470     DeviceGroupSwapchainCreateInfoKHR & operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
12471     {
12472       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR const *>( &rhs );
12473       return *this;
12474     }
12475 
12476 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12477     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12478     {
12479       pNext = pNext_;
12480       return *this;
12481     }
12482 
setModesVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12483     VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setModes( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ ) VULKAN_HPP_NOEXCEPT
12484     {
12485       modes = modes_;
12486       return *this;
12487     }
12488 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12489 
12490 
operator VkDeviceGroupSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12491     operator VkDeviceGroupSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
12492     {
12493       return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHR*>( this );
12494     }
12495 
operator VkDeviceGroupSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12496     operator VkDeviceGroupSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
12497     {
12498       return *reinterpret_cast<VkDeviceGroupSwapchainCreateInfoKHR*>( this );
12499     }
12500 
12501 #if defined( VULKAN_HPP_USE_REFLECT )
12502 #if 14 <= VULKAN_HPP_CPP_VERSION
12503     auto
12504 #else
12505     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR const &>
12506 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12507       reflect() const VULKAN_HPP_NOEXCEPT
12508     {
12509       return std::tie( sType, pNext, modes );
12510     }
12511 #endif
12512 
12513 
12514 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
12515 auto operator<=>( DeviceGroupSwapchainCreateInfoKHR const & ) const = default;
12516 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12517     bool operator==( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
12518     {
12519 #if defined( VULKAN_HPP_USE_REFLECT )
12520       return this->reflect() == rhs.reflect();
12521 #else
12522       return ( sType == rhs.sType )
12523           && ( pNext == rhs.pNext )
12524           && ( modes == rhs.modes );
12525 #endif
12526     }
12527 
operator !=VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR12528     bool operator!=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
12529     {
12530       return !operator==( rhs );
12531     }
12532 #endif
12533 
12534     public:
12535     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR;
12536     const void * pNext = {};
12537     VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {};
12538 
12539   };
12540 
12541   template <>
12542   struct CppType<StructureType, StructureType::eDeviceGroupSwapchainCreateInfoKHR>
12543   {
12544     using Type = DeviceGroupSwapchainCreateInfoKHR;
12545   };
12546 
12547   struct ImageCreateInfo
12548   {
12549     using NativeType = VkImageCreateInfo;
12550 
12551     static const bool allowDuplicate = false;
12552     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCreateInfo;
12553 
12554 
12555 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo12556 VULKAN_HPP_CONSTEXPR ImageCreateInfo(VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ImageType imageType_ = VULKAN_HPP_NAMESPACE::ImageType::e1D, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}, uint32_t mipLevels_ = {}, uint32_t arrayLayers_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = {}, const uint32_t * pQueueFamilyIndices_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
12557     : pNext( pNext_ ), flags( flags_ ), imageType( imageType_ ), format( format_ ), extent( extent_ ), mipLevels( mipLevels_ ), arrayLayers( arrayLayers_ ), samples( samples_ ), tiling( tiling_ ), usage( usage_ ), sharingMode( sharingMode_ ), queueFamilyIndexCount( queueFamilyIndexCount_ ), pQueueFamilyIndices( pQueueFamilyIndices_ ), initialLayout( initialLayout_ )
12558     {}
12559 
12560     VULKAN_HPP_CONSTEXPR ImageCreateInfo( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12561 
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo12562     ImageCreateInfo( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12563       : ImageCreateInfo( *reinterpret_cast<ImageCreateInfo const *>( &rhs ) )
12564     {}
12565 
12566 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageCreateInfoVULKAN_HPP_NAMESPACE::ImageCreateInfo12567     ImageCreateInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_, VULKAN_HPP_NAMESPACE::ImageType imageType_, VULKAN_HPP_NAMESPACE::Format format_, VULKAN_HPP_NAMESPACE::Extent3D extent_, uint32_t mipLevels_, uint32_t arrayLayers_, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_, VULKAN_HPP_NAMESPACE::ImageTiling tiling_, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, const void * pNext_ = nullptr )
12568     : pNext( pNext_ ), flags( flags_ ), imageType( imageType_ ), format( format_ ), extent( extent_ ), mipLevels( mipLevels_ ), arrayLayers( arrayLayers_ ), samples( samples_ ), tiling( tiling_ ), usage( usage_ ), sharingMode( sharingMode_ ), queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) ), pQueueFamilyIndices( queueFamilyIndices_.data() ), initialLayout( initialLayout_ )
12569     {}
12570 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12571 
12572 
12573     ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12574 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12575 
operator =VULKAN_HPP_NAMESPACE::ImageCreateInfo12576     ImageCreateInfo & operator=( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12577     {
12578       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCreateInfo const *>( &rhs );
12579       return *this;
12580     }
12581 
12582 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageCreateInfo12583     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12584     {
12585       pNext = pNext_;
12586       return *this;
12587     }
12588 
setFlagsVULKAN_HPP_NAMESPACE::ImageCreateInfo12589     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
12590     {
12591       flags = flags_;
12592       return *this;
12593     }
12594 
setImageTypeVULKAN_HPP_NAMESPACE::ImageCreateInfo12595     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setImageType( VULKAN_HPP_NAMESPACE::ImageType imageType_ ) VULKAN_HPP_NOEXCEPT
12596     {
12597       imageType = imageType_;
12598       return *this;
12599     }
12600 
setFormatVULKAN_HPP_NAMESPACE::ImageCreateInfo12601     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
12602     {
12603       format = format_;
12604       return *this;
12605     }
12606 
setExtentVULKAN_HPP_NAMESPACE::ImageCreateInfo12607     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
12608     {
12609       extent = extent_;
12610       return *this;
12611     }
12612 
setMipLevelsVULKAN_HPP_NAMESPACE::ImageCreateInfo12613     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setMipLevels( uint32_t mipLevels_ ) VULKAN_HPP_NOEXCEPT
12614     {
12615       mipLevels = mipLevels_;
12616       return *this;
12617     }
12618 
setArrayLayersVULKAN_HPP_NAMESPACE::ImageCreateInfo12619     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setArrayLayers( uint32_t arrayLayers_ ) VULKAN_HPP_NOEXCEPT
12620     {
12621       arrayLayers = arrayLayers_;
12622       return *this;
12623     }
12624 
setSamplesVULKAN_HPP_NAMESPACE::ImageCreateInfo12625     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT
12626     {
12627       samples = samples_;
12628       return *this;
12629     }
12630 
setTilingVULKAN_HPP_NAMESPACE::ImageCreateInfo12631     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
12632     {
12633       tiling = tiling_;
12634       return *this;
12635     }
12636 
setUsageVULKAN_HPP_NAMESPACE::ImageCreateInfo12637     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
12638     {
12639       usage = usage_;
12640       return *this;
12641     }
12642 
setSharingModeVULKAN_HPP_NAMESPACE::ImageCreateInfo12643     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
12644     {
12645       sharingMode = sharingMode_;
12646       return *this;
12647     }
12648 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::ImageCreateInfo12649     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
12650     {
12651       queueFamilyIndexCount = queueFamilyIndexCount_;
12652       return *this;
12653     }
12654 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::ImageCreateInfo12655     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
12656     {
12657       pQueueFamilyIndices = pQueueFamilyIndices_;
12658       return *this;
12659     }
12660 
12661 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::ImageCreateInfo12662     ImageCreateInfo & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
12663     {
12664       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
12665       pQueueFamilyIndices = queueFamilyIndices_.data();
12666       return *this;
12667     }
12668 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12669 
setInitialLayoutVULKAN_HPP_NAMESPACE::ImageCreateInfo12670     VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT
12671     {
12672       initialLayout = initialLayout_;
12673       return *this;
12674     }
12675 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12676 
12677 
operator VkImageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageCreateInfo12678     operator VkImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
12679     {
12680       return *reinterpret_cast<const VkImageCreateInfo*>( this );
12681     }
12682 
operator VkImageCreateInfo&VULKAN_HPP_NAMESPACE::ImageCreateInfo12683     operator VkImageCreateInfo &() VULKAN_HPP_NOEXCEPT
12684     {
12685       return *reinterpret_cast<VkImageCreateInfo*>( this );
12686     }
12687 
12688 #if defined( VULKAN_HPP_USE_REFLECT )
12689 #if 14 <= VULKAN_HPP_CPP_VERSION
12690     auto
12691 #else
12692     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageCreateFlags const &, VULKAN_HPP_NAMESPACE::ImageType const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::Extent3D const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &, VULKAN_HPP_NAMESPACE::ImageTiling const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &, VULKAN_HPP_NAMESPACE::SharingMode const &, uint32_t const &, const uint32_t * const &, VULKAN_HPP_NAMESPACE::ImageLayout const &>
12693 #endif
reflectVULKAN_HPP_NAMESPACE::ImageCreateInfo12694       reflect() const VULKAN_HPP_NOEXCEPT
12695     {
12696       return std::tie( sType, pNext, flags, imageType, format, extent, mipLevels, arrayLayers, samples, tiling, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices, initialLayout );
12697     }
12698 #endif
12699 
12700 
12701 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
12702 auto operator<=>( ImageCreateInfo const & ) const = default;
12703 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCreateInfo12704     bool operator==( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12705     {
12706 #if defined( VULKAN_HPP_USE_REFLECT )
12707       return this->reflect() == rhs.reflect();
12708 #else
12709       return ( sType == rhs.sType )
12710           && ( pNext == rhs.pNext )
12711           && ( flags == rhs.flags )
12712           && ( imageType == rhs.imageType )
12713           && ( format == rhs.format )
12714           && ( extent == rhs.extent )
12715           && ( mipLevels == rhs.mipLevels )
12716           && ( arrayLayers == rhs.arrayLayers )
12717           && ( samples == rhs.samples )
12718           && ( tiling == rhs.tiling )
12719           && ( usage == rhs.usage )
12720           && ( sharingMode == rhs.sharingMode )
12721           && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
12722           && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
12723           && ( initialLayout == rhs.initialLayout );
12724 #endif
12725     }
12726 
operator !=VULKAN_HPP_NAMESPACE::ImageCreateInfo12727     bool operator!=( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12728     {
12729       return !operator==( rhs );
12730     }
12731 #endif
12732 
12733     public:
12734     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCreateInfo;
12735     const void * pNext = {};
12736     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {};
12737     VULKAN_HPP_NAMESPACE::ImageType imageType = VULKAN_HPP_NAMESPACE::ImageType::e1D;
12738     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
12739     VULKAN_HPP_NAMESPACE::Extent3D extent = {};
12740     uint32_t mipLevels = {};
12741     uint32_t arrayLayers = {};
12742     VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
12743     VULKAN_HPP_NAMESPACE::ImageTiling tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
12744     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
12745     VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
12746     uint32_t queueFamilyIndexCount = {};
12747     const uint32_t * pQueueFamilyIndices = {};
12748     VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
12749 
12750   };
12751 
12752   template <>
12753   struct CppType<StructureType, StructureType::eImageCreateInfo>
12754   {
12755     using Type = ImageCreateInfo;
12756   };
12757 
12758   struct DeviceImageMemoryRequirements
12759   {
12760     using NativeType = VkDeviceImageMemoryRequirements;
12761 
12762     static const bool allowDuplicate = false;
12763     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceImageMemoryRequirements;
12764 
12765 
12766 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceImageMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12767 VULKAN_HPP_CONSTEXPR DeviceImageMemoryRequirements(const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ = {}, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
12768     : pNext( pNext_ ), pCreateInfo( pCreateInfo_ ), planeAspect( planeAspect_ )
12769     {}
12770 
12771     VULKAN_HPP_CONSTEXPR DeviceImageMemoryRequirements( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12772 
DeviceImageMemoryRequirementsVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12773     DeviceImageMemoryRequirements( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
12774       : DeviceImageMemoryRequirements( *reinterpret_cast<DeviceImageMemoryRequirements const *>( &rhs ) )
12775     {}
12776 
12777 
12778     DeviceImageMemoryRequirements & operator=( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12779 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12780 
operator =VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12781     DeviceImageMemoryRequirements & operator=( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
12782     {
12783       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements const *>( &rhs );
12784       return *this;
12785     }
12786 
12787 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12788     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12789     {
12790       pNext = pNext_;
12791       return *this;
12792     }
12793 
setPCreateInfoVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12794     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPCreateInfo( const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo_ ) VULKAN_HPP_NOEXCEPT
12795     {
12796       pCreateInfo = pCreateInfo_;
12797       return *this;
12798     }
12799 
setPlaneAspectVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12800     VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
12801     {
12802       planeAspect = planeAspect_;
12803       return *this;
12804     }
12805 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12806 
12807 
operator VkDeviceImageMemoryRequirements const&VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12808     operator VkDeviceImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
12809     {
12810       return *reinterpret_cast<const VkDeviceImageMemoryRequirements*>( this );
12811     }
12812 
operator VkDeviceImageMemoryRequirements&VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12813     operator VkDeviceImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT
12814     {
12815       return *reinterpret_cast<VkDeviceImageMemoryRequirements*>( this );
12816     }
12817 
12818 #if defined( VULKAN_HPP_USE_REFLECT )
12819 #if 14 <= VULKAN_HPP_CPP_VERSION
12820     auto
12821 #else
12822     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const VULKAN_HPP_NAMESPACE::ImageCreateInfo * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
12823 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12824       reflect() const VULKAN_HPP_NOEXCEPT
12825     {
12826       return std::tie( sType, pNext, pCreateInfo, planeAspect );
12827     }
12828 #endif
12829 
12830 
12831 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
12832 auto operator<=>( DeviceImageMemoryRequirements const & ) const = default;
12833 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12834     bool operator==( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
12835     {
12836 #if defined( VULKAN_HPP_USE_REFLECT )
12837       return this->reflect() == rhs.reflect();
12838 #else
12839       return ( sType == rhs.sType )
12840           && ( pNext == rhs.pNext )
12841           && ( pCreateInfo == rhs.pCreateInfo )
12842           && ( planeAspect == rhs.planeAspect );
12843 #endif
12844     }
12845 
operator !=VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements12846     bool operator!=( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
12847     {
12848       return !operator==( rhs );
12849     }
12850 #endif
12851 
12852     public:
12853     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceImageMemoryRequirements;
12854     const void * pNext = {};
12855     const VULKAN_HPP_NAMESPACE::ImageCreateInfo * pCreateInfo = {};
12856     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
12857 
12858   };
12859 
12860   template <>
12861   struct CppType<StructureType, StructureType::eDeviceImageMemoryRequirements>
12862   {
12863     using Type = DeviceImageMemoryRequirements;
12864   };
12865   using DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements;
12866 
12867   struct DeviceMemoryOpaqueCaptureAddressInfo
12868   {
12869     using NativeType = VkDeviceMemoryOpaqueCaptureAddressInfo;
12870 
12871     static const bool allowDuplicate = false;
12872     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
12873 
12874 
12875 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceMemoryOpaqueCaptureAddressInfoVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12876 VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
12877     : pNext( pNext_ ), memory( memory_ )
12878     {}
12879 
12880     VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12881 
DeviceMemoryOpaqueCaptureAddressInfoVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12882     DeviceMemoryOpaqueCaptureAddressInfo( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12883       : DeviceMemoryOpaqueCaptureAddressInfo( *reinterpret_cast<DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs ) )
12884     {}
12885 
12886 
12887     DeviceMemoryOpaqueCaptureAddressInfo & operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12888 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12889 
operator =VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12890     DeviceMemoryOpaqueCaptureAddressInfo & operator=( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12891     {
12892       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo const *>( &rhs );
12893       return *this;
12894     }
12895 
12896 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12897     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
12898     {
12899       pNext = pNext_;
12900       return *this;
12901     }
12902 
setMemoryVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12903     VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
12904     {
12905       memory = memory_;
12906       return *this;
12907     }
12908 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
12909 
12910 
operator VkDeviceMemoryOpaqueCaptureAddressInfo const&VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12911     operator VkDeviceMemoryOpaqueCaptureAddressInfo const &() const VULKAN_HPP_NOEXCEPT
12912     {
12913       return *reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo*>( this );
12914     }
12915 
operator VkDeviceMemoryOpaqueCaptureAddressInfo&VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12916     operator VkDeviceMemoryOpaqueCaptureAddressInfo &() VULKAN_HPP_NOEXCEPT
12917     {
12918       return *reinterpret_cast<VkDeviceMemoryOpaqueCaptureAddressInfo*>( this );
12919     }
12920 
12921 #if defined( VULKAN_HPP_USE_REFLECT )
12922 #if 14 <= VULKAN_HPP_CPP_VERSION
12923     auto
12924 #else
12925     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &>
12926 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12927       reflect() const VULKAN_HPP_NOEXCEPT
12928     {
12929       return std::tie( sType, pNext, memory );
12930     }
12931 #endif
12932 
12933 
12934 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
12935 auto operator<=>( DeviceMemoryOpaqueCaptureAddressInfo const & ) const = default;
12936 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12937     bool operator==( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12938     {
12939 #if defined( VULKAN_HPP_USE_REFLECT )
12940       return this->reflect() == rhs.reflect();
12941 #else
12942       return ( sType == rhs.sType )
12943           && ( pNext == rhs.pNext )
12944           && ( memory == rhs.memory );
12945 #endif
12946     }
12947 
operator !=VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo12948     bool operator!=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
12949     {
12950       return !operator==( rhs );
12951     }
12952 #endif
12953 
12954     public:
12955     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo;
12956     const void * pNext = {};
12957     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
12958 
12959   };
12960 
12961   template <>
12962   struct CppType<StructureType, StructureType::eDeviceMemoryOpaqueCaptureAddressInfo>
12963   {
12964     using Type = DeviceMemoryOpaqueCaptureAddressInfo;
12965   };
12966   using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo;
12967 
12968   struct PipelineCacheCreateInfo
12969   {
12970     using NativeType = VkPipelineCacheCreateInfo;
12971 
12972     static const bool allowDuplicate = false;
12973     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCacheCreateInfo;
12974 
12975 
12976 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo12977 VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo(VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ = {}, size_t initialDataSize_ = {}, const void * pInitialData_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
12978     : pNext( pNext_ ), flags( flags_ ), initialDataSize( initialDataSize_ ), pInitialData( pInitialData_ )
12979     {}
12980 
12981     VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12982 
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo12983     PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12984       : PipelineCacheCreateInfo( *reinterpret_cast<PipelineCacheCreateInfo const *>( &rhs ) )
12985     {}
12986 
12987 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
12988     template <typename T>
PipelineCacheCreateInfoVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo12989     PipelineCacheCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_, const void * pNext_ = nullptr )
12990     : pNext( pNext_ ), flags( flags_ ), initialDataSize( initialData_.size() * sizeof(T) ), pInitialData( initialData_.data() )
12991     {}
12992 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
12993 
12994 
12995     PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
12996 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
12997 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo12998     PipelineCacheCreateInfo & operator=( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
12999     {
13000       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const *>( &rhs );
13001       return *this;
13002     }
13003 
13004 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13005     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13006     {
13007       pNext = pNext_;
13008       return *this;
13009     }
13010 
setFlagsVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13011     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
13012     {
13013       flags = flags_;
13014       return *this;
13015     }
13016 
setInitialDataSizeVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13017     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT
13018     {
13019       initialDataSize = initialDataSize_;
13020       return *this;
13021     }
13022 
setPInitialDataVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13023     VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPInitialData( const void * pInitialData_ ) VULKAN_HPP_NOEXCEPT
13024     {
13025       pInitialData = pInitialData_;
13026       return *this;
13027     }
13028 
13029 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
13030     template <typename T>
setInitialDataVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13031     PipelineCacheCreateInfo & setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & initialData_ ) VULKAN_HPP_NOEXCEPT
13032     {
13033       initialDataSize = initialData_.size() * sizeof(T);
13034       pInitialData = initialData_.data();
13035       return *this;
13036     }
13037 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
13038 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13039 
13040 
operator VkPipelineCacheCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13041     operator VkPipelineCacheCreateInfo const &() const VULKAN_HPP_NOEXCEPT
13042     {
13043       return *reinterpret_cast<const VkPipelineCacheCreateInfo*>( this );
13044     }
13045 
operator VkPipelineCacheCreateInfo&VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13046     operator VkPipelineCacheCreateInfo &() VULKAN_HPP_NOEXCEPT
13047     {
13048       return *reinterpret_cast<VkPipelineCacheCreateInfo*>( this );
13049     }
13050 
13051 #if defined( VULKAN_HPP_USE_REFLECT )
13052 #if 14 <= VULKAN_HPP_CPP_VERSION
13053     auto
13054 #else
13055     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags const &, size_t const &, const void * const &>
13056 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13057       reflect() const VULKAN_HPP_NOEXCEPT
13058     {
13059       return std::tie( sType, pNext, flags, initialDataSize, pInitialData );
13060     }
13061 #endif
13062 
13063 
13064 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
13065 auto operator<=>( PipelineCacheCreateInfo const & ) const = default;
13066 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13067     bool operator==( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13068     {
13069 #if defined( VULKAN_HPP_USE_REFLECT )
13070       return this->reflect() == rhs.reflect();
13071 #else
13072       return ( sType == rhs.sType )
13073           && ( pNext == rhs.pNext )
13074           && ( flags == rhs.flags )
13075           && ( initialDataSize == rhs.initialDataSize )
13076           && ( pInitialData == rhs.pInitialData );
13077 #endif
13078     }
13079 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo13080     bool operator!=( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13081     {
13082       return !operator==( rhs );
13083     }
13084 #endif
13085 
13086     public:
13087     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCacheCreateInfo;
13088     const void * pNext = {};
13089     VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags = {};
13090     size_t initialDataSize = {};
13091     const void * pInitialData = {};
13092 
13093   };
13094 
13095   template <>
13096   struct CppType<StructureType, StructureType::ePipelineCacheCreateInfo>
13097   {
13098     using Type = PipelineCacheCreateInfo;
13099   };
13100 
13101   struct PipelinePoolSize
13102   {
13103     using NativeType = VkPipelinePoolSize;
13104 
13105     static const bool allowDuplicate = false;
13106     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelinePoolSize;
13107 
13108 
13109 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelinePoolSizeVULKAN_HPP_NAMESPACE::PipelinePoolSize13110 VULKAN_HPP_CONSTEXPR PipelinePoolSize(VULKAN_HPP_NAMESPACE::DeviceSize poolEntrySize_ = {}, uint32_t poolEntryCount_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
13111     : pNext( pNext_ ), poolEntrySize( poolEntrySize_ ), poolEntryCount( poolEntryCount_ )
13112     {}
13113 
13114     VULKAN_HPP_CONSTEXPR PipelinePoolSize( PipelinePoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13115 
PipelinePoolSizeVULKAN_HPP_NAMESPACE::PipelinePoolSize13116     PipelinePoolSize( VkPipelinePoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
13117       : PipelinePoolSize( *reinterpret_cast<PipelinePoolSize const *>( &rhs ) )
13118     {}
13119 
13120 
13121     PipelinePoolSize & operator=( PipelinePoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13122 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13123 
operator =VULKAN_HPP_NAMESPACE::PipelinePoolSize13124     PipelinePoolSize & operator=( VkPipelinePoolSize const & rhs ) VULKAN_HPP_NOEXCEPT
13125     {
13126       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelinePoolSize const *>( &rhs );
13127       return *this;
13128     }
13129 
13130 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelinePoolSize13131     VULKAN_HPP_CONSTEXPR_14 PipelinePoolSize & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13132     {
13133       pNext = pNext_;
13134       return *this;
13135     }
13136 
setPoolEntrySizeVULKAN_HPP_NAMESPACE::PipelinePoolSize13137     VULKAN_HPP_CONSTEXPR_14 PipelinePoolSize & setPoolEntrySize( VULKAN_HPP_NAMESPACE::DeviceSize poolEntrySize_ ) VULKAN_HPP_NOEXCEPT
13138     {
13139       poolEntrySize = poolEntrySize_;
13140       return *this;
13141     }
13142 
setPoolEntryCountVULKAN_HPP_NAMESPACE::PipelinePoolSize13143     VULKAN_HPP_CONSTEXPR_14 PipelinePoolSize & setPoolEntryCount( uint32_t poolEntryCount_ ) VULKAN_HPP_NOEXCEPT
13144     {
13145       poolEntryCount = poolEntryCount_;
13146       return *this;
13147     }
13148 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13149 
13150 
operator VkPipelinePoolSize const&VULKAN_HPP_NAMESPACE::PipelinePoolSize13151     operator VkPipelinePoolSize const &() const VULKAN_HPP_NOEXCEPT
13152     {
13153       return *reinterpret_cast<const VkPipelinePoolSize*>( this );
13154     }
13155 
operator VkPipelinePoolSize&VULKAN_HPP_NAMESPACE::PipelinePoolSize13156     operator VkPipelinePoolSize &() VULKAN_HPP_NOEXCEPT
13157     {
13158       return *reinterpret_cast<VkPipelinePoolSize*>( this );
13159     }
13160 
13161 #if defined( VULKAN_HPP_USE_REFLECT )
13162 #if 14 <= VULKAN_HPP_CPP_VERSION
13163     auto
13164 #else
13165     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
13166 #endif
reflectVULKAN_HPP_NAMESPACE::PipelinePoolSize13167       reflect() const VULKAN_HPP_NOEXCEPT
13168     {
13169       return std::tie( sType, pNext, poolEntrySize, poolEntryCount );
13170     }
13171 #endif
13172 
13173 
13174 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
13175 auto operator<=>( PipelinePoolSize const & ) const = default;
13176 #else
operator ==VULKAN_HPP_NAMESPACE::PipelinePoolSize13177     bool operator==( PipelinePoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
13178     {
13179 #if defined( VULKAN_HPP_USE_REFLECT )
13180       return this->reflect() == rhs.reflect();
13181 #else
13182       return ( sType == rhs.sType )
13183           && ( pNext == rhs.pNext )
13184           && ( poolEntrySize == rhs.poolEntrySize )
13185           && ( poolEntryCount == rhs.poolEntryCount );
13186 #endif
13187     }
13188 
operator !=VULKAN_HPP_NAMESPACE::PipelinePoolSize13189     bool operator!=( PipelinePoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT
13190     {
13191       return !operator==( rhs );
13192     }
13193 #endif
13194 
13195     public:
13196     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelinePoolSize;
13197     const void * pNext = {};
13198     VULKAN_HPP_NAMESPACE::DeviceSize poolEntrySize = {};
13199     uint32_t poolEntryCount = {};
13200 
13201   };
13202 
13203   template <>
13204   struct CppType<StructureType, StructureType::ePipelinePoolSize>
13205   {
13206     using Type = PipelinePoolSize;
13207   };
13208 
13209   struct DeviceObjectReservationCreateInfo
13210   {
13211     using NativeType = VkDeviceObjectReservationCreateInfo;
13212 
13213     static const bool allowDuplicate = true;
13214     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceObjectReservationCreateInfo;
13215 
13216 
13217 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceObjectReservationCreateInfoVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13218 VULKAN_HPP_CONSTEXPR DeviceObjectReservationCreateInfo(uint32_t pipelineCacheCreateInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo * pPipelineCacheCreateInfos_ = {}, uint32_t pipelinePoolSizeCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelinePoolSize * pPipelinePoolSizes_ = {}, uint32_t semaphoreRequestCount_ = {}, uint32_t commandBufferRequestCount_ = {}, uint32_t fenceRequestCount_ = {}, uint32_t deviceMemoryRequestCount_ = {}, uint32_t bufferRequestCount_ = {}, uint32_t imageRequestCount_ = {}, uint32_t eventRequestCount_ = {}, uint32_t queryPoolRequestCount_ = {}, uint32_t bufferViewRequestCount_ = {}, uint32_t imageViewRequestCount_ = {}, uint32_t layeredImageViewRequestCount_ = {}, uint32_t pipelineCacheRequestCount_ = {}, uint32_t pipelineLayoutRequestCount_ = {}, uint32_t renderPassRequestCount_ = {}, uint32_t graphicsPipelineRequestCount_ = {}, uint32_t computePipelineRequestCount_ = {}, uint32_t descriptorSetLayoutRequestCount_ = {}, uint32_t samplerRequestCount_ = {}, uint32_t descriptorPoolRequestCount_ = {}, uint32_t descriptorSetRequestCount_ = {}, uint32_t framebufferRequestCount_ = {}, uint32_t commandPoolRequestCount_ = {}, uint32_t samplerYcbcrConversionRequestCount_ = {}, uint32_t surfaceRequestCount_ = {}, uint32_t swapchainRequestCount_ = {}, uint32_t displayModeRequestCount_ = {}, uint32_t subpassDescriptionRequestCount_ = {}, uint32_t attachmentDescriptionRequestCount_ = {}, uint32_t descriptorSetLayoutBindingRequestCount_ = {}, uint32_t descriptorSetLayoutBindingLimit_ = {}, uint32_t maxImageViewMipLevels_ = {}, uint32_t maxImageViewArrayLayers_ = {}, uint32_t maxLayeredImageViewMipLevels_ = {}, uint32_t maxOcclusionQueriesPerPool_ = {}, uint32_t maxPipelineStatisticsQueriesPerPool_ = {}, uint32_t maxTimestampQueriesPerPool_ = {}, uint32_t maxImmutableSamplersPerDescriptorSetLayout_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
13219     : pNext( pNext_ ), pipelineCacheCreateInfoCount( pipelineCacheCreateInfoCount_ ), pPipelineCacheCreateInfos( pPipelineCacheCreateInfos_ ), pipelinePoolSizeCount( pipelinePoolSizeCount_ ), pPipelinePoolSizes( pPipelinePoolSizes_ ), semaphoreRequestCount( semaphoreRequestCount_ ), commandBufferRequestCount( commandBufferRequestCount_ ), fenceRequestCount( fenceRequestCount_ ), deviceMemoryRequestCount( deviceMemoryRequestCount_ ), bufferRequestCount( bufferRequestCount_ ), imageRequestCount( imageRequestCount_ ), eventRequestCount( eventRequestCount_ ), queryPoolRequestCount( queryPoolRequestCount_ ), bufferViewRequestCount( bufferViewRequestCount_ ), imageViewRequestCount( imageViewRequestCount_ ), layeredImageViewRequestCount( layeredImageViewRequestCount_ ), pipelineCacheRequestCount( pipelineCacheRequestCount_ ), pipelineLayoutRequestCount( pipelineLayoutRequestCount_ ), renderPassRequestCount( renderPassRequestCount_ ), graphicsPipelineRequestCount( graphicsPipelineRequestCount_ ), computePipelineRequestCount( computePipelineRequestCount_ ), descriptorSetLayoutRequestCount( descriptorSetLayoutRequestCount_ ), samplerRequestCount( samplerRequestCount_ ), descriptorPoolRequestCount( descriptorPoolRequestCount_ ), descriptorSetRequestCount( descriptorSetRequestCount_ ), framebufferRequestCount( framebufferRequestCount_ ), commandPoolRequestCount( commandPoolRequestCount_ ), samplerYcbcrConversionRequestCount( samplerYcbcrConversionRequestCount_ ), surfaceRequestCount( surfaceRequestCount_ ), swapchainRequestCount( swapchainRequestCount_ ), displayModeRequestCount( displayModeRequestCount_ ), subpassDescriptionRequestCount( subpassDescriptionRequestCount_ ), attachmentDescriptionRequestCount( attachmentDescriptionRequestCount_ ), descriptorSetLayoutBindingRequestCount( descriptorSetLayoutBindingRequestCount_ ), descriptorSetLayoutBindingLimit( descriptorSetLayoutBindingLimit_ ), maxImageViewMipLevels( maxImageViewMipLevels_ ), maxImageViewArrayLayers( maxImageViewArrayLayers_ ), maxLayeredImageViewMipLevels( maxLayeredImageViewMipLevels_ ), maxOcclusionQueriesPerPool( maxOcclusionQueriesPerPool_ ), maxPipelineStatisticsQueriesPerPool( maxPipelineStatisticsQueriesPerPool_ ), maxTimestampQueriesPerPool( maxTimestampQueriesPerPool_ ), maxImmutableSamplersPerDescriptorSetLayout( maxImmutableSamplersPerDescriptorSetLayout_ )
13220     {}
13221 
13222     VULKAN_HPP_CONSTEXPR DeviceObjectReservationCreateInfo( DeviceObjectReservationCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13223 
DeviceObjectReservationCreateInfoVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13224     DeviceObjectReservationCreateInfo( VkDeviceObjectReservationCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13225       : DeviceObjectReservationCreateInfo( *reinterpret_cast<DeviceObjectReservationCreateInfo const *>( &rhs ) )
13226     {}
13227 
13228 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DeviceObjectReservationCreateInfoVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13229     DeviceObjectReservationCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo> const & pipelineCacheCreateInfos_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelinePoolSize> const & pipelinePoolSizes_ = {}, uint32_t semaphoreRequestCount_ = {}, uint32_t commandBufferRequestCount_ = {}, uint32_t fenceRequestCount_ = {}, uint32_t deviceMemoryRequestCount_ = {}, uint32_t bufferRequestCount_ = {}, uint32_t imageRequestCount_ = {}, uint32_t eventRequestCount_ = {}, uint32_t queryPoolRequestCount_ = {}, uint32_t bufferViewRequestCount_ = {}, uint32_t imageViewRequestCount_ = {}, uint32_t layeredImageViewRequestCount_ = {}, uint32_t pipelineCacheRequestCount_ = {}, uint32_t pipelineLayoutRequestCount_ = {}, uint32_t renderPassRequestCount_ = {}, uint32_t graphicsPipelineRequestCount_ = {}, uint32_t computePipelineRequestCount_ = {}, uint32_t descriptorSetLayoutRequestCount_ = {}, uint32_t samplerRequestCount_ = {}, uint32_t descriptorPoolRequestCount_ = {}, uint32_t descriptorSetRequestCount_ = {}, uint32_t framebufferRequestCount_ = {}, uint32_t commandPoolRequestCount_ = {}, uint32_t samplerYcbcrConversionRequestCount_ = {}, uint32_t surfaceRequestCount_ = {}, uint32_t swapchainRequestCount_ = {}, uint32_t displayModeRequestCount_ = {}, uint32_t subpassDescriptionRequestCount_ = {}, uint32_t attachmentDescriptionRequestCount_ = {}, uint32_t descriptorSetLayoutBindingRequestCount_ = {}, uint32_t descriptorSetLayoutBindingLimit_ = {}, uint32_t maxImageViewMipLevels_ = {}, uint32_t maxImageViewArrayLayers_ = {}, uint32_t maxLayeredImageViewMipLevels_ = {}, uint32_t maxOcclusionQueriesPerPool_ = {}, uint32_t maxPipelineStatisticsQueriesPerPool_ = {}, uint32_t maxTimestampQueriesPerPool_ = {}, uint32_t maxImmutableSamplersPerDescriptorSetLayout_ = {}, const void * pNext_ = nullptr )
13230     : pNext( pNext_ ), pipelineCacheCreateInfoCount( static_cast<uint32_t>( pipelineCacheCreateInfos_.size() ) ), pPipelineCacheCreateInfos( pipelineCacheCreateInfos_.data() ), pipelinePoolSizeCount( static_cast<uint32_t>( pipelinePoolSizes_.size() ) ), pPipelinePoolSizes( pipelinePoolSizes_.data() ), semaphoreRequestCount( semaphoreRequestCount_ ), commandBufferRequestCount( commandBufferRequestCount_ ), fenceRequestCount( fenceRequestCount_ ), deviceMemoryRequestCount( deviceMemoryRequestCount_ ), bufferRequestCount( bufferRequestCount_ ), imageRequestCount( imageRequestCount_ ), eventRequestCount( eventRequestCount_ ), queryPoolRequestCount( queryPoolRequestCount_ ), bufferViewRequestCount( bufferViewRequestCount_ ), imageViewRequestCount( imageViewRequestCount_ ), layeredImageViewRequestCount( layeredImageViewRequestCount_ ), pipelineCacheRequestCount( pipelineCacheRequestCount_ ), pipelineLayoutRequestCount( pipelineLayoutRequestCount_ ), renderPassRequestCount( renderPassRequestCount_ ), graphicsPipelineRequestCount( graphicsPipelineRequestCount_ ), computePipelineRequestCount( computePipelineRequestCount_ ), descriptorSetLayoutRequestCount( descriptorSetLayoutRequestCount_ ), samplerRequestCount( samplerRequestCount_ ), descriptorPoolRequestCount( descriptorPoolRequestCount_ ), descriptorSetRequestCount( descriptorSetRequestCount_ ), framebufferRequestCount( framebufferRequestCount_ ), commandPoolRequestCount( commandPoolRequestCount_ ), samplerYcbcrConversionRequestCount( samplerYcbcrConversionRequestCount_ ), surfaceRequestCount( surfaceRequestCount_ ), swapchainRequestCount( swapchainRequestCount_ ), displayModeRequestCount( displayModeRequestCount_ ), subpassDescriptionRequestCount( subpassDescriptionRequestCount_ ), attachmentDescriptionRequestCount( attachmentDescriptionRequestCount_ ), descriptorSetLayoutBindingRequestCount( descriptorSetLayoutBindingRequestCount_ ), descriptorSetLayoutBindingLimit( descriptorSetLayoutBindingLimit_ ), maxImageViewMipLevels( maxImageViewMipLevels_ ), maxImageViewArrayLayers( maxImageViewArrayLayers_ ), maxLayeredImageViewMipLevels( maxLayeredImageViewMipLevels_ ), maxOcclusionQueriesPerPool( maxOcclusionQueriesPerPool_ ), maxPipelineStatisticsQueriesPerPool( maxPipelineStatisticsQueriesPerPool_ ), maxTimestampQueriesPerPool( maxTimestampQueriesPerPool_ ), maxImmutableSamplersPerDescriptorSetLayout( maxImmutableSamplersPerDescriptorSetLayout_ )
13231     {}
13232 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
13233 
13234 
13235     DeviceObjectReservationCreateInfo & operator=( DeviceObjectReservationCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13236 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13237 
operator =VULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13238     DeviceObjectReservationCreateInfo & operator=( VkDeviceObjectReservationCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13239     {
13240       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo const *>( &rhs );
13241       return *this;
13242     }
13243 
13244 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13245     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13246     {
13247       pNext = pNext_;
13248       return *this;
13249     }
13250 
setPipelineCacheCreateInfoCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13251     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setPipelineCacheCreateInfoCount( uint32_t pipelineCacheCreateInfoCount_ ) VULKAN_HPP_NOEXCEPT
13252     {
13253       pipelineCacheCreateInfoCount = pipelineCacheCreateInfoCount_;
13254       return *this;
13255     }
13256 
setPPipelineCacheCreateInfosVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13257     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setPPipelineCacheCreateInfos( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo * pPipelineCacheCreateInfos_ ) VULKAN_HPP_NOEXCEPT
13258     {
13259       pPipelineCacheCreateInfos = pPipelineCacheCreateInfos_;
13260       return *this;
13261     }
13262 
13263 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineCacheCreateInfosVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13264     DeviceObjectReservationCreateInfo & setPipelineCacheCreateInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo> const & pipelineCacheCreateInfos_ ) VULKAN_HPP_NOEXCEPT
13265     {
13266       pipelineCacheCreateInfoCount = static_cast<uint32_t>( pipelineCacheCreateInfos_.size() );
13267       pPipelineCacheCreateInfos = pipelineCacheCreateInfos_.data();
13268       return *this;
13269     }
13270 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
13271 
setPipelinePoolSizeCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13272     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setPipelinePoolSizeCount( uint32_t pipelinePoolSizeCount_ ) VULKAN_HPP_NOEXCEPT
13273     {
13274       pipelinePoolSizeCount = pipelinePoolSizeCount_;
13275       return *this;
13276     }
13277 
setPPipelinePoolSizesVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13278     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setPPipelinePoolSizes( const VULKAN_HPP_NAMESPACE::PipelinePoolSize * pPipelinePoolSizes_ ) VULKAN_HPP_NOEXCEPT
13279     {
13280       pPipelinePoolSizes = pPipelinePoolSizes_;
13281       return *this;
13282     }
13283 
13284 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelinePoolSizesVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13285     DeviceObjectReservationCreateInfo & setPipelinePoolSizes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelinePoolSize> const & pipelinePoolSizes_ ) VULKAN_HPP_NOEXCEPT
13286     {
13287       pipelinePoolSizeCount = static_cast<uint32_t>( pipelinePoolSizes_.size() );
13288       pPipelinePoolSizes = pipelinePoolSizes_.data();
13289       return *this;
13290     }
13291 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
13292 
setSemaphoreRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13293     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setSemaphoreRequestCount( uint32_t semaphoreRequestCount_ ) VULKAN_HPP_NOEXCEPT
13294     {
13295       semaphoreRequestCount = semaphoreRequestCount_;
13296       return *this;
13297     }
13298 
setCommandBufferRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13299     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setCommandBufferRequestCount( uint32_t commandBufferRequestCount_ ) VULKAN_HPP_NOEXCEPT
13300     {
13301       commandBufferRequestCount = commandBufferRequestCount_;
13302       return *this;
13303     }
13304 
setFenceRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13305     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setFenceRequestCount( uint32_t fenceRequestCount_ ) VULKAN_HPP_NOEXCEPT
13306     {
13307       fenceRequestCount = fenceRequestCount_;
13308       return *this;
13309     }
13310 
setDeviceMemoryRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13311     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setDeviceMemoryRequestCount( uint32_t deviceMemoryRequestCount_ ) VULKAN_HPP_NOEXCEPT
13312     {
13313       deviceMemoryRequestCount = deviceMemoryRequestCount_;
13314       return *this;
13315     }
13316 
setBufferRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13317     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setBufferRequestCount( uint32_t bufferRequestCount_ ) VULKAN_HPP_NOEXCEPT
13318     {
13319       bufferRequestCount = bufferRequestCount_;
13320       return *this;
13321     }
13322 
setImageRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13323     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setImageRequestCount( uint32_t imageRequestCount_ ) VULKAN_HPP_NOEXCEPT
13324     {
13325       imageRequestCount = imageRequestCount_;
13326       return *this;
13327     }
13328 
setEventRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13329     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setEventRequestCount( uint32_t eventRequestCount_ ) VULKAN_HPP_NOEXCEPT
13330     {
13331       eventRequestCount = eventRequestCount_;
13332       return *this;
13333     }
13334 
setQueryPoolRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13335     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setQueryPoolRequestCount( uint32_t queryPoolRequestCount_ ) VULKAN_HPP_NOEXCEPT
13336     {
13337       queryPoolRequestCount = queryPoolRequestCount_;
13338       return *this;
13339     }
13340 
setBufferViewRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13341     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setBufferViewRequestCount( uint32_t bufferViewRequestCount_ ) VULKAN_HPP_NOEXCEPT
13342     {
13343       bufferViewRequestCount = bufferViewRequestCount_;
13344       return *this;
13345     }
13346 
setImageViewRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13347     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setImageViewRequestCount( uint32_t imageViewRequestCount_ ) VULKAN_HPP_NOEXCEPT
13348     {
13349       imageViewRequestCount = imageViewRequestCount_;
13350       return *this;
13351     }
13352 
setLayeredImageViewRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13353     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setLayeredImageViewRequestCount( uint32_t layeredImageViewRequestCount_ ) VULKAN_HPP_NOEXCEPT
13354     {
13355       layeredImageViewRequestCount = layeredImageViewRequestCount_;
13356       return *this;
13357     }
13358 
setPipelineCacheRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13359     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setPipelineCacheRequestCount( uint32_t pipelineCacheRequestCount_ ) VULKAN_HPP_NOEXCEPT
13360     {
13361       pipelineCacheRequestCount = pipelineCacheRequestCount_;
13362       return *this;
13363     }
13364 
setPipelineLayoutRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13365     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setPipelineLayoutRequestCount( uint32_t pipelineLayoutRequestCount_ ) VULKAN_HPP_NOEXCEPT
13366     {
13367       pipelineLayoutRequestCount = pipelineLayoutRequestCount_;
13368       return *this;
13369     }
13370 
setRenderPassRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13371     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setRenderPassRequestCount( uint32_t renderPassRequestCount_ ) VULKAN_HPP_NOEXCEPT
13372     {
13373       renderPassRequestCount = renderPassRequestCount_;
13374       return *this;
13375     }
13376 
setGraphicsPipelineRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13377     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setGraphicsPipelineRequestCount( uint32_t graphicsPipelineRequestCount_ ) VULKAN_HPP_NOEXCEPT
13378     {
13379       graphicsPipelineRequestCount = graphicsPipelineRequestCount_;
13380       return *this;
13381     }
13382 
setComputePipelineRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13383     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setComputePipelineRequestCount( uint32_t computePipelineRequestCount_ ) VULKAN_HPP_NOEXCEPT
13384     {
13385       computePipelineRequestCount = computePipelineRequestCount_;
13386       return *this;
13387     }
13388 
setDescriptorSetLayoutRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13389     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setDescriptorSetLayoutRequestCount( uint32_t descriptorSetLayoutRequestCount_ ) VULKAN_HPP_NOEXCEPT
13390     {
13391       descriptorSetLayoutRequestCount = descriptorSetLayoutRequestCount_;
13392       return *this;
13393     }
13394 
setSamplerRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13395     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setSamplerRequestCount( uint32_t samplerRequestCount_ ) VULKAN_HPP_NOEXCEPT
13396     {
13397       samplerRequestCount = samplerRequestCount_;
13398       return *this;
13399     }
13400 
setDescriptorPoolRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13401     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setDescriptorPoolRequestCount( uint32_t descriptorPoolRequestCount_ ) VULKAN_HPP_NOEXCEPT
13402     {
13403       descriptorPoolRequestCount = descriptorPoolRequestCount_;
13404       return *this;
13405     }
13406 
setDescriptorSetRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13407     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setDescriptorSetRequestCount( uint32_t descriptorSetRequestCount_ ) VULKAN_HPP_NOEXCEPT
13408     {
13409       descriptorSetRequestCount = descriptorSetRequestCount_;
13410       return *this;
13411     }
13412 
setFramebufferRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13413     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setFramebufferRequestCount( uint32_t framebufferRequestCount_ ) VULKAN_HPP_NOEXCEPT
13414     {
13415       framebufferRequestCount = framebufferRequestCount_;
13416       return *this;
13417     }
13418 
setCommandPoolRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13419     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setCommandPoolRequestCount( uint32_t commandPoolRequestCount_ ) VULKAN_HPP_NOEXCEPT
13420     {
13421       commandPoolRequestCount = commandPoolRequestCount_;
13422       return *this;
13423     }
13424 
setSamplerYcbcrConversionRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13425     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setSamplerYcbcrConversionRequestCount( uint32_t samplerYcbcrConversionRequestCount_ ) VULKAN_HPP_NOEXCEPT
13426     {
13427       samplerYcbcrConversionRequestCount = samplerYcbcrConversionRequestCount_;
13428       return *this;
13429     }
13430 
setSurfaceRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13431     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setSurfaceRequestCount( uint32_t surfaceRequestCount_ ) VULKAN_HPP_NOEXCEPT
13432     {
13433       surfaceRequestCount = surfaceRequestCount_;
13434       return *this;
13435     }
13436 
setSwapchainRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13437     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setSwapchainRequestCount( uint32_t swapchainRequestCount_ ) VULKAN_HPP_NOEXCEPT
13438     {
13439       swapchainRequestCount = swapchainRequestCount_;
13440       return *this;
13441     }
13442 
setDisplayModeRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13443     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setDisplayModeRequestCount( uint32_t displayModeRequestCount_ ) VULKAN_HPP_NOEXCEPT
13444     {
13445       displayModeRequestCount = displayModeRequestCount_;
13446       return *this;
13447     }
13448 
setSubpassDescriptionRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13449     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setSubpassDescriptionRequestCount( uint32_t subpassDescriptionRequestCount_ ) VULKAN_HPP_NOEXCEPT
13450     {
13451       subpassDescriptionRequestCount = subpassDescriptionRequestCount_;
13452       return *this;
13453     }
13454 
setAttachmentDescriptionRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13455     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setAttachmentDescriptionRequestCount( uint32_t attachmentDescriptionRequestCount_ ) VULKAN_HPP_NOEXCEPT
13456     {
13457       attachmentDescriptionRequestCount = attachmentDescriptionRequestCount_;
13458       return *this;
13459     }
13460 
setDescriptorSetLayoutBindingRequestCountVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13461     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setDescriptorSetLayoutBindingRequestCount( uint32_t descriptorSetLayoutBindingRequestCount_ ) VULKAN_HPP_NOEXCEPT
13462     {
13463       descriptorSetLayoutBindingRequestCount = descriptorSetLayoutBindingRequestCount_;
13464       return *this;
13465     }
13466 
setDescriptorSetLayoutBindingLimitVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13467     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setDescriptorSetLayoutBindingLimit( uint32_t descriptorSetLayoutBindingLimit_ ) VULKAN_HPP_NOEXCEPT
13468     {
13469       descriptorSetLayoutBindingLimit = descriptorSetLayoutBindingLimit_;
13470       return *this;
13471     }
13472 
setMaxImageViewMipLevelsVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13473     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setMaxImageViewMipLevels( uint32_t maxImageViewMipLevels_ ) VULKAN_HPP_NOEXCEPT
13474     {
13475       maxImageViewMipLevels = maxImageViewMipLevels_;
13476       return *this;
13477     }
13478 
setMaxImageViewArrayLayersVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13479     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setMaxImageViewArrayLayers( uint32_t maxImageViewArrayLayers_ ) VULKAN_HPP_NOEXCEPT
13480     {
13481       maxImageViewArrayLayers = maxImageViewArrayLayers_;
13482       return *this;
13483     }
13484 
setMaxLayeredImageViewMipLevelsVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13485     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setMaxLayeredImageViewMipLevels( uint32_t maxLayeredImageViewMipLevels_ ) VULKAN_HPP_NOEXCEPT
13486     {
13487       maxLayeredImageViewMipLevels = maxLayeredImageViewMipLevels_;
13488       return *this;
13489     }
13490 
setMaxOcclusionQueriesPerPoolVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13491     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setMaxOcclusionQueriesPerPool( uint32_t maxOcclusionQueriesPerPool_ ) VULKAN_HPP_NOEXCEPT
13492     {
13493       maxOcclusionQueriesPerPool = maxOcclusionQueriesPerPool_;
13494       return *this;
13495     }
13496 
setMaxPipelineStatisticsQueriesPerPoolVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13497     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setMaxPipelineStatisticsQueriesPerPool( uint32_t maxPipelineStatisticsQueriesPerPool_ ) VULKAN_HPP_NOEXCEPT
13498     {
13499       maxPipelineStatisticsQueriesPerPool = maxPipelineStatisticsQueriesPerPool_;
13500       return *this;
13501     }
13502 
setMaxTimestampQueriesPerPoolVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13503     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setMaxTimestampQueriesPerPool( uint32_t maxTimestampQueriesPerPool_ ) VULKAN_HPP_NOEXCEPT
13504     {
13505       maxTimestampQueriesPerPool = maxTimestampQueriesPerPool_;
13506       return *this;
13507     }
13508 
setMaxImmutableSamplersPerDescriptorSetLayoutVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13509     VULKAN_HPP_CONSTEXPR_14 DeviceObjectReservationCreateInfo & setMaxImmutableSamplersPerDescriptorSetLayout( uint32_t maxImmutableSamplersPerDescriptorSetLayout_ ) VULKAN_HPP_NOEXCEPT
13510     {
13511       maxImmutableSamplersPerDescriptorSetLayout = maxImmutableSamplersPerDescriptorSetLayout_;
13512       return *this;
13513     }
13514 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13515 
13516 
operator VkDeviceObjectReservationCreateInfo const&VULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13517     operator VkDeviceObjectReservationCreateInfo const &() const VULKAN_HPP_NOEXCEPT
13518     {
13519       return *reinterpret_cast<const VkDeviceObjectReservationCreateInfo*>( this );
13520     }
13521 
operator VkDeviceObjectReservationCreateInfo&VULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13522     operator VkDeviceObjectReservationCreateInfo &() VULKAN_HPP_NOEXCEPT
13523     {
13524       return *reinterpret_cast<VkDeviceObjectReservationCreateInfo*>( this );
13525     }
13526 
13527 #if defined( VULKAN_HPP_USE_REFLECT )
13528 #if 14 <= VULKAN_HPP_CPP_VERSION
13529     auto
13530 #else
13531     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PipelinePoolSize * const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
13532 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13533       reflect() const VULKAN_HPP_NOEXCEPT
13534     {
13535       return std::tie( sType, pNext, pipelineCacheCreateInfoCount, pPipelineCacheCreateInfos, pipelinePoolSizeCount, pPipelinePoolSizes, semaphoreRequestCount, commandBufferRequestCount, fenceRequestCount, deviceMemoryRequestCount, bufferRequestCount, imageRequestCount, eventRequestCount, queryPoolRequestCount, bufferViewRequestCount, imageViewRequestCount, layeredImageViewRequestCount, pipelineCacheRequestCount, pipelineLayoutRequestCount, renderPassRequestCount, graphicsPipelineRequestCount, computePipelineRequestCount, descriptorSetLayoutRequestCount, samplerRequestCount, descriptorPoolRequestCount, descriptorSetRequestCount, framebufferRequestCount, commandPoolRequestCount, samplerYcbcrConversionRequestCount, surfaceRequestCount, swapchainRequestCount, displayModeRequestCount, subpassDescriptionRequestCount, attachmentDescriptionRequestCount, descriptorSetLayoutBindingRequestCount, descriptorSetLayoutBindingLimit, maxImageViewMipLevels, maxImageViewArrayLayers, maxLayeredImageViewMipLevels, maxOcclusionQueriesPerPool, maxPipelineStatisticsQueriesPerPool, maxTimestampQueriesPerPool, maxImmutableSamplersPerDescriptorSetLayout );
13536     }
13537 #endif
13538 
13539 
13540 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
13541 auto operator<=>( DeviceObjectReservationCreateInfo const & ) const = default;
13542 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13543     bool operator==( DeviceObjectReservationCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13544     {
13545 #if defined( VULKAN_HPP_USE_REFLECT )
13546       return this->reflect() == rhs.reflect();
13547 #else
13548       return ( sType == rhs.sType )
13549           && ( pNext == rhs.pNext )
13550           && ( pipelineCacheCreateInfoCount == rhs.pipelineCacheCreateInfoCount )
13551           && ( pPipelineCacheCreateInfos == rhs.pPipelineCacheCreateInfos )
13552           && ( pipelinePoolSizeCount == rhs.pipelinePoolSizeCount )
13553           && ( pPipelinePoolSizes == rhs.pPipelinePoolSizes )
13554           && ( semaphoreRequestCount == rhs.semaphoreRequestCount )
13555           && ( commandBufferRequestCount == rhs.commandBufferRequestCount )
13556           && ( fenceRequestCount == rhs.fenceRequestCount )
13557           && ( deviceMemoryRequestCount == rhs.deviceMemoryRequestCount )
13558           && ( bufferRequestCount == rhs.bufferRequestCount )
13559           && ( imageRequestCount == rhs.imageRequestCount )
13560           && ( eventRequestCount == rhs.eventRequestCount )
13561           && ( queryPoolRequestCount == rhs.queryPoolRequestCount )
13562           && ( bufferViewRequestCount == rhs.bufferViewRequestCount )
13563           && ( imageViewRequestCount == rhs.imageViewRequestCount )
13564           && ( layeredImageViewRequestCount == rhs.layeredImageViewRequestCount )
13565           && ( pipelineCacheRequestCount == rhs.pipelineCacheRequestCount )
13566           && ( pipelineLayoutRequestCount == rhs.pipelineLayoutRequestCount )
13567           && ( renderPassRequestCount == rhs.renderPassRequestCount )
13568           && ( graphicsPipelineRequestCount == rhs.graphicsPipelineRequestCount )
13569           && ( computePipelineRequestCount == rhs.computePipelineRequestCount )
13570           && ( descriptorSetLayoutRequestCount == rhs.descriptorSetLayoutRequestCount )
13571           && ( samplerRequestCount == rhs.samplerRequestCount )
13572           && ( descriptorPoolRequestCount == rhs.descriptorPoolRequestCount )
13573           && ( descriptorSetRequestCount == rhs.descriptorSetRequestCount )
13574           && ( framebufferRequestCount == rhs.framebufferRequestCount )
13575           && ( commandPoolRequestCount == rhs.commandPoolRequestCount )
13576           && ( samplerYcbcrConversionRequestCount == rhs.samplerYcbcrConversionRequestCount )
13577           && ( surfaceRequestCount == rhs.surfaceRequestCount )
13578           && ( swapchainRequestCount == rhs.swapchainRequestCount )
13579           && ( displayModeRequestCount == rhs.displayModeRequestCount )
13580           && ( subpassDescriptionRequestCount == rhs.subpassDescriptionRequestCount )
13581           && ( attachmentDescriptionRequestCount == rhs.attachmentDescriptionRequestCount )
13582           && ( descriptorSetLayoutBindingRequestCount == rhs.descriptorSetLayoutBindingRequestCount )
13583           && ( descriptorSetLayoutBindingLimit == rhs.descriptorSetLayoutBindingLimit )
13584           && ( maxImageViewMipLevels == rhs.maxImageViewMipLevels )
13585           && ( maxImageViewArrayLayers == rhs.maxImageViewArrayLayers )
13586           && ( maxLayeredImageViewMipLevels == rhs.maxLayeredImageViewMipLevels )
13587           && ( maxOcclusionQueriesPerPool == rhs.maxOcclusionQueriesPerPool )
13588           && ( maxPipelineStatisticsQueriesPerPool == rhs.maxPipelineStatisticsQueriesPerPool )
13589           && ( maxTimestampQueriesPerPool == rhs.maxTimestampQueriesPerPool )
13590           && ( maxImmutableSamplersPerDescriptorSetLayout == rhs.maxImmutableSamplersPerDescriptorSetLayout );
13591 #endif
13592     }
13593 
operator !=VULKAN_HPP_NAMESPACE::DeviceObjectReservationCreateInfo13594     bool operator!=( DeviceObjectReservationCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13595     {
13596       return !operator==( rhs );
13597     }
13598 #endif
13599 
13600     public:
13601     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceObjectReservationCreateInfo;
13602     const void * pNext = {};
13603     uint32_t pipelineCacheCreateInfoCount = {};
13604     const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo * pPipelineCacheCreateInfos = {};
13605     uint32_t pipelinePoolSizeCount = {};
13606     const VULKAN_HPP_NAMESPACE::PipelinePoolSize * pPipelinePoolSizes = {};
13607     uint32_t semaphoreRequestCount = {};
13608     uint32_t commandBufferRequestCount = {};
13609     uint32_t fenceRequestCount = {};
13610     uint32_t deviceMemoryRequestCount = {};
13611     uint32_t bufferRequestCount = {};
13612     uint32_t imageRequestCount = {};
13613     uint32_t eventRequestCount = {};
13614     uint32_t queryPoolRequestCount = {};
13615     uint32_t bufferViewRequestCount = {};
13616     uint32_t imageViewRequestCount = {};
13617     uint32_t layeredImageViewRequestCount = {};
13618     uint32_t pipelineCacheRequestCount = {};
13619     uint32_t pipelineLayoutRequestCount = {};
13620     uint32_t renderPassRequestCount = {};
13621     uint32_t graphicsPipelineRequestCount = {};
13622     uint32_t computePipelineRequestCount = {};
13623     uint32_t descriptorSetLayoutRequestCount = {};
13624     uint32_t samplerRequestCount = {};
13625     uint32_t descriptorPoolRequestCount = {};
13626     uint32_t descriptorSetRequestCount = {};
13627     uint32_t framebufferRequestCount = {};
13628     uint32_t commandPoolRequestCount = {};
13629     uint32_t samplerYcbcrConversionRequestCount = {};
13630     uint32_t surfaceRequestCount = {};
13631     uint32_t swapchainRequestCount = {};
13632     uint32_t displayModeRequestCount = {};
13633     uint32_t subpassDescriptionRequestCount = {};
13634     uint32_t attachmentDescriptionRequestCount = {};
13635     uint32_t descriptorSetLayoutBindingRequestCount = {};
13636     uint32_t descriptorSetLayoutBindingLimit = {};
13637     uint32_t maxImageViewMipLevels = {};
13638     uint32_t maxImageViewArrayLayers = {};
13639     uint32_t maxLayeredImageViewMipLevels = {};
13640     uint32_t maxOcclusionQueriesPerPool = {};
13641     uint32_t maxPipelineStatisticsQueriesPerPool = {};
13642     uint32_t maxTimestampQueriesPerPool = {};
13643     uint32_t maxImmutableSamplersPerDescriptorSetLayout = {};
13644 
13645   };
13646 
13647   template <>
13648   struct CppType<StructureType, StructureType::eDeviceObjectReservationCreateInfo>
13649   {
13650     using Type = DeviceObjectReservationCreateInfo;
13651   };
13652 
13653   struct DevicePrivateDataCreateInfo
13654   {
13655     using NativeType = VkDevicePrivateDataCreateInfo;
13656 
13657     static const bool allowDuplicate = true;
13658     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDevicePrivateDataCreateInfo;
13659 
13660 
13661 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DevicePrivateDataCreateInfoVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13662 VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo(uint32_t privateDataSlotRequestCount_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
13663     : pNext( pNext_ ), privateDataSlotRequestCount( privateDataSlotRequestCount_ )
13664     {}
13665 
13666     VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13667 
DevicePrivateDataCreateInfoVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13668     DevicePrivateDataCreateInfo( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13669       : DevicePrivateDataCreateInfo( *reinterpret_cast<DevicePrivateDataCreateInfo const *>( &rhs ) )
13670     {}
13671 
13672 
13673     DevicePrivateDataCreateInfo & operator=( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13674 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13675 
operator =VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13676     DevicePrivateDataCreateInfo & operator=( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
13677     {
13678       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo const *>( &rhs );
13679       return *this;
13680     }
13681 
13682 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13683     VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13684     {
13685       pNext = pNext_;
13686       return *this;
13687     }
13688 
setPrivateDataSlotRequestCountVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13689     VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPrivateDataSlotRequestCount( uint32_t privateDataSlotRequestCount_ ) VULKAN_HPP_NOEXCEPT
13690     {
13691       privateDataSlotRequestCount = privateDataSlotRequestCount_;
13692       return *this;
13693     }
13694 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13695 
13696 
operator VkDevicePrivateDataCreateInfo const&VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13697     operator VkDevicePrivateDataCreateInfo const &() const VULKAN_HPP_NOEXCEPT
13698     {
13699       return *reinterpret_cast<const VkDevicePrivateDataCreateInfo*>( this );
13700     }
13701 
operator VkDevicePrivateDataCreateInfo&VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13702     operator VkDevicePrivateDataCreateInfo &() VULKAN_HPP_NOEXCEPT
13703     {
13704       return *reinterpret_cast<VkDevicePrivateDataCreateInfo*>( this );
13705     }
13706 
13707 #if defined( VULKAN_HPP_USE_REFLECT )
13708 #if 14 <= VULKAN_HPP_CPP_VERSION
13709     auto
13710 #else
13711     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
13712 #endif
reflectVULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13713       reflect() const VULKAN_HPP_NOEXCEPT
13714     {
13715       return std::tie( sType, pNext, privateDataSlotRequestCount );
13716     }
13717 #endif
13718 
13719 
13720 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
13721 auto operator<=>( DevicePrivateDataCreateInfo const & ) const = default;
13722 #else
operator ==VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13723     bool operator==( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13724     {
13725 #if defined( VULKAN_HPP_USE_REFLECT )
13726       return this->reflect() == rhs.reflect();
13727 #else
13728       return ( sType == rhs.sType )
13729           && ( pNext == rhs.pNext )
13730           && ( privateDataSlotRequestCount == rhs.privateDataSlotRequestCount );
13731 #endif
13732     }
13733 
operator !=VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo13734     bool operator!=( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
13735     {
13736       return !operator==( rhs );
13737     }
13738 #endif
13739 
13740     public:
13741     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDevicePrivateDataCreateInfo;
13742     const void * pNext = {};
13743     uint32_t privateDataSlotRequestCount = {};
13744 
13745   };
13746 
13747   template <>
13748   struct CppType<StructureType, StructureType::eDevicePrivateDataCreateInfo>
13749   {
13750     using Type = DevicePrivateDataCreateInfo;
13751   };
13752   using DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo;
13753 
13754   struct DeviceQueueInfo2
13755   {
13756     using NativeType = VkDeviceQueueInfo2;
13757 
13758     static const bool allowDuplicate = false;
13759     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueInfo2;
13760 
13761 
13762 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceQueueInfo2VULKAN_HPP_NAMESPACE::DeviceQueueInfo213763 VULKAN_HPP_CONSTEXPR DeviceQueueInfo2(VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ = {}, uint32_t queueFamilyIndex_ = {}, uint32_t queueIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
13764     : pNext( pNext_ ), flags( flags_ ), queueFamilyIndex( queueFamilyIndex_ ), queueIndex( queueIndex_ )
13765     {}
13766 
13767     VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13768 
DeviceQueueInfo2VULKAN_HPP_NAMESPACE::DeviceQueueInfo213769     DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
13770       : DeviceQueueInfo2( *reinterpret_cast<DeviceQueueInfo2 const *>( &rhs ) )
13771     {}
13772 
13773 
13774     DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13775 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13776 
operator =VULKAN_HPP_NAMESPACE::DeviceQueueInfo213777     DeviceQueueInfo2 & operator=( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
13778     {
13779       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const *>( &rhs );
13780       return *this;
13781     }
13782 
13783 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceQueueInfo213784     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13785     {
13786       pNext = pNext_;
13787       return *this;
13788     }
13789 
setFlagsVULKAN_HPP_NAMESPACE::DeviceQueueInfo213790     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
13791     {
13792       flags = flags_;
13793       return *this;
13794     }
13795 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::DeviceQueueInfo213796     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
13797     {
13798       queueFamilyIndex = queueFamilyIndex_;
13799       return *this;
13800     }
13801 
setQueueIndexVULKAN_HPP_NAMESPACE::DeviceQueueInfo213802     VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueIndex( uint32_t queueIndex_ ) VULKAN_HPP_NOEXCEPT
13803     {
13804       queueIndex = queueIndex_;
13805       return *this;
13806     }
13807 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13808 
13809 
operator VkDeviceQueueInfo2 const&VULKAN_HPP_NAMESPACE::DeviceQueueInfo213810     operator VkDeviceQueueInfo2 const &() const VULKAN_HPP_NOEXCEPT
13811     {
13812       return *reinterpret_cast<const VkDeviceQueueInfo2*>( this );
13813     }
13814 
operator VkDeviceQueueInfo2&VULKAN_HPP_NAMESPACE::DeviceQueueInfo213815     operator VkDeviceQueueInfo2 &() VULKAN_HPP_NOEXCEPT
13816     {
13817       return *reinterpret_cast<VkDeviceQueueInfo2*>( this );
13818     }
13819 
13820 #if defined( VULKAN_HPP_USE_REFLECT )
13821 #if 14 <= VULKAN_HPP_CPP_VERSION
13822     auto
13823 #else
13824     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags const &, uint32_t const &, uint32_t const &>
13825 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceQueueInfo213826       reflect() const VULKAN_HPP_NOEXCEPT
13827     {
13828       return std::tie( sType, pNext, flags, queueFamilyIndex, queueIndex );
13829     }
13830 #endif
13831 
13832 
13833 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
13834 auto operator<=>( DeviceQueueInfo2 const & ) const = default;
13835 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceQueueInfo213836     bool operator==( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
13837     {
13838 #if defined( VULKAN_HPP_USE_REFLECT )
13839       return this->reflect() == rhs.reflect();
13840 #else
13841       return ( sType == rhs.sType )
13842           && ( pNext == rhs.pNext )
13843           && ( flags == rhs.flags )
13844           && ( queueFamilyIndex == rhs.queueFamilyIndex )
13845           && ( queueIndex == rhs.queueIndex );
13846 #endif
13847     }
13848 
operator !=VULKAN_HPP_NAMESPACE::DeviceQueueInfo213849     bool operator!=( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
13850     {
13851       return !operator==( rhs );
13852     }
13853 #endif
13854 
13855     public:
13856     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueInfo2;
13857     const void * pNext = {};
13858     VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags = {};
13859     uint32_t queueFamilyIndex = {};
13860     uint32_t queueIndex = {};
13861 
13862   };
13863 
13864   template <>
13865   struct CppType<StructureType, StructureType::eDeviceQueueInfo2>
13866   {
13867     using Type = DeviceQueueInfo2;
13868   };
13869 
13870 #if defined( VK_USE_PLATFORM_SCI )
13871   struct DeviceSemaphoreSciSyncPoolReservationCreateInfoNV
13872   {
13873     using NativeType = VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV;
13874 
13875     static const bool allowDuplicate = true;
13876     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceSemaphoreSciSyncPoolReservationCreateInfoNV;
13877 
13878 
13879 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DeviceSemaphoreSciSyncPoolReservationCreateInfoNVVULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13880 VULKAN_HPP_CONSTEXPR DeviceSemaphoreSciSyncPoolReservationCreateInfoNV(uint32_t semaphoreSciSyncPoolRequestCount_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
13881     : pNext( pNext_ ), semaphoreSciSyncPoolRequestCount( semaphoreSciSyncPoolRequestCount_ )
13882     {}
13883 
13884     VULKAN_HPP_CONSTEXPR DeviceSemaphoreSciSyncPoolReservationCreateInfoNV( DeviceSemaphoreSciSyncPoolReservationCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13885 
DeviceSemaphoreSciSyncPoolReservationCreateInfoNVVULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13886     DeviceSemaphoreSciSyncPoolReservationCreateInfoNV( VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
13887       : DeviceSemaphoreSciSyncPoolReservationCreateInfoNV( *reinterpret_cast<DeviceSemaphoreSciSyncPoolReservationCreateInfoNV const *>( &rhs ) )
13888     {}
13889 
13890 
13891     DeviceSemaphoreSciSyncPoolReservationCreateInfoNV & operator=( DeviceSemaphoreSciSyncPoolReservationCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13892 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13893 
operator =VULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13894     DeviceSemaphoreSciSyncPoolReservationCreateInfoNV & operator=( VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
13895     {
13896       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV const *>( &rhs );
13897       return *this;
13898     }
13899 
13900 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13901     VULKAN_HPP_CONSTEXPR_14 DeviceSemaphoreSciSyncPoolReservationCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
13902     {
13903       pNext = pNext_;
13904       return *this;
13905     }
13906 
setSemaphoreSciSyncPoolRequestCountVULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13907     VULKAN_HPP_CONSTEXPR_14 DeviceSemaphoreSciSyncPoolReservationCreateInfoNV & setSemaphoreSciSyncPoolRequestCount( uint32_t semaphoreSciSyncPoolRequestCount_ ) VULKAN_HPP_NOEXCEPT
13908     {
13909       semaphoreSciSyncPoolRequestCount = semaphoreSciSyncPoolRequestCount_;
13910       return *this;
13911     }
13912 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
13913 
13914 
operator VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV const&VULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13915     operator VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
13916     {
13917       return *reinterpret_cast<const VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV*>( this );
13918     }
13919 
operator VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV&VULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13920     operator VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV &() VULKAN_HPP_NOEXCEPT
13921     {
13922       return *reinterpret_cast<VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV*>( this );
13923     }
13924 
13925 #if defined( VULKAN_HPP_USE_REFLECT )
13926 #if 14 <= VULKAN_HPP_CPP_VERSION
13927     auto
13928 #else
13929     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
13930 #endif
reflectVULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13931       reflect() const VULKAN_HPP_NOEXCEPT
13932     {
13933       return std::tie( sType, pNext, semaphoreSciSyncPoolRequestCount );
13934     }
13935 #endif
13936 
13937 
13938 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
13939 auto operator<=>( DeviceSemaphoreSciSyncPoolReservationCreateInfoNV const & ) const = default;
13940 #else
operator ==VULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13941     bool operator==( DeviceSemaphoreSciSyncPoolReservationCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13942     {
13943 #if defined( VULKAN_HPP_USE_REFLECT )
13944       return this->reflect() == rhs.reflect();
13945 #else
13946       return ( sType == rhs.sType )
13947           && ( pNext == rhs.pNext )
13948           && ( semaphoreSciSyncPoolRequestCount == rhs.semaphoreSciSyncPoolRequestCount );
13949 #endif
13950     }
13951 
operator !=VULKAN_HPP_NAMESPACE::DeviceSemaphoreSciSyncPoolReservationCreateInfoNV13952     bool operator!=( DeviceSemaphoreSciSyncPoolReservationCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
13953     {
13954       return !operator==( rhs );
13955     }
13956 #endif
13957 
13958     public:
13959     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceSemaphoreSciSyncPoolReservationCreateInfoNV;
13960     const void * pNext = {};
13961     uint32_t semaphoreSciSyncPoolRequestCount = {};
13962 
13963   };
13964 
13965   template <>
13966   struct CppType<StructureType, StructureType::eDeviceSemaphoreSciSyncPoolReservationCreateInfoNV>
13967   {
13968     using Type = DeviceSemaphoreSciSyncPoolReservationCreateInfoNV;
13969   };
13970 #endif /*VK_USE_PLATFORM_SCI*/
13971 
13972   struct DispatchIndirectCommand
13973   {
13974     using NativeType = VkDispatchIndirectCommand;
13975 
13976 
13977 
13978 
13979 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DispatchIndirectCommandVULKAN_HPP_NAMESPACE::DispatchIndirectCommand13980 VULKAN_HPP_CONSTEXPR DispatchIndirectCommand(uint32_t x_ = {}, uint32_t y_ = {}, uint32_t z_ = {}) VULKAN_HPP_NOEXCEPT
13981     : x( x_ ), y( y_ ), z( z_ )
13982     {}
13983 
13984     VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13985 
DispatchIndirectCommandVULKAN_HPP_NAMESPACE::DispatchIndirectCommand13986     DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
13987       : DispatchIndirectCommand( *reinterpret_cast<DispatchIndirectCommand const *>( &rhs ) )
13988     {}
13989 
13990 
13991     DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
13992 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
13993 
operator =VULKAN_HPP_NAMESPACE::DispatchIndirectCommand13994     DispatchIndirectCommand & operator=( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
13995     {
13996       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DispatchIndirectCommand const *>( &rhs );
13997       return *this;
13998     }
13999 
14000 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::DispatchIndirectCommand14001     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setX( uint32_t x_ ) VULKAN_HPP_NOEXCEPT
14002     {
14003       x = x_;
14004       return *this;
14005     }
14006 
setYVULKAN_HPP_NAMESPACE::DispatchIndirectCommand14007     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setY( uint32_t y_ ) VULKAN_HPP_NOEXCEPT
14008     {
14009       y = y_;
14010       return *this;
14011     }
14012 
setZVULKAN_HPP_NAMESPACE::DispatchIndirectCommand14013     VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setZ( uint32_t z_ ) VULKAN_HPP_NOEXCEPT
14014     {
14015       z = z_;
14016       return *this;
14017     }
14018 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14019 
14020 
operator VkDispatchIndirectCommand const&VULKAN_HPP_NAMESPACE::DispatchIndirectCommand14021     operator VkDispatchIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
14022     {
14023       return *reinterpret_cast<const VkDispatchIndirectCommand*>( this );
14024     }
14025 
operator VkDispatchIndirectCommand&VULKAN_HPP_NAMESPACE::DispatchIndirectCommand14026     operator VkDispatchIndirectCommand &() VULKAN_HPP_NOEXCEPT
14027     {
14028       return *reinterpret_cast<VkDispatchIndirectCommand*>( this );
14029     }
14030 
14031 #if defined( VULKAN_HPP_USE_REFLECT )
14032 #if 14 <= VULKAN_HPP_CPP_VERSION
14033     auto
14034 #else
14035     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &>
14036 #endif
reflectVULKAN_HPP_NAMESPACE::DispatchIndirectCommand14037       reflect() const VULKAN_HPP_NOEXCEPT
14038     {
14039       return std::tie( x, y, z );
14040     }
14041 #endif
14042 
14043 
14044 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14045 auto operator<=>( DispatchIndirectCommand const & ) const = default;
14046 #else
operator ==VULKAN_HPP_NAMESPACE::DispatchIndirectCommand14047     bool operator==( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
14048     {
14049 #if defined( VULKAN_HPP_USE_REFLECT )
14050       return this->reflect() == rhs.reflect();
14051 #else
14052       return ( x == rhs.x )
14053           && ( y == rhs.y )
14054           && ( z == rhs.z );
14055 #endif
14056     }
14057 
operator !=VULKAN_HPP_NAMESPACE::DispatchIndirectCommand14058     bool operator!=( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
14059     {
14060       return !operator==( rhs );
14061     }
14062 #endif
14063 
14064     public:
14065     uint32_t x = {};
14066     uint32_t y = {};
14067     uint32_t z = {};
14068 
14069   };
14070 
14071   struct DisplayEventInfoEXT
14072   {
14073     using NativeType = VkDisplayEventInfoEXT;
14074 
14075     static const bool allowDuplicate = false;
14076     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayEventInfoEXT;
14077 
14078 
14079 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayEventInfoEXTVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14080 VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT(VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
14081     : pNext( pNext_ ), displayEvent( displayEvent_ )
14082     {}
14083 
14084     VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14085 
DisplayEventInfoEXTVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14086     DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14087       : DisplayEventInfoEXT( *reinterpret_cast<DisplayEventInfoEXT const *>( &rhs ) )
14088     {}
14089 
14090 
14091     DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14092 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14093 
operator =VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14094     DisplayEventInfoEXT & operator=( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14095     {
14096       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const *>( &rhs );
14097       return *this;
14098     }
14099 
14100 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14101     VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14102     {
14103       pNext = pNext_;
14104       return *this;
14105     }
14106 
setDisplayEventVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14107     VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setDisplayEvent( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ ) VULKAN_HPP_NOEXCEPT
14108     {
14109       displayEvent = displayEvent_;
14110       return *this;
14111     }
14112 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14113 
14114 
operator VkDisplayEventInfoEXT const&VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14115     operator VkDisplayEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT
14116     {
14117       return *reinterpret_cast<const VkDisplayEventInfoEXT*>( this );
14118     }
14119 
operator VkDisplayEventInfoEXT&VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14120     operator VkDisplayEventInfoEXT &() VULKAN_HPP_NOEXCEPT
14121     {
14122       return *reinterpret_cast<VkDisplayEventInfoEXT*>( this );
14123     }
14124 
14125 #if defined( VULKAN_HPP_USE_REFLECT )
14126 #if 14 <= VULKAN_HPP_CPP_VERSION
14127     auto
14128 #else
14129     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT const &>
14130 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14131       reflect() const VULKAN_HPP_NOEXCEPT
14132     {
14133       return std::tie( sType, pNext, displayEvent );
14134     }
14135 #endif
14136 
14137 
14138 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14139 auto operator<=>( DisplayEventInfoEXT const & ) const = default;
14140 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14141     bool operator==( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14142     {
14143 #if defined( VULKAN_HPP_USE_REFLECT )
14144       return this->reflect() == rhs.reflect();
14145 #else
14146       return ( sType == rhs.sType )
14147           && ( pNext == rhs.pNext )
14148           && ( displayEvent == rhs.displayEvent );
14149 #endif
14150     }
14151 
operator !=VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT14152     bool operator!=( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
14153     {
14154       return !operator==( rhs );
14155     }
14156 #endif
14157 
14158     public:
14159     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayEventInfoEXT;
14160     const void * pNext = {};
14161     VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut;
14162 
14163   };
14164 
14165   template <>
14166   struct CppType<StructureType, StructureType::eDisplayEventInfoEXT>
14167   {
14168     using Type = DisplayEventInfoEXT;
14169   };
14170 
14171   struct DisplayModeParametersKHR
14172   {
14173     using NativeType = VkDisplayModeParametersKHR;
14174 
14175 
14176 
14177 
14178 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeParametersKHRVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14179 VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR(VULKAN_HPP_NAMESPACE::Extent2D visibleRegion_ = {}, uint32_t refreshRate_ = {}) VULKAN_HPP_NOEXCEPT
14180     : visibleRegion( visibleRegion_ ), refreshRate( refreshRate_ )
14181     {}
14182 
14183     VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14184 
DisplayModeParametersKHRVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14185     DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14186       : DisplayModeParametersKHR( *reinterpret_cast<DisplayModeParametersKHR const *>( &rhs ) )
14187     {}
14188 
14189 
14190     DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14191 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14192 
operator =VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14193     DisplayModeParametersKHR & operator=( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14194     {
14195       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const *>( &rhs );
14196       return *this;
14197     }
14198 
14199 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setVisibleRegionVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14200     VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setVisibleRegion( VULKAN_HPP_NAMESPACE::Extent2D const & visibleRegion_ ) VULKAN_HPP_NOEXCEPT
14201     {
14202       visibleRegion = visibleRegion_;
14203       return *this;
14204     }
14205 
setRefreshRateVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14206     VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setRefreshRate( uint32_t refreshRate_ ) VULKAN_HPP_NOEXCEPT
14207     {
14208       refreshRate = refreshRate_;
14209       return *this;
14210     }
14211 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14212 
14213 
operator VkDisplayModeParametersKHR const&VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14214     operator VkDisplayModeParametersKHR const &() const VULKAN_HPP_NOEXCEPT
14215     {
14216       return *reinterpret_cast<const VkDisplayModeParametersKHR*>( this );
14217     }
14218 
operator VkDisplayModeParametersKHR&VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14219     operator VkDisplayModeParametersKHR &() VULKAN_HPP_NOEXCEPT
14220     {
14221       return *reinterpret_cast<VkDisplayModeParametersKHR*>( this );
14222     }
14223 
14224 #if defined( VULKAN_HPP_USE_REFLECT )
14225 #if 14 <= VULKAN_HPP_CPP_VERSION
14226     auto
14227 #else
14228     std::tuple<VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
14229 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14230       reflect() const VULKAN_HPP_NOEXCEPT
14231     {
14232       return std::tie( visibleRegion, refreshRate );
14233     }
14234 #endif
14235 
14236 
14237 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14238 auto operator<=>( DisplayModeParametersKHR const & ) const = default;
14239 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14240     bool operator==( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14241     {
14242 #if defined( VULKAN_HPP_USE_REFLECT )
14243       return this->reflect() == rhs.reflect();
14244 #else
14245       return ( visibleRegion == rhs.visibleRegion )
14246           && ( refreshRate == rhs.refreshRate );
14247 #endif
14248     }
14249 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR14250     bool operator!=( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14251     {
14252       return !operator==( rhs );
14253     }
14254 #endif
14255 
14256     public:
14257     VULKAN_HPP_NAMESPACE::Extent2D visibleRegion = {};
14258     uint32_t refreshRate = {};
14259 
14260   };
14261 
14262   struct DisplayModeCreateInfoKHR
14263   {
14264     using NativeType = VkDisplayModeCreateInfoKHR;
14265 
14266     static const bool allowDuplicate = false;
14267     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeCreateInfoKHR;
14268 
14269 
14270 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14271 VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR(VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ = {}, VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
14272     : pNext( pNext_ ), flags( flags_ ), parameters( parameters_ )
14273     {}
14274 
14275     VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14276 
DisplayModeCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14277     DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14278       : DisplayModeCreateInfoKHR( *reinterpret_cast<DisplayModeCreateInfoKHR const *>( &rhs ) )
14279     {}
14280 
14281 
14282     DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14283 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14284 
operator =VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14285     DisplayModeCreateInfoKHR & operator=( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14286     {
14287       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const *>( &rhs );
14288       return *this;
14289     }
14290 
14291 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14292     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14293     {
14294       pNext = pNext_;
14295       return *this;
14296     }
14297 
setFlagsVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14298     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
14299     {
14300       flags = flags_;
14301       return *this;
14302     }
14303 
setParametersVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14304     VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setParameters( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & parameters_ ) VULKAN_HPP_NOEXCEPT
14305     {
14306       parameters = parameters_;
14307       return *this;
14308     }
14309 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14310 
14311 
operator VkDisplayModeCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14312     operator VkDisplayModeCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
14313     {
14314       return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>( this );
14315     }
14316 
operator VkDisplayModeCreateInfoKHR&VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14317     operator VkDisplayModeCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
14318     {
14319       return *reinterpret_cast<VkDisplayModeCreateInfoKHR*>( this );
14320     }
14321 
14322 #if defined( VULKAN_HPP_USE_REFLECT )
14323 #if 14 <= VULKAN_HPP_CPP_VERSION
14324     auto
14325 #else
14326     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR const &, VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const &>
14327 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14328       reflect() const VULKAN_HPP_NOEXCEPT
14329     {
14330       return std::tie( sType, pNext, flags, parameters );
14331     }
14332 #endif
14333 
14334 
14335 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14336 auto operator<=>( DisplayModeCreateInfoKHR const & ) const = default;
14337 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14338     bool operator==( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14339     {
14340 #if defined( VULKAN_HPP_USE_REFLECT )
14341       return this->reflect() == rhs.reflect();
14342 #else
14343       return ( sType == rhs.sType )
14344           && ( pNext == rhs.pNext )
14345           && ( flags == rhs.flags )
14346           && ( parameters == rhs.parameters );
14347 #endif
14348     }
14349 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR14350     bool operator!=( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14351     {
14352       return !operator==( rhs );
14353     }
14354 #endif
14355 
14356     public:
14357     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeCreateInfoKHR;
14358     const void * pNext = {};
14359     VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags = {};
14360     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters = {};
14361 
14362   };
14363 
14364   template <>
14365   struct CppType<StructureType, StructureType::eDisplayModeCreateInfoKHR>
14366   {
14367     using Type = DisplayModeCreateInfoKHR;
14368   };
14369 
14370   struct DisplayModePropertiesKHR
14371   {
14372     using NativeType = VkDisplayModePropertiesKHR;
14373 
14374 
14375 
14376 
14377 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR14378 VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR(VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ = {}, VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters_ = {}) VULKAN_HPP_NOEXCEPT
14379     : displayMode( displayMode_ ), parameters( parameters_ )
14380     {}
14381 
14382     VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14383 
DisplayModePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR14384     DisplayModePropertiesKHR( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14385       : DisplayModePropertiesKHR( *reinterpret_cast<DisplayModePropertiesKHR const *>( &rhs ) )
14386     {}
14387 
14388 
14389     DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14390 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14391 
operator =VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR14392     DisplayModePropertiesKHR & operator=( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14393     {
14394       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const *>( &rhs );
14395       return *this;
14396     }
14397 
14398 
operator VkDisplayModePropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR14399     operator VkDisplayModePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
14400     {
14401       return *reinterpret_cast<const VkDisplayModePropertiesKHR*>( this );
14402     }
14403 
operator VkDisplayModePropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR14404     operator VkDisplayModePropertiesKHR &() VULKAN_HPP_NOEXCEPT
14405     {
14406       return *reinterpret_cast<VkDisplayModePropertiesKHR*>( this );
14407     }
14408 
14409 #if defined( VULKAN_HPP_USE_REFLECT )
14410 #if 14 <= VULKAN_HPP_CPP_VERSION
14411     auto
14412 #else
14413     std::tuple<VULKAN_HPP_NAMESPACE::DisplayModeKHR const &, VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const &>
14414 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR14415       reflect() const VULKAN_HPP_NOEXCEPT
14416     {
14417       return std::tie( displayMode, parameters );
14418     }
14419 #endif
14420 
14421 
14422 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14423 auto operator<=>( DisplayModePropertiesKHR const & ) const = default;
14424 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR14425     bool operator==( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14426     {
14427 #if defined( VULKAN_HPP_USE_REFLECT )
14428       return this->reflect() == rhs.reflect();
14429 #else
14430       return ( displayMode == rhs.displayMode )
14431           && ( parameters == rhs.parameters );
14432 #endif
14433     }
14434 
operator !=VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR14435     bool operator!=( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14436     {
14437       return !operator==( rhs );
14438     }
14439 #endif
14440 
14441     public:
14442     VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode = {};
14443     VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters = {};
14444 
14445   };
14446 
14447   struct DisplayModeProperties2KHR
14448   {
14449     using NativeType = VkDisplayModeProperties2KHR;
14450 
14451     static const bool allowDuplicate = false;
14452     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeProperties2KHR;
14453 
14454 
14455 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayModeProperties2KHRVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR14456 VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR(VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
14457     : pNext( pNext_ ), displayModeProperties( displayModeProperties_ )
14458     {}
14459 
14460     VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14461 
DisplayModeProperties2KHRVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR14462     DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
14463       : DisplayModeProperties2KHR( *reinterpret_cast<DisplayModeProperties2KHR const *>( &rhs ) )
14464     {}
14465 
14466 
14467     DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14468 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14469 
operator =VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR14470     DisplayModeProperties2KHR & operator=( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
14471     {
14472       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR const *>( &rhs );
14473       return *this;
14474     }
14475 
14476 
operator VkDisplayModeProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR14477     operator VkDisplayModeProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
14478     {
14479       return *reinterpret_cast<const VkDisplayModeProperties2KHR*>( this );
14480     }
14481 
operator VkDisplayModeProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR14482     operator VkDisplayModeProperties2KHR &() VULKAN_HPP_NOEXCEPT
14483     {
14484       return *reinterpret_cast<VkDisplayModeProperties2KHR*>( this );
14485     }
14486 
14487 #if defined( VULKAN_HPP_USE_REFLECT )
14488 #if 14 <= VULKAN_HPP_CPP_VERSION
14489     auto
14490 #else
14491     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const &>
14492 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR14493       reflect() const VULKAN_HPP_NOEXCEPT
14494     {
14495       return std::tie( sType, pNext, displayModeProperties );
14496     }
14497 #endif
14498 
14499 
14500 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14501 auto operator<=>( DisplayModeProperties2KHR const & ) const = default;
14502 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR14503     bool operator==( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14504     {
14505 #if defined( VULKAN_HPP_USE_REFLECT )
14506       return this->reflect() == rhs.reflect();
14507 #else
14508       return ( sType == rhs.sType )
14509           && ( pNext == rhs.pNext )
14510           && ( displayModeProperties == rhs.displayModeProperties );
14511 #endif
14512     }
14513 
operator !=VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR14514     bool operator!=( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14515     {
14516       return !operator==( rhs );
14517     }
14518 #endif
14519 
14520     public:
14521     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeProperties2KHR;
14522     void * pNext = {};
14523     VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties = {};
14524 
14525   };
14526 
14527   template <>
14528   struct CppType<StructureType, StructureType::eDisplayModeProperties2KHR>
14529   {
14530     using Type = DisplayModeProperties2KHR;
14531   };
14532 
14533   struct DisplayPlaneCapabilitiesKHR
14534   {
14535     using NativeType = VkDisplayPlaneCapabilitiesKHR;
14536 
14537 
14538 
14539 
14540 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneCapabilitiesKHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR14541 VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR(VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha_ = {}, VULKAN_HPP_NAMESPACE::Offset2D minSrcPosition_ = {}, VULKAN_HPP_NAMESPACE::Offset2D maxSrcPosition_ = {}, VULKAN_HPP_NAMESPACE::Extent2D minSrcExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxSrcExtent_ = {}, VULKAN_HPP_NAMESPACE::Offset2D minDstPosition_ = {}, VULKAN_HPP_NAMESPACE::Offset2D maxDstPosition_ = {}, VULKAN_HPP_NAMESPACE::Extent2D minDstExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxDstExtent_ = {}) VULKAN_HPP_NOEXCEPT
14542     : supportedAlpha( supportedAlpha_ ), minSrcPosition( minSrcPosition_ ), maxSrcPosition( maxSrcPosition_ ), minSrcExtent( minSrcExtent_ ), maxSrcExtent( maxSrcExtent_ ), minDstPosition( minDstPosition_ ), maxDstPosition( maxDstPosition_ ), minDstExtent( minDstExtent_ ), maxDstExtent( maxDstExtent_ )
14543     {}
14544 
14545     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14546 
DisplayPlaneCapabilitiesKHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR14547     DisplayPlaneCapabilitiesKHR( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14548       : DisplayPlaneCapabilitiesKHR( *reinterpret_cast<DisplayPlaneCapabilitiesKHR const *>( &rhs ) )
14549     {}
14550 
14551 
14552     DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14553 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14554 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR14555     DisplayPlaneCapabilitiesKHR & operator=( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14556     {
14557       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const *>( &rhs );
14558       return *this;
14559     }
14560 
14561 
operator VkDisplayPlaneCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR14562     operator VkDisplayPlaneCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
14563     {
14564       return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>( this );
14565     }
14566 
operator VkDisplayPlaneCapabilitiesKHR&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR14567     operator VkDisplayPlaneCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
14568     {
14569       return *reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( this );
14570     }
14571 
14572 #if defined( VULKAN_HPP_USE_REFLECT )
14573 #if 14 <= VULKAN_HPP_CPP_VERSION
14574     auto
14575 #else
14576     std::tuple<VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR const &, VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
14577 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR14578       reflect() const VULKAN_HPP_NOEXCEPT
14579     {
14580       return std::tie( supportedAlpha, minSrcPosition, maxSrcPosition, minSrcExtent, maxSrcExtent, minDstPosition, maxDstPosition, minDstExtent, maxDstExtent );
14581     }
14582 #endif
14583 
14584 
14585 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14586 auto operator<=>( DisplayPlaneCapabilitiesKHR const & ) const = default;
14587 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR14588     bool operator==( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14589     {
14590 #if defined( VULKAN_HPP_USE_REFLECT )
14591       return this->reflect() == rhs.reflect();
14592 #else
14593       return ( supportedAlpha == rhs.supportedAlpha )
14594           && ( minSrcPosition == rhs.minSrcPosition )
14595           && ( maxSrcPosition == rhs.maxSrcPosition )
14596           && ( minSrcExtent == rhs.minSrcExtent )
14597           && ( maxSrcExtent == rhs.maxSrcExtent )
14598           && ( minDstPosition == rhs.minDstPosition )
14599           && ( maxDstPosition == rhs.maxDstPosition )
14600           && ( minDstExtent == rhs.minDstExtent )
14601           && ( maxDstExtent == rhs.maxDstExtent );
14602 #endif
14603     }
14604 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR14605     bool operator!=( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14606     {
14607       return !operator==( rhs );
14608     }
14609 #endif
14610 
14611     public:
14612     VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha = {};
14613     VULKAN_HPP_NAMESPACE::Offset2D minSrcPosition = {};
14614     VULKAN_HPP_NAMESPACE::Offset2D maxSrcPosition = {};
14615     VULKAN_HPP_NAMESPACE::Extent2D minSrcExtent = {};
14616     VULKAN_HPP_NAMESPACE::Extent2D maxSrcExtent = {};
14617     VULKAN_HPP_NAMESPACE::Offset2D minDstPosition = {};
14618     VULKAN_HPP_NAMESPACE::Offset2D maxDstPosition = {};
14619     VULKAN_HPP_NAMESPACE::Extent2D minDstExtent = {};
14620     VULKAN_HPP_NAMESPACE::Extent2D maxDstExtent = {};
14621 
14622   };
14623 
14624   struct DisplayPlaneCapabilities2KHR
14625   {
14626     using NativeType = VkDisplayPlaneCapabilities2KHR;
14627 
14628     static const bool allowDuplicate = false;
14629     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneCapabilities2KHR;
14630 
14631 
14632 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneCapabilities2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR14633 VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR(VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
14634     : pNext( pNext_ ), capabilities( capabilities_ )
14635     {}
14636 
14637     VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14638 
DisplayPlaneCapabilities2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR14639     DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
14640       : DisplayPlaneCapabilities2KHR( *reinterpret_cast<DisplayPlaneCapabilities2KHR const *>( &rhs ) )
14641     {}
14642 
14643 
14644     DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14645 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14646 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR14647     DisplayPlaneCapabilities2KHR & operator=( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
14648     {
14649       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR const *>( &rhs );
14650       return *this;
14651     }
14652 
14653 
operator VkDisplayPlaneCapabilities2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR14654     operator VkDisplayPlaneCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT
14655     {
14656       return *reinterpret_cast<const VkDisplayPlaneCapabilities2KHR*>( this );
14657     }
14658 
operator VkDisplayPlaneCapabilities2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR14659     operator VkDisplayPlaneCapabilities2KHR &() VULKAN_HPP_NOEXCEPT
14660     {
14661       return *reinterpret_cast<VkDisplayPlaneCapabilities2KHR*>( this );
14662     }
14663 
14664 #if defined( VULKAN_HPP_USE_REFLECT )
14665 #if 14 <= VULKAN_HPP_CPP_VERSION
14666     auto
14667 #else
14668     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const &>
14669 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR14670       reflect() const VULKAN_HPP_NOEXCEPT
14671     {
14672       return std::tie( sType, pNext, capabilities );
14673     }
14674 #endif
14675 
14676 
14677 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14678 auto operator<=>( DisplayPlaneCapabilities2KHR const & ) const = default;
14679 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR14680     bool operator==( DisplayPlaneCapabilities2KHR 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 )
14686           && ( pNext == rhs.pNext )
14687           && ( capabilities == rhs.capabilities );
14688 #endif
14689     }
14690 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR14691     bool operator!=( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14692     {
14693       return !operator==( rhs );
14694     }
14695 #endif
14696 
14697     public:
14698     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR;
14699     void * pNext = {};
14700     VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities = {};
14701 
14702   };
14703 
14704   template <>
14705   struct CppType<StructureType, StructureType::eDisplayPlaneCapabilities2KHR>
14706   {
14707     using Type = DisplayPlaneCapabilities2KHR;
14708   };
14709 
14710   struct DisplayPlaneInfo2KHR
14711   {
14712     using NativeType = VkDisplayPlaneInfo2KHR;
14713 
14714     static const bool allowDuplicate = false;
14715     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneInfo2KHR;
14716 
14717 
14718 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneInfo2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14719 VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR(VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ = {}, uint32_t planeIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
14720     : pNext( pNext_ ), mode( mode_ ), planeIndex( planeIndex_ )
14721     {}
14722 
14723     VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14724 
DisplayPlaneInfo2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14725     DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
14726       : DisplayPlaneInfo2KHR( *reinterpret_cast<DisplayPlaneInfo2KHR const *>( &rhs ) )
14727     {}
14728 
14729 
14730     DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14731 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14732 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14733     DisplayPlaneInfo2KHR & operator=( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
14734     {
14735       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR const *>( &rhs );
14736       return *this;
14737     }
14738 
14739 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14740     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
14741     {
14742       pNext = pNext_;
14743       return *this;
14744     }
14745 
setModeVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14746     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ ) VULKAN_HPP_NOEXCEPT
14747     {
14748       mode = mode_;
14749       return *this;
14750     }
14751 
setPlaneIndexVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14752     VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT
14753     {
14754       planeIndex = planeIndex_;
14755       return *this;
14756     }
14757 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
14758 
14759 
operator VkDisplayPlaneInfo2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14760     operator VkDisplayPlaneInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
14761     {
14762       return *reinterpret_cast<const VkDisplayPlaneInfo2KHR*>( this );
14763     }
14764 
operator VkDisplayPlaneInfo2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14765     operator VkDisplayPlaneInfo2KHR &() VULKAN_HPP_NOEXCEPT
14766     {
14767       return *reinterpret_cast<VkDisplayPlaneInfo2KHR*>( this );
14768     }
14769 
14770 #if defined( VULKAN_HPP_USE_REFLECT )
14771 #if 14 <= VULKAN_HPP_CPP_VERSION
14772     auto
14773 #else
14774     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayModeKHR const &, uint32_t const &>
14775 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14776       reflect() const VULKAN_HPP_NOEXCEPT
14777     {
14778       return std::tie( sType, pNext, mode, planeIndex );
14779     }
14780 #endif
14781 
14782 
14783 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14784 auto operator<=>( DisplayPlaneInfo2KHR const & ) const = default;
14785 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14786     bool operator==( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14787     {
14788 #if defined( VULKAN_HPP_USE_REFLECT )
14789       return this->reflect() == rhs.reflect();
14790 #else
14791       return ( sType == rhs.sType )
14792           && ( pNext == rhs.pNext )
14793           && ( mode == rhs.mode )
14794           && ( planeIndex == rhs.planeIndex );
14795 #endif
14796     }
14797 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR14798     bool operator!=( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14799     {
14800       return !operator==( rhs );
14801     }
14802 #endif
14803 
14804     public:
14805     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneInfo2KHR;
14806     const void * pNext = {};
14807     VULKAN_HPP_NAMESPACE::DisplayModeKHR mode = {};
14808     uint32_t planeIndex = {};
14809 
14810   };
14811 
14812   template <>
14813   struct CppType<StructureType, StructureType::eDisplayPlaneInfo2KHR>
14814   {
14815     using Type = DisplayPlaneInfo2KHR;
14816   };
14817 
14818   struct DisplayPlanePropertiesKHR
14819   {
14820     using NativeType = VkDisplayPlanePropertiesKHR;
14821 
14822 
14823 
14824 
14825 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlanePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR14826 VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR(VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay_ = {}, uint32_t currentStackIndex_ = {}) VULKAN_HPP_NOEXCEPT
14827     : currentDisplay( currentDisplay_ ), currentStackIndex( currentStackIndex_ )
14828     {}
14829 
14830     VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14831 
DisplayPlanePropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR14832     DisplayPlanePropertiesKHR( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14833       : DisplayPlanePropertiesKHR( *reinterpret_cast<DisplayPlanePropertiesKHR const *>( &rhs ) )
14834     {}
14835 
14836 
14837     DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14838 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14839 
operator =VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR14840     DisplayPlanePropertiesKHR & operator=( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
14841     {
14842       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const *>( &rhs );
14843       return *this;
14844     }
14845 
14846 
operator VkDisplayPlanePropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR14847     operator VkDisplayPlanePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
14848     {
14849       return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>( this );
14850     }
14851 
operator VkDisplayPlanePropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR14852     operator VkDisplayPlanePropertiesKHR &() VULKAN_HPP_NOEXCEPT
14853     {
14854       return *reinterpret_cast<VkDisplayPlanePropertiesKHR*>( this );
14855     }
14856 
14857 #if defined( VULKAN_HPP_USE_REFLECT )
14858 #if 14 <= VULKAN_HPP_CPP_VERSION
14859     auto
14860 #else
14861     std::tuple<VULKAN_HPP_NAMESPACE::DisplayKHR const &, uint32_t const &>
14862 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR14863       reflect() const VULKAN_HPP_NOEXCEPT
14864     {
14865       return std::tie( currentDisplay, currentStackIndex );
14866     }
14867 #endif
14868 
14869 
14870 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14871 auto operator<=>( DisplayPlanePropertiesKHR const & ) const = default;
14872 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR14873     bool operator==( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14874     {
14875 #if defined( VULKAN_HPP_USE_REFLECT )
14876       return this->reflect() == rhs.reflect();
14877 #else
14878       return ( currentDisplay == rhs.currentDisplay )
14879           && ( currentStackIndex == rhs.currentStackIndex );
14880 #endif
14881     }
14882 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR14883     bool operator!=( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14884     {
14885       return !operator==( rhs );
14886     }
14887 #endif
14888 
14889     public:
14890     VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay = {};
14891     uint32_t currentStackIndex = {};
14892 
14893   };
14894 
14895   struct DisplayPlaneProperties2KHR
14896   {
14897     using NativeType = VkDisplayPlaneProperties2KHR;
14898 
14899     static const bool allowDuplicate = false;
14900     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneProperties2KHR;
14901 
14902 
14903 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPlaneProperties2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR14904 VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR(VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
14905     : pNext( pNext_ ), displayPlaneProperties( displayPlaneProperties_ )
14906     {}
14907 
14908     VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14909 
DisplayPlaneProperties2KHRVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR14910     DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
14911       : DisplayPlaneProperties2KHR( *reinterpret_cast<DisplayPlaneProperties2KHR const *>( &rhs ) )
14912     {}
14913 
14914 
14915     DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14916 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
14917 
operator =VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR14918     DisplayPlaneProperties2KHR & operator=( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
14919     {
14920       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR const *>( &rhs );
14921       return *this;
14922     }
14923 
14924 
operator VkDisplayPlaneProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR14925     operator VkDisplayPlaneProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
14926     {
14927       return *reinterpret_cast<const VkDisplayPlaneProperties2KHR*>( this );
14928     }
14929 
operator VkDisplayPlaneProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR14930     operator VkDisplayPlaneProperties2KHR &() VULKAN_HPP_NOEXCEPT
14931     {
14932       return *reinterpret_cast<VkDisplayPlaneProperties2KHR*>( this );
14933     }
14934 
14935 #if defined( VULKAN_HPP_USE_REFLECT )
14936 #if 14 <= VULKAN_HPP_CPP_VERSION
14937     auto
14938 #else
14939     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const &>
14940 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR14941       reflect() const VULKAN_HPP_NOEXCEPT
14942     {
14943       return std::tie( sType, pNext, displayPlaneProperties );
14944     }
14945 #endif
14946 
14947 
14948 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
14949 auto operator<=>( DisplayPlaneProperties2KHR const & ) const = default;
14950 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR14951     bool operator==( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14952     {
14953 #if defined( VULKAN_HPP_USE_REFLECT )
14954       return this->reflect() == rhs.reflect();
14955 #else
14956       return ( sType == rhs.sType )
14957           && ( pNext == rhs.pNext )
14958           && ( displayPlaneProperties == rhs.displayPlaneProperties );
14959 #endif
14960     }
14961 
operator !=VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR14962     bool operator!=( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
14963     {
14964       return !operator==( rhs );
14965     }
14966 #endif
14967 
14968     public:
14969     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneProperties2KHR;
14970     void * pNext = {};
14971     VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties = {};
14972 
14973   };
14974 
14975   template <>
14976   struct CppType<StructureType, StructureType::eDisplayPlaneProperties2KHR>
14977   {
14978     using Type = DisplayPlaneProperties2KHR;
14979   };
14980 
14981   struct DisplayPowerInfoEXT
14982   {
14983     using NativeType = VkDisplayPowerInfoEXT;
14984 
14985     static const bool allowDuplicate = false;
14986     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPowerInfoEXT;
14987 
14988 
14989 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPowerInfoEXTVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT14990 VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT(VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
14991     : pNext( pNext_ ), powerState( powerState_ )
14992     {}
14993 
14994     VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
14995 
DisplayPowerInfoEXTVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT14996     DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
14997       : DisplayPowerInfoEXT( *reinterpret_cast<DisplayPowerInfoEXT const *>( &rhs ) )
14998     {}
14999 
15000 
15001     DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15002 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15003 
operator =VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT15004     DisplayPowerInfoEXT & operator=( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
15005     {
15006       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT const *>( &rhs );
15007       return *this;
15008     }
15009 
15010 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT15011     VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15012     {
15013       pNext = pNext_;
15014       return *this;
15015     }
15016 
setPowerStateVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT15017     VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPowerState( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ ) VULKAN_HPP_NOEXCEPT
15018     {
15019       powerState = powerState_;
15020       return *this;
15021     }
15022 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15023 
15024 
operator VkDisplayPowerInfoEXT const&VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT15025     operator VkDisplayPowerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
15026     {
15027       return *reinterpret_cast<const VkDisplayPowerInfoEXT*>( this );
15028     }
15029 
operator VkDisplayPowerInfoEXT&VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT15030     operator VkDisplayPowerInfoEXT &() VULKAN_HPP_NOEXCEPT
15031     {
15032       return *reinterpret_cast<VkDisplayPowerInfoEXT*>( this );
15033     }
15034 
15035 #if defined( VULKAN_HPP_USE_REFLECT )
15036 #if 14 <= VULKAN_HPP_CPP_VERSION
15037     auto
15038 #else
15039     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT const &>
15040 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT15041       reflect() const VULKAN_HPP_NOEXCEPT
15042     {
15043       return std::tie( sType, pNext, powerState );
15044     }
15045 #endif
15046 
15047 
15048 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15049 auto operator<=>( DisplayPowerInfoEXT const & ) const = default;
15050 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT15051     bool operator==( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15052     {
15053 #if defined( VULKAN_HPP_USE_REFLECT )
15054       return this->reflect() == rhs.reflect();
15055 #else
15056       return ( sType == rhs.sType )
15057           && ( pNext == rhs.pNext )
15058           && ( powerState == rhs.powerState );
15059 #endif
15060     }
15061 
operator !=VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT15062     bool operator!=( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15063     {
15064       return !operator==( rhs );
15065     }
15066 #endif
15067 
15068     public:
15069     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPowerInfoEXT;
15070     const void * pNext = {};
15071     VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff;
15072 
15073   };
15074 
15075   template <>
15076   struct CppType<StructureType, StructureType::eDisplayPowerInfoEXT>
15077   {
15078     using Type = DisplayPowerInfoEXT;
15079   };
15080 
15081   struct DisplayPresentInfoKHR
15082   {
15083     using NativeType = VkDisplayPresentInfoKHR;
15084 
15085     static const bool allowDuplicate = false;
15086     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPresentInfoKHR;
15087 
15088 
15089 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPresentInfoKHRVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15090 VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR(VULKAN_HPP_NAMESPACE::Rect2D srcRect_ = {}, VULKAN_HPP_NAMESPACE::Rect2D dstRect_ = {}, VULKAN_HPP_NAMESPACE::Bool32 persistent_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
15091     : pNext( pNext_ ), srcRect( srcRect_ ), dstRect( dstRect_ ), persistent( persistent_ )
15092     {}
15093 
15094     VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15095 
DisplayPresentInfoKHRVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15096     DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
15097       : DisplayPresentInfoKHR( *reinterpret_cast<DisplayPresentInfoKHR const *>( &rhs ) )
15098     {}
15099 
15100 
15101     DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15102 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15103 
operator =VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15104     DisplayPresentInfoKHR & operator=( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
15105     {
15106       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR const *>( &rhs );
15107       return *this;
15108     }
15109 
15110 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15111     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15112     {
15113       pNext = pNext_;
15114       return *this;
15115     }
15116 
setSrcRectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15117     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setSrcRect( VULKAN_HPP_NAMESPACE::Rect2D const & srcRect_ ) VULKAN_HPP_NOEXCEPT
15118     {
15119       srcRect = srcRect_;
15120       return *this;
15121     }
15122 
setDstRectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15123     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setDstRect( VULKAN_HPP_NAMESPACE::Rect2D const & dstRect_ ) VULKAN_HPP_NOEXCEPT
15124     {
15125       dstRect = dstRect_;
15126       return *this;
15127     }
15128 
setPersistentVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15129     VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPersistent( VULKAN_HPP_NAMESPACE::Bool32 persistent_ ) VULKAN_HPP_NOEXCEPT
15130     {
15131       persistent = persistent_;
15132       return *this;
15133     }
15134 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15135 
15136 
operator VkDisplayPresentInfoKHR const&VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15137     operator VkDisplayPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
15138     {
15139       return *reinterpret_cast<const VkDisplayPresentInfoKHR*>( this );
15140     }
15141 
operator VkDisplayPresentInfoKHR&VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15142     operator VkDisplayPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
15143     {
15144       return *reinterpret_cast<VkDisplayPresentInfoKHR*>( this );
15145     }
15146 
15147 #if defined( VULKAN_HPP_USE_REFLECT )
15148 #if 14 <= VULKAN_HPP_CPP_VERSION
15149     auto
15150 #else
15151     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Rect2D const &, VULKAN_HPP_NAMESPACE::Rect2D const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
15152 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15153       reflect() const VULKAN_HPP_NOEXCEPT
15154     {
15155       return std::tie( sType, pNext, srcRect, dstRect, persistent );
15156     }
15157 #endif
15158 
15159 
15160 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15161 auto operator<=>( DisplayPresentInfoKHR const & ) const = default;
15162 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15163     bool operator==( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15164     {
15165 #if defined( VULKAN_HPP_USE_REFLECT )
15166       return this->reflect() == rhs.reflect();
15167 #else
15168       return ( sType == rhs.sType )
15169           && ( pNext == rhs.pNext )
15170           && ( srcRect == rhs.srcRect )
15171           && ( dstRect == rhs.dstRect )
15172           && ( persistent == rhs.persistent );
15173 #endif
15174     }
15175 
operator !=VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR15176     bool operator!=( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15177     {
15178       return !operator==( rhs );
15179     }
15180 #endif
15181 
15182     public:
15183     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPresentInfoKHR;
15184     const void * pNext = {};
15185     VULKAN_HPP_NAMESPACE::Rect2D srcRect = {};
15186     VULKAN_HPP_NAMESPACE::Rect2D dstRect = {};
15187     VULKAN_HPP_NAMESPACE::Bool32 persistent = {};
15188 
15189   };
15190 
15191   template <>
15192   struct CppType<StructureType, StructureType::eDisplayPresentInfoKHR>
15193   {
15194     using Type = DisplayPresentInfoKHR;
15195   };
15196 
15197   struct DisplayPropertiesKHR
15198   {
15199     using NativeType = VkDisplayPropertiesKHR;
15200 
15201 
15202 
15203 
15204 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayPropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15205 VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR(VULKAN_HPP_NAMESPACE::DisplayKHR display_ = {}, const char * displayName_ = {}, VULKAN_HPP_NAMESPACE::Extent2D physicalDimensions_ = {}, VULKAN_HPP_NAMESPACE::Extent2D physicalResolution_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, VULKAN_HPP_NAMESPACE::Bool32 planeReorderPossible_ = {}, VULKAN_HPP_NAMESPACE::Bool32 persistentContent_ = {}) VULKAN_HPP_NOEXCEPT
15206     : display( display_ ), displayName( displayName_ ), physicalDimensions( physicalDimensions_ ), physicalResolution( physicalResolution_ ), supportedTransforms( supportedTransforms_ ), planeReorderPossible( planeReorderPossible_ ), persistentContent( persistentContent_ )
15207     {}
15208 
15209     VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15210 
DisplayPropertiesKHRVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15211     DisplayPropertiesKHR( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
15212       : DisplayPropertiesKHR( *reinterpret_cast<DisplayPropertiesKHR const *>( &rhs ) )
15213     {}
15214 
15215 
15216     DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15217 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15218 
operator =VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15219     DisplayPropertiesKHR & operator=( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
15220     {
15221       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const *>( &rhs );
15222       return *this;
15223     }
15224 
15225 
operator VkDisplayPropertiesKHR const&VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15226     operator VkDisplayPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
15227     {
15228       return *reinterpret_cast<const VkDisplayPropertiesKHR*>( this );
15229     }
15230 
operator VkDisplayPropertiesKHR&VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15231     operator VkDisplayPropertiesKHR &() VULKAN_HPP_NOEXCEPT
15232     {
15233       return *reinterpret_cast<VkDisplayPropertiesKHR*>( this );
15234     }
15235 
15236 #if defined( VULKAN_HPP_USE_REFLECT )
15237 #if 14 <= VULKAN_HPP_CPP_VERSION
15238     auto
15239 #else
15240     std::tuple<VULKAN_HPP_NAMESPACE::DisplayKHR const &, const char * const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
15241 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15242       reflect() const VULKAN_HPP_NOEXCEPT
15243     {
15244       return std::tie( display, displayName, physicalDimensions, physicalResolution, supportedTransforms, planeReorderPossible, persistentContent );
15245     }
15246 #endif
15247 
15248 
15249 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15250     std::strong_ordering operator<=>( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15251     {
15252       if ( auto cmp = display <=> rhs.display; cmp != 0 ) return cmp;
15253      if ( displayName != rhs.displayName )
15254         if ( auto cmp = strcmp( displayName, rhs.displayName ); cmp != 0 )
15255           return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
15256       if ( auto cmp = physicalDimensions <=> rhs.physicalDimensions; cmp != 0 ) return cmp;
15257       if ( auto cmp = physicalResolution <=> rhs.physicalResolution; cmp != 0 ) return cmp;
15258       if ( auto cmp = supportedTransforms <=> rhs.supportedTransforms; cmp != 0 ) return cmp;
15259       if ( auto cmp = planeReorderPossible <=> rhs.planeReorderPossible; cmp != 0 ) return cmp;
15260       if ( auto cmp = persistentContent <=> rhs.persistentContent; cmp != 0 ) return cmp;
15261 
15262       return std::strong_ordering::equivalent;
15263     }
15264 #endif
15265 
operator ==VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15266     bool operator==( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15267     {
15268       return ( display == rhs.display )
15269           && ( ( displayName == rhs.displayName ) || ( strcmp( displayName, rhs.displayName ) == 0 ) )
15270           && ( physicalDimensions == rhs.physicalDimensions )
15271           && ( physicalResolution == rhs.physicalResolution )
15272           && ( supportedTransforms == rhs.supportedTransforms )
15273           && ( planeReorderPossible == rhs.planeReorderPossible )
15274           && ( persistentContent == rhs.persistentContent );
15275     }
15276 
operator !=VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR15277     bool operator!=( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15278     {
15279       return !operator==( rhs );
15280     }
15281 
15282     public:
15283     VULKAN_HPP_NAMESPACE::DisplayKHR display = {};
15284     const char * displayName = {};
15285     VULKAN_HPP_NAMESPACE::Extent2D physicalDimensions = {};
15286     VULKAN_HPP_NAMESPACE::Extent2D physicalResolution = {};
15287     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {};
15288     VULKAN_HPP_NAMESPACE::Bool32 planeReorderPossible = {};
15289     VULKAN_HPP_NAMESPACE::Bool32 persistentContent = {};
15290 
15291   };
15292 
15293   struct DisplayProperties2KHR
15294   {
15295     using NativeType = VkDisplayProperties2KHR;
15296 
15297     static const bool allowDuplicate = false;
15298     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayProperties2KHR;
15299 
15300 
15301 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplayProperties2KHRVULKAN_HPP_NAMESPACE::DisplayProperties2KHR15302 VULKAN_HPP_CONSTEXPR DisplayProperties2KHR(VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
15303     : pNext( pNext_ ), displayProperties( displayProperties_ )
15304     {}
15305 
15306     VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15307 
DisplayProperties2KHRVULKAN_HPP_NAMESPACE::DisplayProperties2KHR15308     DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15309       : DisplayProperties2KHR( *reinterpret_cast<DisplayProperties2KHR const *>( &rhs ) )
15310     {}
15311 
15312 
15313     DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15314 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15315 
operator =VULKAN_HPP_NAMESPACE::DisplayProperties2KHR15316     DisplayProperties2KHR & operator=( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
15317     {
15318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR const *>( &rhs );
15319       return *this;
15320     }
15321 
15322 
operator VkDisplayProperties2KHR const&VULKAN_HPP_NAMESPACE::DisplayProperties2KHR15323     operator VkDisplayProperties2KHR const &() const VULKAN_HPP_NOEXCEPT
15324     {
15325       return *reinterpret_cast<const VkDisplayProperties2KHR*>( this );
15326     }
15327 
operator VkDisplayProperties2KHR&VULKAN_HPP_NAMESPACE::DisplayProperties2KHR15328     operator VkDisplayProperties2KHR &() VULKAN_HPP_NOEXCEPT
15329     {
15330       return *reinterpret_cast<VkDisplayProperties2KHR*>( this );
15331     }
15332 
15333 #if defined( VULKAN_HPP_USE_REFLECT )
15334 #if 14 <= VULKAN_HPP_CPP_VERSION
15335     auto
15336 #else
15337     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const &>
15338 #endif
reflectVULKAN_HPP_NAMESPACE::DisplayProperties2KHR15339       reflect() const VULKAN_HPP_NOEXCEPT
15340     {
15341       return std::tie( sType, pNext, displayProperties );
15342     }
15343 #endif
15344 
15345 
15346 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15347 auto operator<=>( DisplayProperties2KHR const & ) const = default;
15348 #else
operator ==VULKAN_HPP_NAMESPACE::DisplayProperties2KHR15349     bool operator==( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15350     {
15351 #if defined( VULKAN_HPP_USE_REFLECT )
15352       return this->reflect() == rhs.reflect();
15353 #else
15354       return ( sType == rhs.sType )
15355           && ( pNext == rhs.pNext )
15356           && ( displayProperties == rhs.displayProperties );
15357 #endif
15358     }
15359 
operator !=VULKAN_HPP_NAMESPACE::DisplayProperties2KHR15360     bool operator!=( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15361     {
15362       return !operator==( rhs );
15363     }
15364 #endif
15365 
15366     public:
15367     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayProperties2KHR;
15368     void * pNext = {};
15369     VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties = {};
15370 
15371   };
15372 
15373   template <>
15374   struct CppType<StructureType, StructureType::eDisplayProperties2KHR>
15375   {
15376     using Type = DisplayProperties2KHR;
15377   };
15378 
15379   struct DisplaySurfaceCreateInfoKHR
15380   {
15381     using NativeType = VkDisplaySurfaceCreateInfoKHR;
15382 
15383     static const bool allowDuplicate = false;
15384     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplaySurfaceCreateInfoKHR;
15385 
15386 
15387 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DisplaySurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15388 VULKAN_HPP_CONSTEXPR DisplaySurfaceCreateInfoKHR(VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ = {}, VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ = {}, uint32_t planeIndex_ = {}, uint32_t planeStackIndex_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, float globalAlpha_ = {}, VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ = VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque, VULKAN_HPP_NAMESPACE::Extent2D imageExtent_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
15389     : pNext( pNext_ ), flags( flags_ ), displayMode( displayMode_ ), planeIndex( planeIndex_ ), planeStackIndex( planeStackIndex_ ), transform( transform_ ), globalAlpha( globalAlpha_ ), alphaMode( alphaMode_ ), imageExtent( imageExtent_ )
15390     {}
15391 
15392     VULKAN_HPP_CONSTEXPR DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15393 
DisplaySurfaceCreateInfoKHRVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15394     DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
15395       : DisplaySurfaceCreateInfoKHR( *reinterpret_cast<DisplaySurfaceCreateInfoKHR const *>( &rhs ) )
15396     {}
15397 
15398 
15399     DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15400 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15401 
operator =VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15402     DisplaySurfaceCreateInfoKHR & operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
15403     {
15404       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const *>( &rhs );
15405       return *this;
15406     }
15407 
15408 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15409     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
15410     {
15411       pNext = pNext_;
15412       return *this;
15413     }
15414 
setFlagsVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15415     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
15416     {
15417       flags = flags_;
15418       return *this;
15419     }
15420 
setDisplayModeVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15421     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setDisplayMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ ) VULKAN_HPP_NOEXCEPT
15422     {
15423       displayMode = displayMode_;
15424       return *this;
15425     }
15426 
setPlaneIndexVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15427     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT
15428     {
15429       planeIndex = planeIndex_;
15430       return *this;
15431     }
15432 
setPlaneStackIndexVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15433     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneStackIndex( uint32_t planeStackIndex_ ) VULKAN_HPP_NOEXCEPT
15434     {
15435       planeStackIndex = planeStackIndex_;
15436       return *this;
15437     }
15438 
setTransformVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15439     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT
15440     {
15441       transform = transform_;
15442       return *this;
15443     }
15444 
setGlobalAlphaVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15445     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setGlobalAlpha( float globalAlpha_ ) VULKAN_HPP_NOEXCEPT
15446     {
15447       globalAlpha = globalAlpha_;
15448       return *this;
15449     }
15450 
setAlphaModeVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15451     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setAlphaMode( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) VULKAN_HPP_NOEXCEPT
15452     {
15453       alphaMode = alphaMode_;
15454       return *this;
15455     }
15456 
setImageExtentVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15457     VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
15458     {
15459       imageExtent = imageExtent_;
15460       return *this;
15461     }
15462 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15463 
15464 
operator VkDisplaySurfaceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15465     operator VkDisplaySurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
15466     {
15467       return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( this );
15468     }
15469 
operator VkDisplaySurfaceCreateInfoKHR&VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15470     operator VkDisplaySurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
15471     {
15472       return *reinterpret_cast<VkDisplaySurfaceCreateInfoKHR*>( this );
15473     }
15474 
15475 #if defined( VULKAN_HPP_USE_REFLECT )
15476 #if 14 <= VULKAN_HPP_CPP_VERSION
15477     auto
15478 #else
15479     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR const &, VULKAN_HPP_NAMESPACE::DisplayModeKHR const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &, float const &, VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
15480 #endif
reflectVULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15481       reflect() const VULKAN_HPP_NOEXCEPT
15482     {
15483       return std::tie( sType, pNext, flags, displayMode, planeIndex, planeStackIndex, transform, globalAlpha, alphaMode, imageExtent );
15484     }
15485 #endif
15486 
15487 
15488 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15489 auto operator<=>( DisplaySurfaceCreateInfoKHR const & ) const = default;
15490 #else
operator ==VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15491     bool operator==( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15492     {
15493 #if defined( VULKAN_HPP_USE_REFLECT )
15494       return this->reflect() == rhs.reflect();
15495 #else
15496       return ( sType == rhs.sType )
15497           && ( pNext == rhs.pNext )
15498           && ( flags == rhs.flags )
15499           && ( displayMode == rhs.displayMode )
15500           && ( planeIndex == rhs.planeIndex )
15501           && ( planeStackIndex == rhs.planeStackIndex )
15502           && ( transform == rhs.transform )
15503           && ( globalAlpha == rhs.globalAlpha )
15504           && ( alphaMode == rhs.alphaMode )
15505           && ( imageExtent == rhs.imageExtent );
15506 #endif
15507     }
15508 
operator !=VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR15509     bool operator!=( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
15510     {
15511       return !operator==( rhs );
15512     }
15513 #endif
15514 
15515     public:
15516     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR;
15517     const void * pNext = {};
15518     VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags = {};
15519     VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode = {};
15520     uint32_t planeIndex = {};
15521     uint32_t planeStackIndex = {};
15522     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
15523     float globalAlpha = {};
15524     VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode = VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque;
15525     VULKAN_HPP_NAMESPACE::Extent2D imageExtent = {};
15526 
15527   };
15528 
15529   template <>
15530   struct CppType<StructureType, StructureType::eDisplaySurfaceCreateInfoKHR>
15531   {
15532     using Type = DisplaySurfaceCreateInfoKHR;
15533   };
15534 
15535   struct DrawIndexedIndirectCommand
15536   {
15537     using NativeType = VkDrawIndexedIndirectCommand;
15538 
15539 
15540 
15541 
15542 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawIndexedIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15543 VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand(uint32_t indexCount_ = {}, uint32_t instanceCount_ = {}, uint32_t firstIndex_ = {}, int32_t vertexOffset_ = {}, uint32_t firstInstance_ = {}) VULKAN_HPP_NOEXCEPT
15544     : indexCount( indexCount_ ), instanceCount( instanceCount_ ), firstIndex( firstIndex_ ), vertexOffset( vertexOffset_ ), firstInstance( firstInstance_ )
15545     {}
15546 
15547     VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15548 
DrawIndexedIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15549     DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
15550       : DrawIndexedIndirectCommand( *reinterpret_cast<DrawIndexedIndirectCommand const *>( &rhs ) )
15551     {}
15552 
15553 
15554     DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15555 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15556 
operator =VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15557     DrawIndexedIndirectCommand & operator=( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
15558     {
15559       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand const *>( &rhs );
15560       return *this;
15561     }
15562 
15563 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setIndexCountVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15564     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT
15565     {
15566       indexCount = indexCount_;
15567       return *this;
15568     }
15569 
setInstanceCountVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15570     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
15571     {
15572       instanceCount = instanceCount_;
15573       return *this;
15574     }
15575 
setFirstIndexVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15576     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT
15577     {
15578       firstIndex = firstIndex_;
15579       return *this;
15580     }
15581 
setVertexOffsetVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15582     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT
15583     {
15584       vertexOffset = vertexOffset_;
15585       return *this;
15586     }
15587 
setFirstInstanceVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15588     VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT
15589     {
15590       firstInstance = firstInstance_;
15591       return *this;
15592     }
15593 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15594 
15595 
operator VkDrawIndexedIndirectCommand const&VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15596     operator VkDrawIndexedIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
15597     {
15598       return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>( this );
15599     }
15600 
operator VkDrawIndexedIndirectCommand&VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15601     operator VkDrawIndexedIndirectCommand &() VULKAN_HPP_NOEXCEPT
15602     {
15603       return *reinterpret_cast<VkDrawIndexedIndirectCommand*>( this );
15604     }
15605 
15606 #if defined( VULKAN_HPP_USE_REFLECT )
15607 #if 14 <= VULKAN_HPP_CPP_VERSION
15608     auto
15609 #else
15610     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, int32_t const &, uint32_t const &>
15611 #endif
reflectVULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15612       reflect() const VULKAN_HPP_NOEXCEPT
15613     {
15614       return std::tie( indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
15615     }
15616 #endif
15617 
15618 
15619 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15620 auto operator<=>( DrawIndexedIndirectCommand const & ) const = default;
15621 #else
operator ==VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15622     bool operator==( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
15623     {
15624 #if defined( VULKAN_HPP_USE_REFLECT )
15625       return this->reflect() == rhs.reflect();
15626 #else
15627       return ( indexCount == rhs.indexCount )
15628           && ( instanceCount == rhs.instanceCount )
15629           && ( firstIndex == rhs.firstIndex )
15630           && ( vertexOffset == rhs.vertexOffset )
15631           && ( firstInstance == rhs.firstInstance );
15632 #endif
15633     }
15634 
operator !=VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand15635     bool operator!=( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
15636     {
15637       return !operator==( rhs );
15638     }
15639 #endif
15640 
15641     public:
15642     uint32_t indexCount = {};
15643     uint32_t instanceCount = {};
15644     uint32_t firstIndex = {};
15645     int32_t vertexOffset = {};
15646     uint32_t firstInstance = {};
15647 
15648   };
15649 
15650   struct DrawIndirectCommand
15651   {
15652     using NativeType = VkDrawIndirectCommand;
15653 
15654 
15655 
15656 
15657 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrawIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndirectCommand15658 VULKAN_HPP_CONSTEXPR DrawIndirectCommand(uint32_t vertexCount_ = {}, uint32_t instanceCount_ = {}, uint32_t firstVertex_ = {}, uint32_t firstInstance_ = {}) VULKAN_HPP_NOEXCEPT
15659     : vertexCount( vertexCount_ ), instanceCount( instanceCount_ ), firstVertex( firstVertex_ ), firstInstance( firstInstance_ )
15660     {}
15661 
15662     VULKAN_HPP_CONSTEXPR DrawIndirectCommand( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15663 
DrawIndirectCommandVULKAN_HPP_NAMESPACE::DrawIndirectCommand15664     DrawIndirectCommand( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
15665       : DrawIndirectCommand( *reinterpret_cast<DrawIndirectCommand const *>( &rhs ) )
15666     {}
15667 
15668 
15669     DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15670 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15671 
operator =VULKAN_HPP_NAMESPACE::DrawIndirectCommand15672     DrawIndirectCommand & operator=( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT
15673     {
15674       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrawIndirectCommand const *>( &rhs );
15675       return *this;
15676     }
15677 
15678 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setVertexCountVULKAN_HPP_NAMESPACE::DrawIndirectCommand15679     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT
15680     {
15681       vertexCount = vertexCount_;
15682       return *this;
15683     }
15684 
setInstanceCountVULKAN_HPP_NAMESPACE::DrawIndirectCommand15685     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT
15686     {
15687       instanceCount = instanceCount_;
15688       return *this;
15689     }
15690 
setFirstVertexVULKAN_HPP_NAMESPACE::DrawIndirectCommand15691     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT
15692     {
15693       firstVertex = firstVertex_;
15694       return *this;
15695     }
15696 
setFirstInstanceVULKAN_HPP_NAMESPACE::DrawIndirectCommand15697     VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT
15698     {
15699       firstInstance = firstInstance_;
15700       return *this;
15701     }
15702 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
15703 
15704 
operator VkDrawIndirectCommand const&VULKAN_HPP_NAMESPACE::DrawIndirectCommand15705     operator VkDrawIndirectCommand const &() const VULKAN_HPP_NOEXCEPT
15706     {
15707       return *reinterpret_cast<const VkDrawIndirectCommand*>( this );
15708     }
15709 
operator VkDrawIndirectCommand&VULKAN_HPP_NAMESPACE::DrawIndirectCommand15710     operator VkDrawIndirectCommand &() VULKAN_HPP_NOEXCEPT
15711     {
15712       return *reinterpret_cast<VkDrawIndirectCommand*>( this );
15713     }
15714 
15715 #if defined( VULKAN_HPP_USE_REFLECT )
15716 #if 14 <= VULKAN_HPP_CPP_VERSION
15717     auto
15718 #else
15719     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
15720 #endif
reflectVULKAN_HPP_NAMESPACE::DrawIndirectCommand15721       reflect() const VULKAN_HPP_NOEXCEPT
15722     {
15723       return std::tie( vertexCount, instanceCount, firstVertex, firstInstance );
15724     }
15725 #endif
15726 
15727 
15728 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15729 auto operator<=>( DrawIndirectCommand const & ) const = default;
15730 #else
operator ==VULKAN_HPP_NAMESPACE::DrawIndirectCommand15731     bool operator==( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
15732     {
15733 #if defined( VULKAN_HPP_USE_REFLECT )
15734       return this->reflect() == rhs.reflect();
15735 #else
15736       return ( vertexCount == rhs.vertexCount )
15737           && ( instanceCount == rhs.instanceCount )
15738           && ( firstVertex == rhs.firstVertex )
15739           && ( firstInstance == rhs.firstInstance );
15740 #endif
15741     }
15742 
operator !=VULKAN_HPP_NAMESPACE::DrawIndirectCommand15743     bool operator!=( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT
15744     {
15745       return !operator==( rhs );
15746     }
15747 #endif
15748 
15749     public:
15750     uint32_t vertexCount = {};
15751     uint32_t instanceCount = {};
15752     uint32_t firstVertex = {};
15753     uint32_t firstInstance = {};
15754 
15755   };
15756 
15757   struct DrmFormatModifierProperties2EXT
15758   {
15759     using NativeType = VkDrmFormatModifierProperties2EXT;
15760 
15761 
15762 
15763 
15764 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierProperties2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT15765 VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT(uint64_t drmFormatModifier_ = {}, uint32_t drmFormatModifierPlaneCount_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 drmFormatModifierTilingFeatures_ = {}) VULKAN_HPP_NOEXCEPT
15766     : drmFormatModifier( drmFormatModifier_ ), drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ ), drmFormatModifierTilingFeatures( drmFormatModifierTilingFeatures_ )
15767     {}
15768 
15769     VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15770 
DrmFormatModifierProperties2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT15771     DrmFormatModifierProperties2EXT( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
15772       : DrmFormatModifierProperties2EXT( *reinterpret_cast<DrmFormatModifierProperties2EXT const *>( &rhs ) )
15773     {}
15774 
15775 
15776     DrmFormatModifierProperties2EXT & operator=( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15777 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15778 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT15779     DrmFormatModifierProperties2EXT & operator=( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
15780     {
15781       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT const *>( &rhs );
15782       return *this;
15783     }
15784 
15785 
operator VkDrmFormatModifierProperties2EXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT15786     operator VkDrmFormatModifierProperties2EXT const &() const VULKAN_HPP_NOEXCEPT
15787     {
15788       return *reinterpret_cast<const VkDrmFormatModifierProperties2EXT*>( this );
15789     }
15790 
operator VkDrmFormatModifierProperties2EXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT15791     operator VkDrmFormatModifierProperties2EXT &() VULKAN_HPP_NOEXCEPT
15792     {
15793       return *reinterpret_cast<VkDrmFormatModifierProperties2EXT*>( this );
15794     }
15795 
15796 #if defined( VULKAN_HPP_USE_REFLECT )
15797 #if 14 <= VULKAN_HPP_CPP_VERSION
15798     auto
15799 #else
15800     std::tuple<uint64_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &>
15801 #endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT15802       reflect() const VULKAN_HPP_NOEXCEPT
15803     {
15804       return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures );
15805     }
15806 #endif
15807 
15808 
15809 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15810 auto operator<=>( DrmFormatModifierProperties2EXT const & ) const = default;
15811 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT15812     bool operator==( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15813     {
15814 #if defined( VULKAN_HPP_USE_REFLECT )
15815       return this->reflect() == rhs.reflect();
15816 #else
15817       return ( drmFormatModifier == rhs.drmFormatModifier )
15818           && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount )
15819           && ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures );
15820 #endif
15821     }
15822 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT15823     bool operator!=( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15824     {
15825       return !operator==( rhs );
15826     }
15827 #endif
15828 
15829     public:
15830     uint64_t drmFormatModifier = {};
15831     uint32_t drmFormatModifierPlaneCount = {};
15832     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 drmFormatModifierTilingFeatures = {};
15833 
15834   };
15835 
15836   struct DrmFormatModifierPropertiesEXT
15837   {
15838     using NativeType = VkDrmFormatModifierPropertiesEXT;
15839 
15840 
15841 
15842 
15843 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT15844 VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT(uint64_t drmFormatModifier_ = {}, uint32_t drmFormatModifierPlaneCount_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures_ = {}) VULKAN_HPP_NOEXCEPT
15845     : drmFormatModifier( drmFormatModifier_ ), drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ ), drmFormatModifierTilingFeatures( drmFormatModifierTilingFeatures_ )
15846     {}
15847 
15848     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15849 
DrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT15850     DrmFormatModifierPropertiesEXT( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
15851       : DrmFormatModifierPropertiesEXT( *reinterpret_cast<DrmFormatModifierPropertiesEXT const *>( &rhs ) )
15852     {}
15853 
15854 
15855     DrmFormatModifierPropertiesEXT & operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15856 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15857 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT15858     DrmFormatModifierPropertiesEXT & operator=( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
15859     {
15860       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT const *>( &rhs );
15861       return *this;
15862     }
15863 
15864 
operator VkDrmFormatModifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT15865     operator VkDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
15866     {
15867       return *reinterpret_cast<const VkDrmFormatModifierPropertiesEXT*>( this );
15868     }
15869 
operator VkDrmFormatModifierPropertiesEXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT15870     operator VkDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
15871     {
15872       return *reinterpret_cast<VkDrmFormatModifierPropertiesEXT*>( this );
15873     }
15874 
15875 #if defined( VULKAN_HPP_USE_REFLECT )
15876 #if 14 <= VULKAN_HPP_CPP_VERSION
15877     auto
15878 #else
15879     std::tuple<uint64_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &>
15880 #endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT15881       reflect() const VULKAN_HPP_NOEXCEPT
15882     {
15883       return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures );
15884     }
15885 #endif
15886 
15887 
15888 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15889 auto operator<=>( DrmFormatModifierPropertiesEXT const & ) const = default;
15890 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT15891     bool operator==( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15892     {
15893 #if defined( VULKAN_HPP_USE_REFLECT )
15894       return this->reflect() == rhs.reflect();
15895 #else
15896       return ( drmFormatModifier == rhs.drmFormatModifier )
15897           && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount )
15898           && ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures );
15899 #endif
15900     }
15901 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT15902     bool operator!=( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15903     {
15904       return !operator==( rhs );
15905     }
15906 #endif
15907 
15908     public:
15909     uint64_t drmFormatModifier = {};
15910     uint32_t drmFormatModifierPlaneCount = {};
15911     VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures = {};
15912 
15913   };
15914 
15915   struct DrmFormatModifierPropertiesList2EXT
15916   {
15917     using NativeType = VkDrmFormatModifierPropertiesList2EXT;
15918 
15919     static const bool allowDuplicate = false;
15920     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDrmFormatModifierPropertiesList2EXT;
15921 
15922 
15923 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15924 VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT(uint32_t drmFormatModifierCount_ = {}, VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
15925     : pNext( pNext_ ), drmFormatModifierCount( drmFormatModifierCount_ ), pDrmFormatModifierProperties( pDrmFormatModifierProperties_ )
15926     {}
15927 
15928     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15929 
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15930     DrmFormatModifierPropertiesList2EXT( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
15931       : DrmFormatModifierPropertiesList2EXT( *reinterpret_cast<DrmFormatModifierPropertiesList2EXT const *>( &rhs ) )
15932     {}
15933 
15934 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DrmFormatModifierPropertiesList2EXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15935     DrmFormatModifierPropertiesList2EXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT> const & drmFormatModifierProperties_, void * pNext_ = nullptr )
15936     : pNext( pNext_ ), drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifierProperties_.size() ) ), pDrmFormatModifierProperties( drmFormatModifierProperties_.data() )
15937     {}
15938 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
15939 
15940 
15941     DrmFormatModifierPropertiesList2EXT & operator=( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
15942 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
15943 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15944     DrmFormatModifierPropertiesList2EXT & operator=( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
15945     {
15946       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT const *>( &rhs );
15947       return *this;
15948     }
15949 
15950 
operator VkDrmFormatModifierPropertiesList2EXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15951     operator VkDrmFormatModifierPropertiesList2EXT const &() const VULKAN_HPP_NOEXCEPT
15952     {
15953       return *reinterpret_cast<const VkDrmFormatModifierPropertiesList2EXT*>( this );
15954     }
15955 
operator VkDrmFormatModifierPropertiesList2EXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15956     operator VkDrmFormatModifierPropertiesList2EXT &() VULKAN_HPP_NOEXCEPT
15957     {
15958       return *reinterpret_cast<VkDrmFormatModifierPropertiesList2EXT*>( this );
15959     }
15960 
15961 #if defined( VULKAN_HPP_USE_REFLECT )
15962 #if 14 <= VULKAN_HPP_CPP_VERSION
15963     auto
15964 #else
15965     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * const &>
15966 #endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15967       reflect() const VULKAN_HPP_NOEXCEPT
15968     {
15969       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties );
15970     }
15971 #endif
15972 
15973 
15974 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
15975 auto operator<=>( DrmFormatModifierPropertiesList2EXT const & ) const = default;
15976 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15977     bool operator==( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15978     {
15979 #if defined( VULKAN_HPP_USE_REFLECT )
15980       return this->reflect() == rhs.reflect();
15981 #else
15982       return ( sType == rhs.sType )
15983           && ( pNext == rhs.pNext )
15984           && ( drmFormatModifierCount == rhs.drmFormatModifierCount )
15985           && ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties );
15986 #endif
15987     }
15988 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT15989     bool operator!=( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
15990     {
15991       return !operator==( rhs );
15992     }
15993 #endif
15994 
15995     public:
15996     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDrmFormatModifierPropertiesList2EXT;
15997     void * pNext = {};
15998     uint32_t drmFormatModifierCount = {};
15999     VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties = {};
16000 
16001   };
16002 
16003   template <>
16004   struct CppType<StructureType, StructureType::eDrmFormatModifierPropertiesList2EXT>
16005   {
16006     using Type = DrmFormatModifierPropertiesList2EXT;
16007   };
16008 
16009   struct DrmFormatModifierPropertiesListEXT
16010   {
16011     using NativeType = VkDrmFormatModifierPropertiesListEXT;
16012 
16013     static const bool allowDuplicate = false;
16014     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDrmFormatModifierPropertiesListEXT;
16015 
16016 
16017 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16018 VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT(uint32_t drmFormatModifierCount_ = {}, VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16019     : pNext( pNext_ ), drmFormatModifierCount( drmFormatModifierCount_ ), pDrmFormatModifierProperties( pDrmFormatModifierProperties_ )
16020     {}
16021 
16022     VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16023 
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16024     DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
16025       : DrmFormatModifierPropertiesListEXT( *reinterpret_cast<DrmFormatModifierPropertiesListEXT const *>( &rhs ) )
16026     {}
16027 
16028 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
DrmFormatModifierPropertiesListEXTVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16029     DrmFormatModifierPropertiesListEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT> const & drmFormatModifierProperties_, void * pNext_ = nullptr )
16030     : pNext( pNext_ ), drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifierProperties_.size() ) ), pDrmFormatModifierProperties( drmFormatModifierProperties_.data() )
16031     {}
16032 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
16033 
16034 
16035     DrmFormatModifierPropertiesListEXT & operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16036 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16037 
operator =VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16038     DrmFormatModifierPropertiesListEXT & operator=( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT
16039     {
16040       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT const *>( &rhs );
16041       return *this;
16042     }
16043 
16044 
operator VkDrmFormatModifierPropertiesListEXT const&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16045     operator VkDrmFormatModifierPropertiesListEXT const &() const VULKAN_HPP_NOEXCEPT
16046     {
16047       return *reinterpret_cast<const VkDrmFormatModifierPropertiesListEXT*>( this );
16048     }
16049 
operator VkDrmFormatModifierPropertiesListEXT&VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16050     operator VkDrmFormatModifierPropertiesListEXT &() VULKAN_HPP_NOEXCEPT
16051     {
16052       return *reinterpret_cast<VkDrmFormatModifierPropertiesListEXT*>( this );
16053     }
16054 
16055 #if defined( VULKAN_HPP_USE_REFLECT )
16056 #if 14 <= VULKAN_HPP_CPP_VERSION
16057     auto
16058 #else
16059     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * const &>
16060 #endif
reflectVULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16061       reflect() const VULKAN_HPP_NOEXCEPT
16062     {
16063       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties );
16064     }
16065 #endif
16066 
16067 
16068 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
16069 auto operator<=>( DrmFormatModifierPropertiesListEXT const & ) const = default;
16070 #else
operator ==VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16071     bool operator==( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
16072     {
16073 #if defined( VULKAN_HPP_USE_REFLECT )
16074       return this->reflect() == rhs.reflect();
16075 #else
16076       return ( sType == rhs.sType )
16077           && ( pNext == rhs.pNext )
16078           && ( drmFormatModifierCount == rhs.drmFormatModifierCount )
16079           && ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties );
16080 #endif
16081     }
16082 
operator !=VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT16083     bool operator!=( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
16084     {
16085       return !operator==( rhs );
16086     }
16087 #endif
16088 
16089     public:
16090     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDrmFormatModifierPropertiesListEXT;
16091     void * pNext = {};
16092     uint32_t drmFormatModifierCount = {};
16093     VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties = {};
16094 
16095   };
16096 
16097   template <>
16098   struct CppType<StructureType, StructureType::eDrmFormatModifierPropertiesListEXT>
16099   {
16100     using Type = DrmFormatModifierPropertiesListEXT;
16101   };
16102 
16103   struct EventCreateInfo
16104   {
16105     using NativeType = VkEventCreateInfo;
16106 
16107     static const bool allowDuplicate = false;
16108     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eEventCreateInfo;
16109 
16110 
16111 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
EventCreateInfoVULKAN_HPP_NAMESPACE::EventCreateInfo16112 VULKAN_HPP_CONSTEXPR EventCreateInfo(VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16113     : pNext( pNext_ ), flags( flags_ )
16114     {}
16115 
16116     VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16117 
EventCreateInfoVULKAN_HPP_NAMESPACE::EventCreateInfo16118     EventCreateInfo( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16119       : EventCreateInfo( *reinterpret_cast<EventCreateInfo const *>( &rhs ) )
16120     {}
16121 
16122 
16123     EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16124 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16125 
operator =VULKAN_HPP_NAMESPACE::EventCreateInfo16126     EventCreateInfo & operator=( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16127     {
16128       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::EventCreateInfo const *>( &rhs );
16129       return *this;
16130     }
16131 
16132 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::EventCreateInfo16133     VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16134     {
16135       pNext = pNext_;
16136       return *this;
16137     }
16138 
setFlagsVULKAN_HPP_NAMESPACE::EventCreateInfo16139     VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
16140     {
16141       flags = flags_;
16142       return *this;
16143     }
16144 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16145 
16146 
operator VkEventCreateInfo const&VULKAN_HPP_NAMESPACE::EventCreateInfo16147     operator VkEventCreateInfo const &() const VULKAN_HPP_NOEXCEPT
16148     {
16149       return *reinterpret_cast<const VkEventCreateInfo*>( this );
16150     }
16151 
operator VkEventCreateInfo&VULKAN_HPP_NAMESPACE::EventCreateInfo16152     operator VkEventCreateInfo &() VULKAN_HPP_NOEXCEPT
16153     {
16154       return *reinterpret_cast<VkEventCreateInfo*>( this );
16155     }
16156 
16157 #if defined( VULKAN_HPP_USE_REFLECT )
16158 #if 14 <= VULKAN_HPP_CPP_VERSION
16159     auto
16160 #else
16161     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::EventCreateFlags const &>
16162 #endif
reflectVULKAN_HPP_NAMESPACE::EventCreateInfo16163       reflect() const VULKAN_HPP_NOEXCEPT
16164     {
16165       return std::tie( sType, pNext, flags );
16166     }
16167 #endif
16168 
16169 
16170 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
16171 auto operator<=>( EventCreateInfo const & ) const = default;
16172 #else
operator ==VULKAN_HPP_NAMESPACE::EventCreateInfo16173     bool operator==( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16174     {
16175 #if defined( VULKAN_HPP_USE_REFLECT )
16176       return this->reflect() == rhs.reflect();
16177 #else
16178       return ( sType == rhs.sType )
16179           && ( pNext == rhs.pNext )
16180           && ( flags == rhs.flags );
16181 #endif
16182     }
16183 
operator !=VULKAN_HPP_NAMESPACE::EventCreateInfo16184     bool operator!=( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16185     {
16186       return !operator==( rhs );
16187     }
16188 #endif
16189 
16190     public:
16191     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eEventCreateInfo;
16192     const void * pNext = {};
16193     VULKAN_HPP_NAMESPACE::EventCreateFlags flags = {};
16194 
16195   };
16196 
16197   template <>
16198   struct CppType<StructureType, StructureType::eEventCreateInfo>
16199   {
16200     using Type = EventCreateInfo;
16201   };
16202 
16203   struct ExportFenceCreateInfo
16204   {
16205     using NativeType = VkExportFenceCreateInfo;
16206 
16207     static const bool allowDuplicate = false;
16208     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportFenceCreateInfo;
16209 
16210 
16211 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportFenceCreateInfoVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16212 VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo(VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16213     : pNext( pNext_ ), handleTypes( handleTypes_ )
16214     {}
16215 
16216     VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16217 
ExportFenceCreateInfoVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16218     ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16219       : ExportFenceCreateInfo( *reinterpret_cast<ExportFenceCreateInfo const *>( &rhs ) )
16220     {}
16221 
16222 
16223     ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16224 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16225 
operator =VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16226     ExportFenceCreateInfo & operator=( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16227     {
16228       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo const *>( &rhs );
16229       return *this;
16230     }
16231 
16232 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16233     VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16234     {
16235       pNext = pNext_;
16236       return *this;
16237     }
16238 
setHandleTypesVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16239     VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
16240     {
16241       handleTypes = handleTypes_;
16242       return *this;
16243     }
16244 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16245 
16246 
operator VkExportFenceCreateInfo const&VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16247     operator VkExportFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
16248     {
16249       return *reinterpret_cast<const VkExportFenceCreateInfo*>( this );
16250     }
16251 
operator VkExportFenceCreateInfo&VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16252     operator VkExportFenceCreateInfo &() VULKAN_HPP_NOEXCEPT
16253     {
16254       return *reinterpret_cast<VkExportFenceCreateInfo*>( this );
16255     }
16256 
16257 #if defined( VULKAN_HPP_USE_REFLECT )
16258 #if 14 <= VULKAN_HPP_CPP_VERSION
16259     auto
16260 #else
16261     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &>
16262 #endif
reflectVULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16263       reflect() const VULKAN_HPP_NOEXCEPT
16264     {
16265       return std::tie( sType, pNext, handleTypes );
16266     }
16267 #endif
16268 
16269 
16270 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
16271 auto operator<=>( ExportFenceCreateInfo const & ) const = default;
16272 #else
operator ==VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16273     bool operator==( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16274     {
16275 #if defined( VULKAN_HPP_USE_REFLECT )
16276       return this->reflect() == rhs.reflect();
16277 #else
16278       return ( sType == rhs.sType )
16279           && ( pNext == rhs.pNext )
16280           && ( handleTypes == rhs.handleTypes );
16281 #endif
16282     }
16283 
operator !=VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo16284     bool operator!=( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16285     {
16286       return !operator==( rhs );
16287     }
16288 #endif
16289 
16290     public:
16291     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceCreateInfo;
16292     const void * pNext = {};
16293     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes = {};
16294 
16295   };
16296 
16297   template <>
16298   struct CppType<StructureType, StructureType::eExportFenceCreateInfo>
16299   {
16300     using Type = ExportFenceCreateInfo;
16301   };
16302   using ExportFenceCreateInfoKHR = ExportFenceCreateInfo;
16303 
16304 #if defined( VK_USE_PLATFORM_SCI )
16305   struct ExportFenceSciSyncInfoNV
16306   {
16307     using NativeType = VkExportFenceSciSyncInfoNV;
16308 
16309     static const bool allowDuplicate = false;
16310     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportFenceSciSyncInfoNV;
16311 
16312 
16313 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportFenceSciSyncInfoNVVULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16314 VULKAN_HPP_CONSTEXPR ExportFenceSciSyncInfoNV(NvSciSyncAttrList pAttributes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16315     : pNext( pNext_ ), pAttributes( pAttributes_ )
16316     {}
16317 
16318     VULKAN_HPP_CONSTEXPR ExportFenceSciSyncInfoNV( ExportFenceSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16319 
ExportFenceSciSyncInfoNVVULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16320     ExportFenceSciSyncInfoNV( VkExportFenceSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16321       : ExportFenceSciSyncInfoNV( *reinterpret_cast<ExportFenceSciSyncInfoNV const *>( &rhs ) )
16322     {}
16323 
16324 
16325     ExportFenceSciSyncInfoNV & operator=( ExportFenceSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16326 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16327 
operator =VULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16328     ExportFenceSciSyncInfoNV & operator=( VkExportFenceSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16329     {
16330       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV const *>( &rhs );
16331       return *this;
16332     }
16333 
16334 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16335     VULKAN_HPP_CONSTEXPR_14 ExportFenceSciSyncInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16336     {
16337       pNext = pNext_;
16338       return *this;
16339     }
16340 
setPAttributesVULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16341     VULKAN_HPP_CONSTEXPR_14 ExportFenceSciSyncInfoNV & setPAttributes( NvSciSyncAttrList pAttributes_ ) VULKAN_HPP_NOEXCEPT
16342     {
16343       pAttributes = pAttributes_;
16344       return *this;
16345     }
16346 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16347 
16348 
operator VkExportFenceSciSyncInfoNV const&VULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16349     operator VkExportFenceSciSyncInfoNV const &() const VULKAN_HPP_NOEXCEPT
16350     {
16351       return *reinterpret_cast<const VkExportFenceSciSyncInfoNV*>( this );
16352     }
16353 
operator VkExportFenceSciSyncInfoNV&VULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16354     operator VkExportFenceSciSyncInfoNV &() VULKAN_HPP_NOEXCEPT
16355     {
16356       return *reinterpret_cast<VkExportFenceSciSyncInfoNV*>( this );
16357     }
16358 
16359 #if defined( VULKAN_HPP_USE_REFLECT )
16360 #if 14 <= VULKAN_HPP_CPP_VERSION
16361     auto
16362 #else
16363     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, NvSciSyncAttrList const &>
16364 #endif
reflectVULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16365       reflect() const VULKAN_HPP_NOEXCEPT
16366     {
16367       return std::tie( sType, pNext, pAttributes );
16368     }
16369 #endif
16370 
16371 
16372 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16373     std::strong_ordering operator<=>( ExportFenceSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16374     {
16375       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
16376       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
16377       if ( auto cmp = memcmp( &pAttributes, &rhs.pAttributes, sizeof( NvSciSyncAttrList ) ); cmp != 0 )
16378         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
16379 
16380       return std::strong_ordering::equivalent;
16381     }
16382 #endif
16383 
operator ==VULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16384     bool operator==( ExportFenceSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16385     {
16386       return ( sType == rhs.sType )
16387           && ( pNext == rhs.pNext )
16388           && ( memcmp( &pAttributes, &rhs.pAttributes, sizeof( NvSciSyncAttrList ) ) == 0 );
16389     }
16390 
operator !=VULKAN_HPP_NAMESPACE::ExportFenceSciSyncInfoNV16391     bool operator!=( ExportFenceSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16392     {
16393       return !operator==( rhs );
16394     }
16395 
16396     public:
16397     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceSciSyncInfoNV;
16398     const void * pNext = {};
16399     NvSciSyncAttrList pAttributes = {};
16400 
16401   };
16402 
16403   template <>
16404   struct CppType<StructureType, StructureType::eExportFenceSciSyncInfoNV>
16405   {
16406     using Type = ExportFenceSciSyncInfoNV;
16407   };
16408 #endif /*VK_USE_PLATFORM_SCI*/
16409 
16410   struct ExportMemoryAllocateInfo
16411   {
16412     using NativeType = VkExportMemoryAllocateInfo;
16413 
16414     static const bool allowDuplicate = false;
16415     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryAllocateInfo;
16416 
16417 
16418 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemoryAllocateInfoVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16419 VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16420     : pNext( pNext_ ), handleTypes( handleTypes_ )
16421     {}
16422 
16423     VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16424 
ExportMemoryAllocateInfoVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16425     ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16426       : ExportMemoryAllocateInfo( *reinterpret_cast<ExportMemoryAllocateInfo const *>( &rhs ) )
16427     {}
16428 
16429 
16430     ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16431 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16432 
operator =VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16433     ExportMemoryAllocateInfo & operator=( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16434     {
16435       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo const *>( &rhs );
16436       return *this;
16437     }
16438 
16439 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16440     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16441     {
16442       pNext = pNext_;
16443       return *this;
16444     }
16445 
setHandleTypesVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16446     VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
16447     {
16448       handleTypes = handleTypes_;
16449       return *this;
16450     }
16451 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16452 
16453 
operator VkExportMemoryAllocateInfo const&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16454     operator VkExportMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
16455     {
16456       return *reinterpret_cast<const VkExportMemoryAllocateInfo*>( this );
16457     }
16458 
operator VkExportMemoryAllocateInfo&VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16459     operator VkExportMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT
16460     {
16461       return *reinterpret_cast<VkExportMemoryAllocateInfo*>( this );
16462     }
16463 
16464 #if defined( VULKAN_HPP_USE_REFLECT )
16465 #if 14 <= VULKAN_HPP_CPP_VERSION
16466     auto
16467 #else
16468     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
16469 #endif
reflectVULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16470       reflect() const VULKAN_HPP_NOEXCEPT
16471     {
16472       return std::tie( sType, pNext, handleTypes );
16473     }
16474 #endif
16475 
16476 
16477 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
16478 auto operator<=>( ExportMemoryAllocateInfo const & ) const = default;
16479 #else
operator ==VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16480     bool operator==( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16481     {
16482 #if defined( VULKAN_HPP_USE_REFLECT )
16483       return this->reflect() == rhs.reflect();
16484 #else
16485       return ( sType == rhs.sType )
16486           && ( pNext == rhs.pNext )
16487           && ( handleTypes == rhs.handleTypes );
16488 #endif
16489     }
16490 
operator !=VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo16491     bool operator!=( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16492     {
16493       return !operator==( rhs );
16494     }
16495 #endif
16496 
16497     public:
16498     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfo;
16499     const void * pNext = {};
16500     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
16501 
16502   };
16503 
16504   template <>
16505   struct CppType<StructureType, StructureType::eExportMemoryAllocateInfo>
16506   {
16507     using Type = ExportMemoryAllocateInfo;
16508   };
16509   using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo;
16510 
16511 #if defined( VK_USE_PLATFORM_SCI )
16512   struct ExportMemorySciBufInfoNV
16513   {
16514     using NativeType = VkExportMemorySciBufInfoNV;
16515 
16516     static const bool allowDuplicate = false;
16517     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemorySciBufInfoNV;
16518 
16519 
16520 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportMemorySciBufInfoNVVULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16521 VULKAN_HPP_CONSTEXPR ExportMemorySciBufInfoNV(NvSciBufAttrList pAttributes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16522     : pNext( pNext_ ), pAttributes( pAttributes_ )
16523     {}
16524 
16525     VULKAN_HPP_CONSTEXPR ExportMemorySciBufInfoNV( ExportMemorySciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16526 
ExportMemorySciBufInfoNVVULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16527     ExportMemorySciBufInfoNV( VkExportMemorySciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16528       : ExportMemorySciBufInfoNV( *reinterpret_cast<ExportMemorySciBufInfoNV const *>( &rhs ) )
16529     {}
16530 
16531 
16532     ExportMemorySciBufInfoNV & operator=( ExportMemorySciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16533 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16534 
operator =VULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16535     ExportMemorySciBufInfoNV & operator=( VkExportMemorySciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16536     {
16537       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV const *>( &rhs );
16538       return *this;
16539     }
16540 
16541 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16542     VULKAN_HPP_CONSTEXPR_14 ExportMemorySciBufInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16543     {
16544       pNext = pNext_;
16545       return *this;
16546     }
16547 
setPAttributesVULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16548     VULKAN_HPP_CONSTEXPR_14 ExportMemorySciBufInfoNV & setPAttributes( NvSciBufAttrList pAttributes_ ) VULKAN_HPP_NOEXCEPT
16549     {
16550       pAttributes = pAttributes_;
16551       return *this;
16552     }
16553 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16554 
16555 
operator VkExportMemorySciBufInfoNV const&VULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16556     operator VkExportMemorySciBufInfoNV const &() const VULKAN_HPP_NOEXCEPT
16557     {
16558       return *reinterpret_cast<const VkExportMemorySciBufInfoNV*>( this );
16559     }
16560 
operator VkExportMemorySciBufInfoNV&VULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16561     operator VkExportMemorySciBufInfoNV &() VULKAN_HPP_NOEXCEPT
16562     {
16563       return *reinterpret_cast<VkExportMemorySciBufInfoNV*>( this );
16564     }
16565 
16566 #if defined( VULKAN_HPP_USE_REFLECT )
16567 #if 14 <= VULKAN_HPP_CPP_VERSION
16568     auto
16569 #else
16570     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, NvSciBufAttrList const &>
16571 #endif
reflectVULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16572       reflect() const VULKAN_HPP_NOEXCEPT
16573     {
16574       return std::tie( sType, pNext, pAttributes );
16575     }
16576 #endif
16577 
16578 
16579 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16580     std::strong_ordering operator<=>( ExportMemorySciBufInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16581     {
16582       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
16583       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
16584       if ( auto cmp = memcmp( &pAttributes, &rhs.pAttributes, sizeof( NvSciBufAttrList ) ); cmp != 0 )
16585         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
16586 
16587       return std::strong_ordering::equivalent;
16588     }
16589 #endif
16590 
operator ==VULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16591     bool operator==( ExportMemorySciBufInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16592     {
16593       return ( sType == rhs.sType )
16594           && ( pNext == rhs.pNext )
16595           && ( memcmp( &pAttributes, &rhs.pAttributes, sizeof( NvSciBufAttrList ) ) == 0 );
16596     }
16597 
operator !=VULKAN_HPP_NAMESPACE::ExportMemorySciBufInfoNV16598     bool operator!=( ExportMemorySciBufInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16599     {
16600       return !operator==( rhs );
16601     }
16602 
16603     public:
16604     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemorySciBufInfoNV;
16605     const void * pNext = {};
16606     NvSciBufAttrList pAttributes = {};
16607 
16608   };
16609 
16610   template <>
16611   struct CppType<StructureType, StructureType::eExportMemorySciBufInfoNV>
16612   {
16613     using Type = ExportMemorySciBufInfoNV;
16614   };
16615 #endif /*VK_USE_PLATFORM_SCI*/
16616 
16617   struct ExportSemaphoreCreateInfo
16618   {
16619     using NativeType = VkExportSemaphoreCreateInfo;
16620 
16621     static const bool allowDuplicate = false;
16622     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportSemaphoreCreateInfo;
16623 
16624 
16625 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportSemaphoreCreateInfoVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16626 VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo(VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16627     : pNext( pNext_ ), handleTypes( handleTypes_ )
16628     {}
16629 
16630     VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16631 
ExportSemaphoreCreateInfoVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16632     ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16633       : ExportSemaphoreCreateInfo( *reinterpret_cast<ExportSemaphoreCreateInfo const *>( &rhs ) )
16634     {}
16635 
16636 
16637     ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16638 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16639 
operator =VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16640     ExportSemaphoreCreateInfo & operator=( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
16641     {
16642       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo const *>( &rhs );
16643       return *this;
16644     }
16645 
16646 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16647     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16648     {
16649       pNext = pNext_;
16650       return *this;
16651     }
16652 
setHandleTypesVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16653     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
16654     {
16655       handleTypes = handleTypes_;
16656       return *this;
16657     }
16658 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16659 
16660 
operator VkExportSemaphoreCreateInfo const&VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16661     operator VkExportSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT
16662     {
16663       return *reinterpret_cast<const VkExportSemaphoreCreateInfo*>( this );
16664     }
16665 
operator VkExportSemaphoreCreateInfo&VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16666     operator VkExportSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT
16667     {
16668       return *reinterpret_cast<VkExportSemaphoreCreateInfo*>( this );
16669     }
16670 
16671 #if defined( VULKAN_HPP_USE_REFLECT )
16672 #if 14 <= VULKAN_HPP_CPP_VERSION
16673     auto
16674 #else
16675     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &>
16676 #endif
reflectVULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16677       reflect() const VULKAN_HPP_NOEXCEPT
16678     {
16679       return std::tie( sType, pNext, handleTypes );
16680     }
16681 #endif
16682 
16683 
16684 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
16685 auto operator<=>( ExportSemaphoreCreateInfo const & ) const = default;
16686 #else
operator ==VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16687     bool operator==( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16688     {
16689 #if defined( VULKAN_HPP_USE_REFLECT )
16690       return this->reflect() == rhs.reflect();
16691 #else
16692       return ( sType == rhs.sType )
16693           && ( pNext == rhs.pNext )
16694           && ( handleTypes == rhs.handleTypes );
16695 #endif
16696     }
16697 
operator !=VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo16698     bool operator!=( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
16699     {
16700       return !operator==( rhs );
16701     }
16702 #endif
16703 
16704     public:
16705     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreCreateInfo;
16706     const void * pNext = {};
16707     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes = {};
16708 
16709   };
16710 
16711   template <>
16712   struct CppType<StructureType, StructureType::eExportSemaphoreCreateInfo>
16713   {
16714     using Type = ExportSemaphoreCreateInfo;
16715   };
16716   using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo;
16717 
16718 #if defined( VK_USE_PLATFORM_SCI )
16719   struct ExportSemaphoreSciSyncInfoNV
16720   {
16721     using NativeType = VkExportSemaphoreSciSyncInfoNV;
16722 
16723     static const bool allowDuplicate = false;
16724     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportSemaphoreSciSyncInfoNV;
16725 
16726 
16727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExportSemaphoreSciSyncInfoNVVULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16728 VULKAN_HPP_CONSTEXPR ExportSemaphoreSciSyncInfoNV(NvSciSyncAttrList pAttributes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16729     : pNext( pNext_ ), pAttributes( pAttributes_ )
16730     {}
16731 
16732     VULKAN_HPP_CONSTEXPR ExportSemaphoreSciSyncInfoNV( ExportSemaphoreSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16733 
ExportSemaphoreSciSyncInfoNVVULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16734     ExportSemaphoreSciSyncInfoNV( VkExportSemaphoreSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16735       : ExportSemaphoreSciSyncInfoNV( *reinterpret_cast<ExportSemaphoreSciSyncInfoNV const *>( &rhs ) )
16736     {}
16737 
16738 
16739     ExportSemaphoreSciSyncInfoNV & operator=( ExportSemaphoreSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16740 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16741 
operator =VULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16742     ExportSemaphoreSciSyncInfoNV & operator=( VkExportSemaphoreSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
16743     {
16744       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV const *>( &rhs );
16745       return *this;
16746     }
16747 
16748 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16749     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreSciSyncInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
16750     {
16751       pNext = pNext_;
16752       return *this;
16753     }
16754 
setPAttributesVULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16755     VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreSciSyncInfoNV & setPAttributes( NvSciSyncAttrList pAttributes_ ) VULKAN_HPP_NOEXCEPT
16756     {
16757       pAttributes = pAttributes_;
16758       return *this;
16759     }
16760 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
16761 
16762 
operator VkExportSemaphoreSciSyncInfoNV const&VULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16763     operator VkExportSemaphoreSciSyncInfoNV const &() const VULKAN_HPP_NOEXCEPT
16764     {
16765       return *reinterpret_cast<const VkExportSemaphoreSciSyncInfoNV*>( this );
16766     }
16767 
operator VkExportSemaphoreSciSyncInfoNV&VULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16768     operator VkExportSemaphoreSciSyncInfoNV &() VULKAN_HPP_NOEXCEPT
16769     {
16770       return *reinterpret_cast<VkExportSemaphoreSciSyncInfoNV*>( this );
16771     }
16772 
16773 #if defined( VULKAN_HPP_USE_REFLECT )
16774 #if 14 <= VULKAN_HPP_CPP_VERSION
16775     auto
16776 #else
16777     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, NvSciSyncAttrList const &>
16778 #endif
reflectVULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16779       reflect() const VULKAN_HPP_NOEXCEPT
16780     {
16781       return std::tie( sType, pNext, pAttributes );
16782     }
16783 #endif
16784 
16785 
16786 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16787     std::strong_ordering operator<=>( ExportSemaphoreSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16788     {
16789       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
16790       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
16791       if ( auto cmp = memcmp( &pAttributes, &rhs.pAttributes, sizeof( NvSciSyncAttrList ) ); cmp != 0 )
16792         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
16793 
16794       return std::strong_ordering::equivalent;
16795     }
16796 #endif
16797 
operator ==VULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16798     bool operator==( ExportSemaphoreSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16799     {
16800       return ( sType == rhs.sType )
16801           && ( pNext == rhs.pNext )
16802           && ( memcmp( &pAttributes, &rhs.pAttributes, sizeof( NvSciSyncAttrList ) ) == 0 );
16803     }
16804 
operator !=VULKAN_HPP_NAMESPACE::ExportSemaphoreSciSyncInfoNV16805     bool operator!=( ExportSemaphoreSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
16806     {
16807       return !operator==( rhs );
16808     }
16809 
16810     public:
16811     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreSciSyncInfoNV;
16812     const void * pNext = {};
16813     NvSciSyncAttrList pAttributes = {};
16814 
16815   };
16816 
16817   template <>
16818   struct CppType<StructureType, StructureType::eExportSemaphoreSciSyncInfoNV>
16819   {
16820     using Type = ExportSemaphoreSciSyncInfoNV;
16821   };
16822 #endif /*VK_USE_PLATFORM_SCI*/
16823 
16824   struct ExtensionProperties
16825   {
16826     using NativeType = VkExtensionProperties;
16827 
16828 
16829 
16830 
16831 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties16832 VULKAN_HPP_CONSTEXPR_14 ExtensionProperties(std::array<char,VK_MAX_EXTENSION_NAME_SIZE> const & extensionName_ = {}, uint32_t specVersion_ = {}) VULKAN_HPP_NOEXCEPT
16833     : extensionName( extensionName_ ), specVersion( specVersion_ )
16834     {}
16835 
16836     VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16837 
ExtensionPropertiesVULKAN_HPP_NAMESPACE::ExtensionProperties16838     ExtensionProperties( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
16839       : ExtensionProperties( *reinterpret_cast<ExtensionProperties const *>( &rhs ) )
16840     {}
16841 
16842 
16843     ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16844 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16845 
operator =VULKAN_HPP_NAMESPACE::ExtensionProperties16846     ExtensionProperties & operator=( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT
16847     {
16848       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExtensionProperties const *>( &rhs );
16849       return *this;
16850     }
16851 
16852 
operator VkExtensionProperties const&VULKAN_HPP_NAMESPACE::ExtensionProperties16853     operator VkExtensionProperties const &() const VULKAN_HPP_NOEXCEPT
16854     {
16855       return *reinterpret_cast<const VkExtensionProperties*>( this );
16856     }
16857 
operator VkExtensionProperties&VULKAN_HPP_NAMESPACE::ExtensionProperties16858     operator VkExtensionProperties &() VULKAN_HPP_NOEXCEPT
16859     {
16860       return *reinterpret_cast<VkExtensionProperties*>( this );
16861     }
16862 
16863 #if defined( VULKAN_HPP_USE_REFLECT )
16864 #if 14 <= VULKAN_HPP_CPP_VERSION
16865     auto
16866 #else
16867     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &, uint32_t const &>
16868 #endif
reflectVULKAN_HPP_NAMESPACE::ExtensionProperties16869       reflect() const VULKAN_HPP_NOEXCEPT
16870     {
16871       return std::tie( extensionName, specVersion );
16872     }
16873 #endif
16874 
16875 
16876 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
16877 auto operator<=>( ExtensionProperties const & ) const = default;
16878 #else
operator ==VULKAN_HPP_NAMESPACE::ExtensionProperties16879     bool operator==( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
16880     {
16881 #if defined( VULKAN_HPP_USE_REFLECT )
16882       return this->reflect() == rhs.reflect();
16883 #else
16884       return ( extensionName == rhs.extensionName )
16885           && ( specVersion == rhs.specVersion );
16886 #endif
16887     }
16888 
operator !=VULKAN_HPP_NAMESPACE::ExtensionProperties16889     bool operator!=( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
16890     {
16891       return !operator==( rhs );
16892     }
16893 #endif
16894 
16895     public:
16896     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> extensionName = {};
16897     uint32_t specVersion = {};
16898 
16899   };
16900 
16901   struct ExternalMemoryProperties
16902   {
16903     using NativeType = VkExternalMemoryProperties;
16904 
16905 
16906 
16907 
16908 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryPropertiesVULKAN_HPP_NAMESPACE::ExternalMemoryProperties16909 VULKAN_HPP_CONSTEXPR ExternalMemoryProperties(VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags externalMemoryFeatures_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes_ = {}) VULKAN_HPP_NOEXCEPT
16910     : externalMemoryFeatures( externalMemoryFeatures_ ), exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ), compatibleHandleTypes( compatibleHandleTypes_ )
16911     {}
16912 
16913     VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16914 
ExternalMemoryPropertiesVULKAN_HPP_NAMESPACE::ExternalMemoryProperties16915     ExternalMemoryProperties( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
16916       : ExternalMemoryProperties( *reinterpret_cast<ExternalMemoryProperties const *>( &rhs ) )
16917     {}
16918 
16919 
16920     ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16921 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
16922 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryProperties16923     ExternalMemoryProperties & operator=( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
16924     {
16925       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const *>( &rhs );
16926       return *this;
16927     }
16928 
16929 
operator VkExternalMemoryProperties const&VULKAN_HPP_NAMESPACE::ExternalMemoryProperties16930     operator VkExternalMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
16931     {
16932       return *reinterpret_cast<const VkExternalMemoryProperties*>( this );
16933     }
16934 
operator VkExternalMemoryProperties&VULKAN_HPP_NAMESPACE::ExternalMemoryProperties16935     operator VkExternalMemoryProperties &() VULKAN_HPP_NOEXCEPT
16936     {
16937       return *reinterpret_cast<VkExternalMemoryProperties*>( this );
16938     }
16939 
16940 #if defined( VULKAN_HPP_USE_REFLECT )
16941 #if 14 <= VULKAN_HPP_CPP_VERSION
16942     auto
16943 #else
16944     std::tuple<VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
16945 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryProperties16946       reflect() const VULKAN_HPP_NOEXCEPT
16947     {
16948       return std::tie( externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes );
16949     }
16950 #endif
16951 
16952 
16953 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
16954 auto operator<=>( ExternalMemoryProperties const & ) const = default;
16955 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryProperties16956     bool operator==( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
16957     {
16958 #if defined( VULKAN_HPP_USE_REFLECT )
16959       return this->reflect() == rhs.reflect();
16960 #else
16961       return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
16962           && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
16963           && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
16964 #endif
16965     }
16966 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryProperties16967     bool operator!=( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
16968     {
16969       return !operator==( rhs );
16970     }
16971 #endif
16972 
16973     public:
16974     VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags externalMemoryFeatures = {};
16975     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes = {};
16976     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes = {};
16977 
16978   };
16979   using ExternalMemoryPropertiesKHR = ExternalMemoryProperties;
16980 
16981   struct ExternalBufferProperties
16982   {
16983     using NativeType = VkExternalBufferProperties;
16984 
16985     static const bool allowDuplicate = false;
16986     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalBufferProperties;
16987 
16988 
16989 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalBufferPropertiesVULKAN_HPP_NAMESPACE::ExternalBufferProperties16990 VULKAN_HPP_CONSTEXPR ExternalBufferProperties(VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
16991     : pNext( pNext_ ), externalMemoryProperties( externalMemoryProperties_ )
16992     {}
16993 
16994     VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
16995 
ExternalBufferPropertiesVULKAN_HPP_NAMESPACE::ExternalBufferProperties16996     ExternalBufferProperties( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
16997       : ExternalBufferProperties( *reinterpret_cast<ExternalBufferProperties const *>( &rhs ) )
16998     {}
16999 
17000 
17001     ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17002 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17003 
operator =VULKAN_HPP_NAMESPACE::ExternalBufferProperties17004     ExternalBufferProperties & operator=( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT
17005     {
17006       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalBufferProperties const *>( &rhs );
17007       return *this;
17008     }
17009 
17010 
operator VkExternalBufferProperties const&VULKAN_HPP_NAMESPACE::ExternalBufferProperties17011     operator VkExternalBufferProperties const &() const VULKAN_HPP_NOEXCEPT
17012     {
17013       return *reinterpret_cast<const VkExternalBufferProperties*>( this );
17014     }
17015 
operator VkExternalBufferProperties&VULKAN_HPP_NAMESPACE::ExternalBufferProperties17016     operator VkExternalBufferProperties &() VULKAN_HPP_NOEXCEPT
17017     {
17018       return *reinterpret_cast<VkExternalBufferProperties*>( this );
17019     }
17020 
17021 #if defined( VULKAN_HPP_USE_REFLECT )
17022 #if 14 <= VULKAN_HPP_CPP_VERSION
17023     auto
17024 #else
17025     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const &>
17026 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalBufferProperties17027       reflect() const VULKAN_HPP_NOEXCEPT
17028     {
17029       return std::tie( sType, pNext, externalMemoryProperties );
17030     }
17031 #endif
17032 
17033 
17034 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17035 auto operator<=>( ExternalBufferProperties const & ) const = default;
17036 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalBufferProperties17037     bool operator==( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
17038     {
17039 #if defined( VULKAN_HPP_USE_REFLECT )
17040       return this->reflect() == rhs.reflect();
17041 #else
17042       return ( sType == rhs.sType )
17043           && ( pNext == rhs.pNext )
17044           && ( externalMemoryProperties == rhs.externalMemoryProperties );
17045 #endif
17046     }
17047 
operator !=VULKAN_HPP_NAMESPACE::ExternalBufferProperties17048     bool operator!=( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
17049     {
17050       return !operator==( rhs );
17051     }
17052 #endif
17053 
17054     public:
17055     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalBufferProperties;
17056     void * pNext = {};
17057     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
17058 
17059   };
17060 
17061   template <>
17062   struct CppType<StructureType, StructureType::eExternalBufferProperties>
17063   {
17064     using Type = ExternalBufferProperties;
17065   };
17066   using ExternalBufferPropertiesKHR = ExternalBufferProperties;
17067 
17068   struct ExternalFenceProperties
17069   {
17070     using NativeType = VkExternalFenceProperties;
17071 
17072     static const bool allowDuplicate = false;
17073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFenceProperties;
17074 
17075 
17076 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFencePropertiesVULKAN_HPP_NAMESPACE::ExternalFenceProperties17077 VULKAN_HPP_CONSTEXPR ExternalFenceProperties(VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags externalFenceFeatures_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17078     : pNext( pNext_ ), exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ), compatibleHandleTypes( compatibleHandleTypes_ ), externalFenceFeatures( externalFenceFeatures_ )
17079     {}
17080 
17081     VULKAN_HPP_CONSTEXPR ExternalFenceProperties( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17082 
ExternalFencePropertiesVULKAN_HPP_NAMESPACE::ExternalFenceProperties17083     ExternalFenceProperties( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
17084       : ExternalFenceProperties( *reinterpret_cast<ExternalFenceProperties const *>( &rhs ) )
17085     {}
17086 
17087 
17088     ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17089 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17090 
operator =VULKAN_HPP_NAMESPACE::ExternalFenceProperties17091     ExternalFenceProperties & operator=( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
17092     {
17093       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFenceProperties const *>( &rhs );
17094       return *this;
17095     }
17096 
17097 
operator VkExternalFenceProperties const&VULKAN_HPP_NAMESPACE::ExternalFenceProperties17098     operator VkExternalFenceProperties const &() const VULKAN_HPP_NOEXCEPT
17099     {
17100       return *reinterpret_cast<const VkExternalFenceProperties*>( this );
17101     }
17102 
operator VkExternalFenceProperties&VULKAN_HPP_NAMESPACE::ExternalFenceProperties17103     operator VkExternalFenceProperties &() VULKAN_HPP_NOEXCEPT
17104     {
17105       return *reinterpret_cast<VkExternalFenceProperties*>( this );
17106     }
17107 
17108 #if defined( VULKAN_HPP_USE_REFLECT )
17109 #if 14 <= VULKAN_HPP_CPP_VERSION
17110     auto
17111 #else
17112     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags const &, VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags const &>
17113 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalFenceProperties17114       reflect() const VULKAN_HPP_NOEXCEPT
17115     {
17116       return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalFenceFeatures );
17117     }
17118 #endif
17119 
17120 
17121 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17122 auto operator<=>( ExternalFenceProperties const & ) const = default;
17123 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalFenceProperties17124     bool operator==( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
17125     {
17126 #if defined( VULKAN_HPP_USE_REFLECT )
17127       return this->reflect() == rhs.reflect();
17128 #else
17129       return ( sType == rhs.sType )
17130           && ( pNext == rhs.pNext )
17131           && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
17132           && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
17133           && ( externalFenceFeatures == rhs.externalFenceFeatures );
17134 #endif
17135     }
17136 
operator !=VULKAN_HPP_NAMESPACE::ExternalFenceProperties17137     bool operator!=( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
17138     {
17139       return !operator==( rhs );
17140     }
17141 #endif
17142 
17143     public:
17144     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFenceProperties;
17145     void * pNext = {};
17146     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes = {};
17147     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes = {};
17148     VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags externalFenceFeatures = {};
17149 
17150   };
17151 
17152   template <>
17153   struct CppType<StructureType, StructureType::eExternalFenceProperties>
17154   {
17155     using Type = ExternalFenceProperties;
17156   };
17157   using ExternalFencePropertiesKHR = ExternalFenceProperties;
17158 
17159 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
17160   struct ExternalFormatQNX
17161   {
17162     using NativeType = VkExternalFormatQNX;
17163 
17164     static const bool allowDuplicate = false;
17165     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFormatQNX;
17166 
17167 
17168 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalFormatQNXVULKAN_HPP_NAMESPACE::ExternalFormatQNX17169 VULKAN_HPP_CONSTEXPR ExternalFormatQNX(uint64_t externalFormat_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17170     : pNext( pNext_ ), externalFormat( externalFormat_ )
17171     {}
17172 
17173     VULKAN_HPP_CONSTEXPR ExternalFormatQNX( ExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17174 
ExternalFormatQNXVULKAN_HPP_NAMESPACE::ExternalFormatQNX17175     ExternalFormatQNX( VkExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT
17176       : ExternalFormatQNX( *reinterpret_cast<ExternalFormatQNX const *>( &rhs ) )
17177     {}
17178 
17179 
17180     ExternalFormatQNX & operator=( ExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17181 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17182 
operator =VULKAN_HPP_NAMESPACE::ExternalFormatQNX17183     ExternalFormatQNX & operator=( VkExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT
17184     {
17185       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalFormatQNX const *>( &rhs );
17186       return *this;
17187     }
17188 
17189 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalFormatQNX17190     VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
17191     {
17192       pNext = pNext_;
17193       return *this;
17194     }
17195 
setExternalFormatVULKAN_HPP_NAMESPACE::ExternalFormatQNX17196     VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX & setExternalFormat( uint64_t externalFormat_ ) VULKAN_HPP_NOEXCEPT
17197     {
17198       externalFormat = externalFormat_;
17199       return *this;
17200     }
17201 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17202 
17203 
operator VkExternalFormatQNX const&VULKAN_HPP_NAMESPACE::ExternalFormatQNX17204     operator VkExternalFormatQNX const &() const VULKAN_HPP_NOEXCEPT
17205     {
17206       return *reinterpret_cast<const VkExternalFormatQNX*>( this );
17207     }
17208 
operator VkExternalFormatQNX&VULKAN_HPP_NAMESPACE::ExternalFormatQNX17209     operator VkExternalFormatQNX &() VULKAN_HPP_NOEXCEPT
17210     {
17211       return *reinterpret_cast<VkExternalFormatQNX*>( this );
17212     }
17213 
17214 #if defined( VULKAN_HPP_USE_REFLECT )
17215 #if 14 <= VULKAN_HPP_CPP_VERSION
17216     auto
17217 #else
17218     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
17219 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalFormatQNX17220       reflect() const VULKAN_HPP_NOEXCEPT
17221     {
17222       return std::tie( sType, pNext, externalFormat );
17223     }
17224 #endif
17225 
17226 
17227 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17228 auto operator<=>( ExternalFormatQNX const & ) const = default;
17229 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalFormatQNX17230     bool operator==( ExternalFormatQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
17231     {
17232 #if defined( VULKAN_HPP_USE_REFLECT )
17233       return this->reflect() == rhs.reflect();
17234 #else
17235       return ( sType == rhs.sType )
17236           && ( pNext == rhs.pNext )
17237           && ( externalFormat == rhs.externalFormat );
17238 #endif
17239     }
17240 
operator !=VULKAN_HPP_NAMESPACE::ExternalFormatQNX17241     bool operator!=( ExternalFormatQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
17242     {
17243       return !operator==( rhs );
17244     }
17245 #endif
17246 
17247     public:
17248     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFormatQNX;
17249     void * pNext = {};
17250     uint64_t externalFormat = {};
17251 
17252   };
17253 
17254   template <>
17255   struct CppType<StructureType, StructureType::eExternalFormatQNX>
17256   {
17257     using Type = ExternalFormatQNX;
17258   };
17259 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
17260 
17261   struct ExternalImageFormatProperties
17262   {
17263     using NativeType = VkExternalImageFormatProperties;
17264 
17265     static const bool allowDuplicate = false;
17266     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalImageFormatProperties;
17267 
17268 
17269 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalImageFormatPropertiesVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties17270 VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties(VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17271     : pNext( pNext_ ), externalMemoryProperties( externalMemoryProperties_ )
17272     {}
17273 
17274     VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17275 
ExternalImageFormatPropertiesVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties17276     ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
17277       : ExternalImageFormatProperties( *reinterpret_cast<ExternalImageFormatProperties const *>( &rhs ) )
17278     {}
17279 
17280 
17281     ExternalImageFormatProperties & operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17282 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17283 
operator =VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties17284     ExternalImageFormatProperties & operator=( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
17285     {
17286       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties const *>( &rhs );
17287       return *this;
17288     }
17289 
17290 
operator VkExternalImageFormatProperties const&VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties17291     operator VkExternalImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
17292     {
17293       return *reinterpret_cast<const VkExternalImageFormatProperties*>( this );
17294     }
17295 
operator VkExternalImageFormatProperties&VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties17296     operator VkExternalImageFormatProperties &() VULKAN_HPP_NOEXCEPT
17297     {
17298       return *reinterpret_cast<VkExternalImageFormatProperties*>( this );
17299     }
17300 
17301 #if defined( VULKAN_HPP_USE_REFLECT )
17302 #if 14 <= VULKAN_HPP_CPP_VERSION
17303     auto
17304 #else
17305     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const &>
17306 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalImageFormatProperties17307       reflect() const VULKAN_HPP_NOEXCEPT
17308     {
17309       return std::tie( sType, pNext, externalMemoryProperties );
17310     }
17311 #endif
17312 
17313 
17314 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17315 auto operator<=>( ExternalImageFormatProperties const & ) const = default;
17316 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties17317     bool operator==( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
17318     {
17319 #if defined( VULKAN_HPP_USE_REFLECT )
17320       return this->reflect() == rhs.reflect();
17321 #else
17322       return ( sType == rhs.sType )
17323           && ( pNext == rhs.pNext )
17324           && ( externalMemoryProperties == rhs.externalMemoryProperties );
17325 #endif
17326     }
17327 
operator !=VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties17328     bool operator!=( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
17329     {
17330       return !operator==( rhs );
17331     }
17332 #endif
17333 
17334     public:
17335     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalImageFormatProperties;
17336     void * pNext = {};
17337     VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {};
17338 
17339   };
17340 
17341   template <>
17342   struct CppType<StructureType, StructureType::eExternalImageFormatProperties>
17343   {
17344     using Type = ExternalImageFormatProperties;
17345   };
17346   using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties;
17347 
17348   struct ExternalMemoryBufferCreateInfo
17349   {
17350     using NativeType = VkExternalMemoryBufferCreateInfo;
17351 
17352     static const bool allowDuplicate = false;
17353     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryBufferCreateInfo;
17354 
17355 
17356 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryBufferCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17357 VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17358     : pNext( pNext_ ), handleTypes( handleTypes_ )
17359     {}
17360 
17361     VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17362 
ExternalMemoryBufferCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17363     ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
17364       : ExternalMemoryBufferCreateInfo( *reinterpret_cast<ExternalMemoryBufferCreateInfo const *>( &rhs ) )
17365     {}
17366 
17367 
17368     ExternalMemoryBufferCreateInfo & operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17369 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17370 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17371     ExternalMemoryBufferCreateInfo & operator=( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
17372     {
17373       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo const *>( &rhs );
17374       return *this;
17375     }
17376 
17377 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17378     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17379     {
17380       pNext = pNext_;
17381       return *this;
17382     }
17383 
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17384     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
17385     {
17386       handleTypes = handleTypes_;
17387       return *this;
17388     }
17389 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17390 
17391 
operator VkExternalMemoryBufferCreateInfo const&VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17392     operator VkExternalMemoryBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
17393     {
17394       return *reinterpret_cast<const VkExternalMemoryBufferCreateInfo*>( this );
17395     }
17396 
operator VkExternalMemoryBufferCreateInfo&VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17397     operator VkExternalMemoryBufferCreateInfo &() VULKAN_HPP_NOEXCEPT
17398     {
17399       return *reinterpret_cast<VkExternalMemoryBufferCreateInfo*>( this );
17400     }
17401 
17402 #if defined( VULKAN_HPP_USE_REFLECT )
17403 #if 14 <= VULKAN_HPP_CPP_VERSION
17404     auto
17405 #else
17406     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
17407 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17408       reflect() const VULKAN_HPP_NOEXCEPT
17409     {
17410       return std::tie( sType, pNext, handleTypes );
17411     }
17412 #endif
17413 
17414 
17415 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17416 auto operator<=>( ExternalMemoryBufferCreateInfo const & ) const = default;
17417 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17418     bool operator==( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
17419     {
17420 #if defined( VULKAN_HPP_USE_REFLECT )
17421       return this->reflect() == rhs.reflect();
17422 #else
17423       return ( sType == rhs.sType )
17424           && ( pNext == rhs.pNext )
17425           && ( handleTypes == rhs.handleTypes );
17426 #endif
17427     }
17428 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo17429     bool operator!=( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
17430     {
17431       return !operator==( rhs );
17432     }
17433 #endif
17434 
17435     public:
17436     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryBufferCreateInfo;
17437     const void * pNext = {};
17438     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
17439 
17440   };
17441 
17442   template <>
17443   struct CppType<StructureType, StructureType::eExternalMemoryBufferCreateInfo>
17444   {
17445     using Type = ExternalMemoryBufferCreateInfo;
17446   };
17447   using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo;
17448 
17449   struct ExternalMemoryImageCreateInfo
17450   {
17451     using NativeType = VkExternalMemoryImageCreateInfo;
17452 
17453     static const bool allowDuplicate = false;
17454     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryImageCreateInfo;
17455 
17456 
17457 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalMemoryImageCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17458 VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17459     : pNext( pNext_ ), handleTypes( handleTypes_ )
17460     {}
17461 
17462     VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17463 
ExternalMemoryImageCreateInfoVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17464     ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
17465       : ExternalMemoryImageCreateInfo( *reinterpret_cast<ExternalMemoryImageCreateInfo const *>( &rhs ) )
17466     {}
17467 
17468 
17469     ExternalMemoryImageCreateInfo & operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17470 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17471 
operator =VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17472     ExternalMemoryImageCreateInfo & operator=( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
17473     {
17474       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo const *>( &rhs );
17475       return *this;
17476     }
17477 
17478 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17479     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17480     {
17481       pNext = pNext_;
17482       return *this;
17483     }
17484 
setHandleTypesVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17485     VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT
17486     {
17487       handleTypes = handleTypes_;
17488       return *this;
17489     }
17490 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17491 
17492 
operator VkExternalMemoryImageCreateInfo const&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17493     operator VkExternalMemoryImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
17494     {
17495       return *reinterpret_cast<const VkExternalMemoryImageCreateInfo*>( this );
17496     }
17497 
operator VkExternalMemoryImageCreateInfo&VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17498     operator VkExternalMemoryImageCreateInfo &() VULKAN_HPP_NOEXCEPT
17499     {
17500       return *reinterpret_cast<VkExternalMemoryImageCreateInfo*>( this );
17501     }
17502 
17503 #if defined( VULKAN_HPP_USE_REFLECT )
17504 #if 14 <= VULKAN_HPP_CPP_VERSION
17505     auto
17506 #else
17507     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags const &>
17508 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17509       reflect() const VULKAN_HPP_NOEXCEPT
17510     {
17511       return std::tie( sType, pNext, handleTypes );
17512     }
17513 #endif
17514 
17515 
17516 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17517 auto operator<=>( ExternalMemoryImageCreateInfo const & ) const = default;
17518 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17519     bool operator==( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
17520     {
17521 #if defined( VULKAN_HPP_USE_REFLECT )
17522       return this->reflect() == rhs.reflect();
17523 #else
17524       return ( sType == rhs.sType )
17525           && ( pNext == rhs.pNext )
17526           && ( handleTypes == rhs.handleTypes );
17527 #endif
17528     }
17529 
operator !=VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo17530     bool operator!=( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
17531     {
17532       return !operator==( rhs );
17533     }
17534 #endif
17535 
17536     public:
17537     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfo;
17538     const void * pNext = {};
17539     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {};
17540 
17541   };
17542 
17543   template <>
17544   struct CppType<StructureType, StructureType::eExternalMemoryImageCreateInfo>
17545   {
17546     using Type = ExternalMemoryImageCreateInfo;
17547   };
17548   using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo;
17549 
17550   struct ExternalSemaphoreProperties
17551   {
17552     using NativeType = VkExternalSemaphoreProperties;
17553 
17554     static const bool allowDuplicate = false;
17555     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalSemaphoreProperties;
17556 
17557 
17558 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ExternalSemaphorePropertiesVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties17559 VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties(VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags externalSemaphoreFeatures_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17560     : pNext( pNext_ ), exportFromImportedHandleTypes( exportFromImportedHandleTypes_ ), compatibleHandleTypes( compatibleHandleTypes_ ), externalSemaphoreFeatures( externalSemaphoreFeatures_ )
17561     {}
17562 
17563     VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17564 
ExternalSemaphorePropertiesVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties17565     ExternalSemaphoreProperties( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
17566       : ExternalSemaphoreProperties( *reinterpret_cast<ExternalSemaphoreProperties const *>( &rhs ) )
17567     {}
17568 
17569 
17570     ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17571 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17572 
operator =VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties17573     ExternalSemaphoreProperties & operator=( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
17574     {
17575       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties const *>( &rhs );
17576       return *this;
17577     }
17578 
17579 
operator VkExternalSemaphoreProperties const&VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties17580     operator VkExternalSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT
17581     {
17582       return *reinterpret_cast<const VkExternalSemaphoreProperties*>( this );
17583     }
17584 
operator VkExternalSemaphoreProperties&VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties17585     operator VkExternalSemaphoreProperties &() VULKAN_HPP_NOEXCEPT
17586     {
17587       return *reinterpret_cast<VkExternalSemaphoreProperties*>( this );
17588     }
17589 
17590 #if defined( VULKAN_HPP_USE_REFLECT )
17591 #if 14 <= VULKAN_HPP_CPP_VERSION
17592     auto
17593 #else
17594     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags const &>
17595 #endif
reflectVULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties17596       reflect() const VULKAN_HPP_NOEXCEPT
17597     {
17598       return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalSemaphoreFeatures );
17599     }
17600 #endif
17601 
17602 
17603 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17604 auto operator<=>( ExternalSemaphoreProperties const & ) const = default;
17605 #else
operator ==VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties17606     bool operator==( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
17607     {
17608 #if defined( VULKAN_HPP_USE_REFLECT )
17609       return this->reflect() == rhs.reflect();
17610 #else
17611       return ( sType == rhs.sType )
17612           && ( pNext == rhs.pNext )
17613           && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
17614           && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
17615           && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
17616 #endif
17617     }
17618 
operator !=VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties17619     bool operator!=( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
17620     {
17621       return !operator==( rhs );
17622     }
17623 #endif
17624 
17625     public:
17626     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalSemaphoreProperties;
17627     void * pNext = {};
17628     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes = {};
17629     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes = {};
17630     VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags externalSemaphoreFeatures = {};
17631 
17632   };
17633 
17634   template <>
17635   struct CppType<StructureType, StructureType::eExternalSemaphoreProperties>
17636   {
17637     using Type = ExternalSemaphoreProperties;
17638   };
17639   using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties;
17640 
17641   struct FaultData
17642   {
17643     using NativeType = VkFaultData;
17644 
17645     static const bool allowDuplicate = false;
17646     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFaultData;
17647 
17648 
17649 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FaultDataVULKAN_HPP_NAMESPACE::FaultData17650 VULKAN_HPP_CONSTEXPR FaultData(VULKAN_HPP_NAMESPACE::FaultLevel faultLevel_ = VULKAN_HPP_NAMESPACE::FaultLevel::eUnassigned, VULKAN_HPP_NAMESPACE::FaultType faultType_ = VULKAN_HPP_NAMESPACE::FaultType::eInvalid, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17651     : pNext( pNext_ ), faultLevel( faultLevel_ ), faultType( faultType_ )
17652     {}
17653 
17654     VULKAN_HPP_CONSTEXPR FaultData( FaultData const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17655 
FaultDataVULKAN_HPP_NAMESPACE::FaultData17656     FaultData( VkFaultData const & rhs ) VULKAN_HPP_NOEXCEPT
17657       : FaultData( *reinterpret_cast<FaultData const *>( &rhs ) )
17658     {}
17659 
17660 
17661     FaultData & operator=( FaultData const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17662 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17663 
operator =VULKAN_HPP_NAMESPACE::FaultData17664     FaultData & operator=( VkFaultData const & rhs ) VULKAN_HPP_NOEXCEPT
17665     {
17666       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FaultData const *>( &rhs );
17667       return *this;
17668     }
17669 
17670 
operator VkFaultData const&VULKAN_HPP_NAMESPACE::FaultData17671     operator VkFaultData const &() const VULKAN_HPP_NOEXCEPT
17672     {
17673       return *reinterpret_cast<const VkFaultData*>( this );
17674     }
17675 
operator VkFaultData&VULKAN_HPP_NAMESPACE::FaultData17676     operator VkFaultData &() VULKAN_HPP_NOEXCEPT
17677     {
17678       return *reinterpret_cast<VkFaultData*>( this );
17679     }
17680 
17681 #if defined( VULKAN_HPP_USE_REFLECT )
17682 #if 14 <= VULKAN_HPP_CPP_VERSION
17683     auto
17684 #else
17685     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::FaultLevel const &, VULKAN_HPP_NAMESPACE::FaultType const &>
17686 #endif
reflectVULKAN_HPP_NAMESPACE::FaultData17687       reflect() const VULKAN_HPP_NOEXCEPT
17688     {
17689       return std::tie( sType, pNext, faultLevel, faultType );
17690     }
17691 #endif
17692 
17693 
17694 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17695 auto operator<=>( FaultData const & ) const = default;
17696 #else
operator ==VULKAN_HPP_NAMESPACE::FaultData17697     bool operator==( FaultData const & rhs ) const VULKAN_HPP_NOEXCEPT
17698     {
17699 #if defined( VULKAN_HPP_USE_REFLECT )
17700       return this->reflect() == rhs.reflect();
17701 #else
17702       return ( sType == rhs.sType )
17703           && ( pNext == rhs.pNext )
17704           && ( faultLevel == rhs.faultLevel )
17705           && ( faultType == rhs.faultType );
17706 #endif
17707     }
17708 
operator !=VULKAN_HPP_NAMESPACE::FaultData17709     bool operator!=( FaultData const & rhs ) const VULKAN_HPP_NOEXCEPT
17710     {
17711       return !operator==( rhs );
17712     }
17713 #endif
17714 
17715     public:
17716     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFaultData;
17717     void * pNext = {};
17718     VULKAN_HPP_NAMESPACE::FaultLevel faultLevel = VULKAN_HPP_NAMESPACE::FaultLevel::eUnassigned;
17719     VULKAN_HPP_NAMESPACE::FaultType faultType = VULKAN_HPP_NAMESPACE::FaultType::eInvalid;
17720 
17721   };
17722 
17723   template <>
17724   struct CppType<StructureType, StructureType::eFaultData>
17725   {
17726     using Type = FaultData;
17727   };
17728 
17729   struct FaultCallbackInfo
17730   {
17731     using NativeType = VkFaultCallbackInfo;
17732 
17733     static const bool allowDuplicate = false;
17734     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFaultCallbackInfo;
17735 
17736 
17737 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FaultCallbackInfoVULKAN_HPP_NAMESPACE::FaultCallbackInfo17738 VULKAN_HPP_CONSTEXPR FaultCallbackInfo(uint32_t faultCount_ = {}, VULKAN_HPP_NAMESPACE::FaultData * pFaults_ = {}, PFN_vkFaultCallbackFunction pfnFaultCallback_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17739     : pNext( pNext_ ), faultCount( faultCount_ ), pFaults( pFaults_ ), pfnFaultCallback( pfnFaultCallback_ )
17740     {}
17741 
17742     VULKAN_HPP_CONSTEXPR FaultCallbackInfo( FaultCallbackInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17743 
FaultCallbackInfoVULKAN_HPP_NAMESPACE::FaultCallbackInfo17744     FaultCallbackInfo( VkFaultCallbackInfo const & rhs ) VULKAN_HPP_NOEXCEPT
17745       : FaultCallbackInfo( *reinterpret_cast<FaultCallbackInfo const *>( &rhs ) )
17746     {}
17747 
17748 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FaultCallbackInfoVULKAN_HPP_NAMESPACE::FaultCallbackInfo17749     FaultCallbackInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::FaultData> const & faults_, PFN_vkFaultCallbackFunction pfnFaultCallback_ = {}, const void * pNext_ = nullptr )
17750     : pNext( pNext_ ), faultCount( static_cast<uint32_t>( faults_.size() ) ), pFaults( faults_.data() ), pfnFaultCallback( pfnFaultCallback_ )
17751     {}
17752 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17753 
17754 
17755     FaultCallbackInfo & operator=( FaultCallbackInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17756 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17757 
operator =VULKAN_HPP_NAMESPACE::FaultCallbackInfo17758     FaultCallbackInfo & operator=( VkFaultCallbackInfo const & rhs ) VULKAN_HPP_NOEXCEPT
17759     {
17760       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FaultCallbackInfo const *>( &rhs );
17761       return *this;
17762     }
17763 
17764 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FaultCallbackInfo17765     VULKAN_HPP_CONSTEXPR_14 FaultCallbackInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17766     {
17767       pNext = pNext_;
17768       return *this;
17769     }
17770 
setFaultCountVULKAN_HPP_NAMESPACE::FaultCallbackInfo17771     VULKAN_HPP_CONSTEXPR_14 FaultCallbackInfo & setFaultCount( uint32_t faultCount_ ) VULKAN_HPP_NOEXCEPT
17772     {
17773       faultCount = faultCount_;
17774       return *this;
17775     }
17776 
setPFaultsVULKAN_HPP_NAMESPACE::FaultCallbackInfo17777     VULKAN_HPP_CONSTEXPR_14 FaultCallbackInfo & setPFaults( VULKAN_HPP_NAMESPACE::FaultData * pFaults_ ) VULKAN_HPP_NOEXCEPT
17778     {
17779       pFaults = pFaults_;
17780       return *this;
17781     }
17782 
17783 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setFaultsVULKAN_HPP_NAMESPACE::FaultCallbackInfo17784     FaultCallbackInfo & setFaults( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::FaultData> const & faults_ ) VULKAN_HPP_NOEXCEPT
17785     {
17786       faultCount = static_cast<uint32_t>( faults_.size() );
17787       pFaults = faults_.data();
17788       return *this;
17789     }
17790 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
17791 
setPfnFaultCallbackVULKAN_HPP_NAMESPACE::FaultCallbackInfo17792     VULKAN_HPP_CONSTEXPR_14 FaultCallbackInfo & setPfnFaultCallback( PFN_vkFaultCallbackFunction pfnFaultCallback_ ) VULKAN_HPP_NOEXCEPT
17793     {
17794       pfnFaultCallback = pfnFaultCallback_;
17795       return *this;
17796     }
17797 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17798 
17799 
operator VkFaultCallbackInfo const&VULKAN_HPP_NAMESPACE::FaultCallbackInfo17800     operator VkFaultCallbackInfo const &() const VULKAN_HPP_NOEXCEPT
17801     {
17802       return *reinterpret_cast<const VkFaultCallbackInfo*>( this );
17803     }
17804 
operator VkFaultCallbackInfo&VULKAN_HPP_NAMESPACE::FaultCallbackInfo17805     operator VkFaultCallbackInfo &() VULKAN_HPP_NOEXCEPT
17806     {
17807       return *reinterpret_cast<VkFaultCallbackInfo*>( this );
17808     }
17809 
17810 #if defined( VULKAN_HPP_USE_REFLECT )
17811 #if 14 <= VULKAN_HPP_CPP_VERSION
17812     auto
17813 #else
17814     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::FaultData * const &, PFN_vkFaultCallbackFunction const &>
17815 #endif
reflectVULKAN_HPP_NAMESPACE::FaultCallbackInfo17816       reflect() const VULKAN_HPP_NOEXCEPT
17817     {
17818       return std::tie( sType, pNext, faultCount, pFaults, pfnFaultCallback );
17819     }
17820 #endif
17821 
17822 
17823 
17824 
17825 
operator ==VULKAN_HPP_NAMESPACE::FaultCallbackInfo17826     bool operator==( FaultCallbackInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
17827     {
17828 #if defined( VULKAN_HPP_USE_REFLECT )
17829       return this->reflect() == rhs.reflect();
17830 #else
17831       return ( sType == rhs.sType )
17832           && ( pNext == rhs.pNext )
17833           && ( faultCount == rhs.faultCount )
17834           && ( pFaults == rhs.pFaults )
17835           && ( pfnFaultCallback == rhs.pfnFaultCallback );
17836 #endif
17837     }
17838 
operator !=VULKAN_HPP_NAMESPACE::FaultCallbackInfo17839     bool operator!=( FaultCallbackInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
17840     {
17841       return !operator==( rhs );
17842     }
17843 
17844     public:
17845     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFaultCallbackInfo;
17846     const void * pNext = {};
17847     uint32_t faultCount = {};
17848     VULKAN_HPP_NAMESPACE::FaultData * pFaults = {};
17849     PFN_vkFaultCallbackFunction pfnFaultCallback = {};
17850 
17851   };
17852 
17853   template <>
17854   struct CppType<StructureType, StructureType::eFaultCallbackInfo>
17855   {
17856     using Type = FaultCallbackInfo;
17857   };
17858 
17859   struct FenceCreateInfo
17860   {
17861     using NativeType = VkFenceCreateInfo;
17862 
17863     static const bool allowDuplicate = false;
17864     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceCreateInfo;
17865 
17866 
17867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceCreateInfoVULKAN_HPP_NAMESPACE::FenceCreateInfo17868 VULKAN_HPP_CONSTEXPR FenceCreateInfo(VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17869     : pNext( pNext_ ), flags( flags_ )
17870     {}
17871 
17872     VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17873 
FenceCreateInfoVULKAN_HPP_NAMESPACE::FenceCreateInfo17874     FenceCreateInfo( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
17875       : FenceCreateInfo( *reinterpret_cast<FenceCreateInfo const *>( &rhs ) )
17876     {}
17877 
17878 
17879     FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17880 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17881 
operator =VULKAN_HPP_NAMESPACE::FenceCreateInfo17882     FenceCreateInfo & operator=( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
17883     {
17884       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceCreateInfo const *>( &rhs );
17885       return *this;
17886     }
17887 
17888 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceCreateInfo17889     VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17890     {
17891       pNext = pNext_;
17892       return *this;
17893     }
17894 
setFlagsVULKAN_HPP_NAMESPACE::FenceCreateInfo17895     VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
17896     {
17897       flags = flags_;
17898       return *this;
17899     }
17900 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
17901 
17902 
operator VkFenceCreateInfo const&VULKAN_HPP_NAMESPACE::FenceCreateInfo17903     operator VkFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
17904     {
17905       return *reinterpret_cast<const VkFenceCreateInfo*>( this );
17906     }
17907 
operator VkFenceCreateInfo&VULKAN_HPP_NAMESPACE::FenceCreateInfo17908     operator VkFenceCreateInfo &() VULKAN_HPP_NOEXCEPT
17909     {
17910       return *reinterpret_cast<VkFenceCreateInfo*>( this );
17911     }
17912 
17913 #if defined( VULKAN_HPP_USE_REFLECT )
17914 #if 14 <= VULKAN_HPP_CPP_VERSION
17915     auto
17916 #else
17917     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::FenceCreateFlags const &>
17918 #endif
reflectVULKAN_HPP_NAMESPACE::FenceCreateInfo17919       reflect() const VULKAN_HPP_NOEXCEPT
17920     {
17921       return std::tie( sType, pNext, flags );
17922     }
17923 #endif
17924 
17925 
17926 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
17927 auto operator<=>( FenceCreateInfo const & ) const = default;
17928 #else
operator ==VULKAN_HPP_NAMESPACE::FenceCreateInfo17929     bool operator==( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
17930     {
17931 #if defined( VULKAN_HPP_USE_REFLECT )
17932       return this->reflect() == rhs.reflect();
17933 #else
17934       return ( sType == rhs.sType )
17935           && ( pNext == rhs.pNext )
17936           && ( flags == rhs.flags );
17937 #endif
17938     }
17939 
operator !=VULKAN_HPP_NAMESPACE::FenceCreateInfo17940     bool operator!=( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
17941     {
17942       return !operator==( rhs );
17943     }
17944 #endif
17945 
17946     public:
17947     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceCreateInfo;
17948     const void * pNext = {};
17949     VULKAN_HPP_NAMESPACE::FenceCreateFlags flags = {};
17950 
17951   };
17952 
17953   template <>
17954   struct CppType<StructureType, StructureType::eFenceCreateInfo>
17955   {
17956     using Type = FenceCreateInfo;
17957   };
17958 
17959   struct FenceGetFdInfoKHR
17960   {
17961     using NativeType = VkFenceGetFdInfoKHR;
17962 
17963     static const bool allowDuplicate = false;
17964     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceGetFdInfoKHR;
17965 
17966 
17967 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceGetFdInfoKHRVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR17968 VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR(VULKAN_HPP_NAMESPACE::Fence fence_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
17969     : pNext( pNext_ ), fence( fence_ ), handleType( handleType_ )
17970     {}
17971 
17972     VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17973 
FenceGetFdInfoKHRVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR17974     FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
17975       : FenceGetFdInfoKHR( *reinterpret_cast<FenceGetFdInfoKHR const *>( &rhs ) )
17976     {}
17977 
17978 
17979     FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
17980 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
17981 
operator =VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR17982     FenceGetFdInfoKHR & operator=( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
17983     {
17984       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR const *>( &rhs );
17985       return *this;
17986     }
17987 
17988 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR17989     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
17990     {
17991       pNext = pNext_;
17992       return *this;
17993     }
17994 
setFenceVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR17995     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
17996     {
17997       fence = fence_;
17998       return *this;
17999     }
18000 
setHandleTypeVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR18001     VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
18002     {
18003       handleType = handleType_;
18004       return *this;
18005     }
18006 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18007 
18008 
operator VkFenceGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR18009     operator VkFenceGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
18010     {
18011       return *reinterpret_cast<const VkFenceGetFdInfoKHR*>( this );
18012     }
18013 
operator VkFenceGetFdInfoKHR&VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR18014     operator VkFenceGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
18015     {
18016       return *reinterpret_cast<VkFenceGetFdInfoKHR*>( this );
18017     }
18018 
18019 #if defined( VULKAN_HPP_USE_REFLECT )
18020 #if 14 <= VULKAN_HPP_CPP_VERSION
18021     auto
18022 #else
18023     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Fence const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
18024 #endif
reflectVULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR18025       reflect() const VULKAN_HPP_NOEXCEPT
18026     {
18027       return std::tie( sType, pNext, fence, handleType );
18028     }
18029 #endif
18030 
18031 
18032 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18033 auto operator<=>( FenceGetFdInfoKHR const & ) const = default;
18034 #else
operator ==VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR18035     bool operator==( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
18036     {
18037 #if defined( VULKAN_HPP_USE_REFLECT )
18038       return this->reflect() == rhs.reflect();
18039 #else
18040       return ( sType == rhs.sType )
18041           && ( pNext == rhs.pNext )
18042           && ( fence == rhs.fence )
18043           && ( handleType == rhs.handleType );
18044 #endif
18045     }
18046 
operator !=VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR18047     bool operator!=( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
18048     {
18049       return !operator==( rhs );
18050     }
18051 #endif
18052 
18053     public:
18054     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetFdInfoKHR;
18055     const void * pNext = {};
18056     VULKAN_HPP_NAMESPACE::Fence fence = {};
18057     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
18058 
18059   };
18060 
18061   template <>
18062   struct CppType<StructureType, StructureType::eFenceGetFdInfoKHR>
18063   {
18064     using Type = FenceGetFdInfoKHR;
18065   };
18066 
18067 #if defined( VK_USE_PLATFORM_SCI )
18068   struct FenceGetSciSyncInfoNV
18069   {
18070     using NativeType = VkFenceGetSciSyncInfoNV;
18071 
18072     static const bool allowDuplicate = false;
18073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceGetSciSyncInfoNV;
18074 
18075 
18076 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FenceGetSciSyncInfoNVVULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18077 VULKAN_HPP_CONSTEXPR FenceGetSciSyncInfoNV(VULKAN_HPP_NAMESPACE::Fence fence_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
18078     : pNext( pNext_ ), fence( fence_ ), handleType( handleType_ )
18079     {}
18080 
18081     VULKAN_HPP_CONSTEXPR FenceGetSciSyncInfoNV( FenceGetSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18082 
FenceGetSciSyncInfoNVVULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18083     FenceGetSciSyncInfoNV( VkFenceGetSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
18084       : FenceGetSciSyncInfoNV( *reinterpret_cast<FenceGetSciSyncInfoNV const *>( &rhs ) )
18085     {}
18086 
18087 
18088     FenceGetSciSyncInfoNV & operator=( FenceGetSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18089 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18090 
operator =VULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18091     FenceGetSciSyncInfoNV & operator=( VkFenceGetSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
18092     {
18093       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV const *>( &rhs );
18094       return *this;
18095     }
18096 
18097 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18098     VULKAN_HPP_CONSTEXPR_14 FenceGetSciSyncInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18099     {
18100       pNext = pNext_;
18101       return *this;
18102     }
18103 
setFenceVULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18104     VULKAN_HPP_CONSTEXPR_14 FenceGetSciSyncInfoNV & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
18105     {
18106       fence = fence_;
18107       return *this;
18108     }
18109 
setHandleTypeVULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18110     VULKAN_HPP_CONSTEXPR_14 FenceGetSciSyncInfoNV & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
18111     {
18112       handleType = handleType_;
18113       return *this;
18114     }
18115 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18116 
18117 
operator VkFenceGetSciSyncInfoNV const&VULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18118     operator VkFenceGetSciSyncInfoNV const &() const VULKAN_HPP_NOEXCEPT
18119     {
18120       return *reinterpret_cast<const VkFenceGetSciSyncInfoNV*>( this );
18121     }
18122 
operator VkFenceGetSciSyncInfoNV&VULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18123     operator VkFenceGetSciSyncInfoNV &() VULKAN_HPP_NOEXCEPT
18124     {
18125       return *reinterpret_cast<VkFenceGetSciSyncInfoNV*>( this );
18126     }
18127 
18128 #if defined( VULKAN_HPP_USE_REFLECT )
18129 #if 14 <= VULKAN_HPP_CPP_VERSION
18130     auto
18131 #else
18132     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Fence const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
18133 #endif
reflectVULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18134       reflect() const VULKAN_HPP_NOEXCEPT
18135     {
18136       return std::tie( sType, pNext, fence, handleType );
18137     }
18138 #endif
18139 
18140 
18141 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18142 auto operator<=>( FenceGetSciSyncInfoNV const & ) const = default;
18143 #else
operator ==VULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18144     bool operator==( FenceGetSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18145     {
18146 #if defined( VULKAN_HPP_USE_REFLECT )
18147       return this->reflect() == rhs.reflect();
18148 #else
18149       return ( sType == rhs.sType )
18150           && ( pNext == rhs.pNext )
18151           && ( fence == rhs.fence )
18152           && ( handleType == rhs.handleType );
18153 #endif
18154     }
18155 
operator !=VULKAN_HPP_NAMESPACE::FenceGetSciSyncInfoNV18156     bool operator!=( FenceGetSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
18157     {
18158       return !operator==( rhs );
18159     }
18160 #endif
18161 
18162     public:
18163     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetSciSyncInfoNV;
18164     const void * pNext = {};
18165     VULKAN_HPP_NAMESPACE::Fence fence = {};
18166     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
18167 
18168   };
18169 
18170   template <>
18171   struct CppType<StructureType, StructureType::eFenceGetSciSyncInfoNV>
18172   {
18173     using Type = FenceGetSciSyncInfoNV;
18174   };
18175 #endif /*VK_USE_PLATFORM_SCI*/
18176 
18177   struct FilterCubicImageViewImageFormatPropertiesEXT
18178   {
18179     using NativeType = VkFilterCubicImageViewImageFormatPropertiesEXT;
18180 
18181     static const bool allowDuplicate = false;
18182     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
18183 
18184 
18185 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FilterCubicImageViewImageFormatPropertiesEXTVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT18186 VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT(VULKAN_HPP_NAMESPACE::Bool32 filterCubic_ = {}, VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
18187     : pNext( pNext_ ), filterCubic( filterCubic_ ), filterCubicMinmax( filterCubicMinmax_ )
18188     {}
18189 
18190     VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18191 
FilterCubicImageViewImageFormatPropertiesEXTVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT18192     FilterCubicImageViewImageFormatPropertiesEXT( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18193       : FilterCubicImageViewImageFormatPropertiesEXT( *reinterpret_cast<FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs ) )
18194     {}
18195 
18196 
18197     FilterCubicImageViewImageFormatPropertiesEXT & operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18198 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18199 
operator =VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT18200     FilterCubicImageViewImageFormatPropertiesEXT & operator=( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
18201     {
18202       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT const *>( &rhs );
18203       return *this;
18204     }
18205 
18206 
operator VkFilterCubicImageViewImageFormatPropertiesEXT const&VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT18207     operator VkFilterCubicImageViewImageFormatPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
18208     {
18209       return *reinterpret_cast<const VkFilterCubicImageViewImageFormatPropertiesEXT*>( this );
18210     }
18211 
operator VkFilterCubicImageViewImageFormatPropertiesEXT&VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT18212     operator VkFilterCubicImageViewImageFormatPropertiesEXT &() VULKAN_HPP_NOEXCEPT
18213     {
18214       return *reinterpret_cast<VkFilterCubicImageViewImageFormatPropertiesEXT*>( this );
18215     }
18216 
18217 #if defined( VULKAN_HPP_USE_REFLECT )
18218 #if 14 <= VULKAN_HPP_CPP_VERSION
18219     auto
18220 #else
18221     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
18222 #endif
reflectVULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT18223       reflect() const VULKAN_HPP_NOEXCEPT
18224     {
18225       return std::tie( sType, pNext, filterCubic, filterCubicMinmax );
18226     }
18227 #endif
18228 
18229 
18230 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18231 auto operator<=>( FilterCubicImageViewImageFormatPropertiesEXT const & ) const = default;
18232 #else
operator ==VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT18233     bool operator==( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18234     {
18235 #if defined( VULKAN_HPP_USE_REFLECT )
18236       return this->reflect() == rhs.reflect();
18237 #else
18238       return ( sType == rhs.sType )
18239           && ( pNext == rhs.pNext )
18240           && ( filterCubic == rhs.filterCubic )
18241           && ( filterCubicMinmax == rhs.filterCubicMinmax );
18242 #endif
18243     }
18244 
operator !=VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT18245     bool operator!=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
18246     {
18247       return !operator==( rhs );
18248     }
18249 #endif
18250 
18251     public:
18252     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT;
18253     void * pNext = {};
18254     VULKAN_HPP_NAMESPACE::Bool32 filterCubic = {};
18255     VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax = {};
18256 
18257   };
18258 
18259   template <>
18260   struct CppType<StructureType, StructureType::eFilterCubicImageViewImageFormatPropertiesEXT>
18261   {
18262     using Type = FilterCubicImageViewImageFormatPropertiesEXT;
18263   };
18264 
18265   struct FormatProperties
18266   {
18267     using NativeType = VkFormatProperties;
18268 
18269 
18270 
18271 
18272 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatPropertiesVULKAN_HPP_NAMESPACE::FormatProperties18273 VULKAN_HPP_CONSTEXPR FormatProperties(VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures_ = {}) VULKAN_HPP_NOEXCEPT
18274     : linearTilingFeatures( linearTilingFeatures_ ), optimalTilingFeatures( optimalTilingFeatures_ ), bufferFeatures( bufferFeatures_ )
18275     {}
18276 
18277     VULKAN_HPP_CONSTEXPR FormatProperties( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18278 
FormatPropertiesVULKAN_HPP_NAMESPACE::FormatProperties18279     FormatProperties( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
18280       : FormatProperties( *reinterpret_cast<FormatProperties const *>( &rhs ) )
18281     {}
18282 
18283 
18284     FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18285 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18286 
operator =VULKAN_HPP_NAMESPACE::FormatProperties18287     FormatProperties & operator=( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
18288     {
18289       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties const *>( &rhs );
18290       return *this;
18291     }
18292 
18293 
operator VkFormatProperties const&VULKAN_HPP_NAMESPACE::FormatProperties18294     operator VkFormatProperties const &() const VULKAN_HPP_NOEXCEPT
18295     {
18296       return *reinterpret_cast<const VkFormatProperties*>( this );
18297     }
18298 
operator VkFormatProperties&VULKAN_HPP_NAMESPACE::FormatProperties18299     operator VkFormatProperties &() VULKAN_HPP_NOEXCEPT
18300     {
18301       return *reinterpret_cast<VkFormatProperties*>( this );
18302     }
18303 
18304 #if defined( VULKAN_HPP_USE_REFLECT )
18305 #if 14 <= VULKAN_HPP_CPP_VERSION
18306     auto
18307 #else
18308     std::tuple<VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &>
18309 #endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties18310       reflect() const VULKAN_HPP_NOEXCEPT
18311     {
18312       return std::tie( linearTilingFeatures, optimalTilingFeatures, bufferFeatures );
18313     }
18314 #endif
18315 
18316 
18317 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18318 auto operator<=>( FormatProperties const & ) const = default;
18319 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties18320     bool operator==( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
18321     {
18322 #if defined( VULKAN_HPP_USE_REFLECT )
18323       return this->reflect() == rhs.reflect();
18324 #else
18325       return ( linearTilingFeatures == rhs.linearTilingFeatures )
18326           && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
18327           && ( bufferFeatures == rhs.bufferFeatures );
18328 #endif
18329     }
18330 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties18331     bool operator!=( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
18332     {
18333       return !operator==( rhs );
18334     }
18335 #endif
18336 
18337     public:
18338     VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures = {};
18339     VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures = {};
18340     VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures = {};
18341 
18342   };
18343 
18344   struct FormatProperties2
18345   {
18346     using NativeType = VkFormatProperties2;
18347 
18348     static const bool allowDuplicate = false;
18349     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFormatProperties2;
18350 
18351 
18352 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatProperties2VULKAN_HPP_NAMESPACE::FormatProperties218353 VULKAN_HPP_CONSTEXPR FormatProperties2(VULKAN_HPP_NAMESPACE::FormatProperties formatProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
18354     : pNext( pNext_ ), formatProperties( formatProperties_ )
18355     {}
18356 
18357     VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18358 
FormatProperties2VULKAN_HPP_NAMESPACE::FormatProperties218359     FormatProperties2( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
18360       : FormatProperties2( *reinterpret_cast<FormatProperties2 const *>( &rhs ) )
18361     {}
18362 
18363 
18364     FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18365 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18366 
operator =VULKAN_HPP_NAMESPACE::FormatProperties218367     FormatProperties2 & operator=( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
18368     {
18369       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties2 const *>( &rhs );
18370       return *this;
18371     }
18372 
18373 
operator VkFormatProperties2 const&VULKAN_HPP_NAMESPACE::FormatProperties218374     operator VkFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
18375     {
18376       return *reinterpret_cast<const VkFormatProperties2*>( this );
18377     }
18378 
operator VkFormatProperties2&VULKAN_HPP_NAMESPACE::FormatProperties218379     operator VkFormatProperties2 &() VULKAN_HPP_NOEXCEPT
18380     {
18381       return *reinterpret_cast<VkFormatProperties2*>( this );
18382     }
18383 
18384 #if defined( VULKAN_HPP_USE_REFLECT )
18385 #if 14 <= VULKAN_HPP_CPP_VERSION
18386     auto
18387 #else
18388     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::FormatProperties const &>
18389 #endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties218390       reflect() const VULKAN_HPP_NOEXCEPT
18391     {
18392       return std::tie( sType, pNext, formatProperties );
18393     }
18394 #endif
18395 
18396 
18397 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18398 auto operator<=>( FormatProperties2 const & ) const = default;
18399 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties218400     bool operator==( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
18401     {
18402 #if defined( VULKAN_HPP_USE_REFLECT )
18403       return this->reflect() == rhs.reflect();
18404 #else
18405       return ( sType == rhs.sType )
18406           && ( pNext == rhs.pNext )
18407           && ( formatProperties == rhs.formatProperties );
18408 #endif
18409     }
18410 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties218411     bool operator!=( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
18412     {
18413       return !operator==( rhs );
18414     }
18415 #endif
18416 
18417     public:
18418     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFormatProperties2;
18419     void * pNext = {};
18420     VULKAN_HPP_NAMESPACE::FormatProperties formatProperties = {};
18421 
18422   };
18423 
18424   template <>
18425   struct CppType<StructureType, StructureType::eFormatProperties2>
18426   {
18427     using Type = FormatProperties2;
18428   };
18429   using FormatProperties2KHR = FormatProperties2;
18430 
18431   struct FormatProperties3
18432   {
18433     using NativeType = VkFormatProperties3;
18434 
18435     static const bool allowDuplicate = false;
18436     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFormatProperties3;
18437 
18438 
18439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FormatProperties3VULKAN_HPP_NAMESPACE::FormatProperties318440 VULKAN_HPP_CONSTEXPR FormatProperties3(VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 linearTilingFeatures_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 optimalTilingFeatures_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 bufferFeatures_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
18441     : pNext( pNext_ ), linearTilingFeatures( linearTilingFeatures_ ), optimalTilingFeatures( optimalTilingFeatures_ ), bufferFeatures( bufferFeatures_ )
18442     {}
18443 
18444     VULKAN_HPP_CONSTEXPR FormatProperties3( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18445 
FormatProperties3VULKAN_HPP_NAMESPACE::FormatProperties318446     FormatProperties3( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT
18447       : FormatProperties3( *reinterpret_cast<FormatProperties3 const *>( &rhs ) )
18448     {}
18449 
18450 
18451     FormatProperties3 & operator=( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18452 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18453 
operator =VULKAN_HPP_NAMESPACE::FormatProperties318454     FormatProperties3 & operator=( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT
18455     {
18456       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FormatProperties3 const *>( &rhs );
18457       return *this;
18458     }
18459 
18460 
operator VkFormatProperties3 const&VULKAN_HPP_NAMESPACE::FormatProperties318461     operator VkFormatProperties3 const &() const VULKAN_HPP_NOEXCEPT
18462     {
18463       return *reinterpret_cast<const VkFormatProperties3*>( this );
18464     }
18465 
operator VkFormatProperties3&VULKAN_HPP_NAMESPACE::FormatProperties318466     operator VkFormatProperties3 &() VULKAN_HPP_NOEXCEPT
18467     {
18468       return *reinterpret_cast<VkFormatProperties3*>( this );
18469     }
18470 
18471 #if defined( VULKAN_HPP_USE_REFLECT )
18472 #if 14 <= VULKAN_HPP_CPP_VERSION
18473     auto
18474 #else
18475     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 const &>
18476 #endif
reflectVULKAN_HPP_NAMESPACE::FormatProperties318477       reflect() const VULKAN_HPP_NOEXCEPT
18478     {
18479       return std::tie( sType, pNext, linearTilingFeatures, optimalTilingFeatures, bufferFeatures );
18480     }
18481 #endif
18482 
18483 
18484 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18485 auto operator<=>( FormatProperties3 const & ) const = default;
18486 #else
operator ==VULKAN_HPP_NAMESPACE::FormatProperties318487     bool operator==( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT
18488     {
18489 #if defined( VULKAN_HPP_USE_REFLECT )
18490       return this->reflect() == rhs.reflect();
18491 #else
18492       return ( sType == rhs.sType )
18493           && ( pNext == rhs.pNext )
18494           && ( linearTilingFeatures == rhs.linearTilingFeatures )
18495           && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
18496           && ( bufferFeatures == rhs.bufferFeatures );
18497 #endif
18498     }
18499 
operator !=VULKAN_HPP_NAMESPACE::FormatProperties318500     bool operator!=( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT
18501     {
18502       return !operator==( rhs );
18503     }
18504 #endif
18505 
18506     public:
18507     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFormatProperties3;
18508     void * pNext = {};
18509     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 linearTilingFeatures = {};
18510     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 optimalTilingFeatures = {};
18511     VULKAN_HPP_NAMESPACE::FormatFeatureFlags2 bufferFeatures = {};
18512 
18513   };
18514 
18515   template <>
18516   struct CppType<StructureType, StructureType::eFormatProperties3>
18517   {
18518     using Type = FormatProperties3;
18519   };
18520   using FormatProperties3KHR = FormatProperties3;
18521 
18522   struct FragmentShadingRateAttachmentInfoKHR
18523   {
18524     using NativeType = VkFragmentShadingRateAttachmentInfoKHR;
18525 
18526     static const bool allowDuplicate = false;
18527     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFragmentShadingRateAttachmentInfoKHR;
18528 
18529 
18530 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18531 VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR(const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ = {}, VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
18532     : pNext( pNext_ ), pFragmentShadingRateAttachment( pFragmentShadingRateAttachment_ ), shadingRateAttachmentTexelSize( shadingRateAttachmentTexelSize_ )
18533     {}
18534 
18535     VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18536 
FragmentShadingRateAttachmentInfoKHRVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18537     FragmentShadingRateAttachmentInfoKHR( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
18538       : FragmentShadingRateAttachmentInfoKHR( *reinterpret_cast<FragmentShadingRateAttachmentInfoKHR const *>( &rhs ) )
18539     {}
18540 
18541 
18542     FragmentShadingRateAttachmentInfoKHR & operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18543 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18544 
operator =VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18545     FragmentShadingRateAttachmentInfoKHR & operator=( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
18546     {
18547       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR const *>( &rhs );
18548       return *this;
18549     }
18550 
18551 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18552     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18553     {
18554       pNext = pNext_;
18555       return *this;
18556     }
18557 
setPFragmentShadingRateAttachmentVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18558     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPFragmentShadingRateAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment_ ) VULKAN_HPP_NOEXCEPT
18559     {
18560       pFragmentShadingRateAttachment = pFragmentShadingRateAttachment_;
18561       return *this;
18562     }
18563 
setShadingRateAttachmentTexelSizeVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18564     VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setShadingRateAttachmentTexelSize( VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT
18565     {
18566       shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_;
18567       return *this;
18568     }
18569 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18570 
18571 
operator VkFragmentShadingRateAttachmentInfoKHR const&VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18572     operator VkFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
18573     {
18574       return *reinterpret_cast<const VkFragmentShadingRateAttachmentInfoKHR*>( this );
18575     }
18576 
operator VkFragmentShadingRateAttachmentInfoKHR&VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18577     operator VkFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT
18578     {
18579       return *reinterpret_cast<VkFragmentShadingRateAttachmentInfoKHR*>( this );
18580     }
18581 
18582 #if defined( VULKAN_HPP_USE_REFLECT )
18583 #if 14 <= VULKAN_HPP_CPP_VERSION
18584     auto
18585 #else
18586     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
18587 #endif
reflectVULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18588       reflect() const VULKAN_HPP_NOEXCEPT
18589     {
18590       return std::tie( sType, pNext, pFragmentShadingRateAttachment, shadingRateAttachmentTexelSize );
18591     }
18592 #endif
18593 
18594 
18595 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18596 auto operator<=>( FragmentShadingRateAttachmentInfoKHR const & ) const = default;
18597 #else
operator ==VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18598     bool operator==( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
18599     {
18600 #if defined( VULKAN_HPP_USE_REFLECT )
18601       return this->reflect() == rhs.reflect();
18602 #else
18603       return ( sType == rhs.sType )
18604           && ( pNext == rhs.pNext )
18605           && ( pFragmentShadingRateAttachment == rhs.pFragmentShadingRateAttachment )
18606           && ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize );
18607 #endif
18608     }
18609 
operator !=VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR18610     bool operator!=( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
18611     {
18612       return !operator==( rhs );
18613     }
18614 #endif
18615 
18616     public:
18617     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFragmentShadingRateAttachmentInfoKHR;
18618     const void * pNext = {};
18619     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pFragmentShadingRateAttachment = {};
18620     VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize = {};
18621 
18622   };
18623 
18624   template <>
18625   struct CppType<StructureType, StructureType::eFragmentShadingRateAttachmentInfoKHR>
18626   {
18627     using Type = FragmentShadingRateAttachmentInfoKHR;
18628   };
18629 
18630   struct FramebufferAttachmentImageInfo
18631   {
18632     using NativeType = VkFramebufferAttachmentImageInfo;
18633 
18634     static const bool allowDuplicate = false;
18635     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentImageInfo;
18636 
18637 
18638 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18639 VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo(VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, uint32_t width_ = {}, uint32_t height_ = {}, uint32_t layerCount_ = {}, uint32_t viewFormatCount_ = {}, const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
18640     : pNext( pNext_ ), flags( flags_ ), usage( usage_ ), width( width_ ), height( height_ ), layerCount( layerCount_ ), viewFormatCount( viewFormatCount_ ), pViewFormats( pViewFormats_ )
18641     {}
18642 
18643     VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18644 
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18645     FramebufferAttachmentImageInfo( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18646       : FramebufferAttachmentImageInfo( *reinterpret_cast<FramebufferAttachmentImageInfo const *>( &rhs ) )
18647     {}
18648 
18649 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferAttachmentImageInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18650     FramebufferAttachmentImageInfo( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_, uint32_t width_, uint32_t height_, uint32_t layerCount_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_, const void * pNext_ = nullptr )
18651     : pNext( pNext_ ), flags( flags_ ), usage( usage_ ), width( width_ ), height( height_ ), layerCount( layerCount_ ), viewFormatCount( static_cast<uint32_t>( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() )
18652     {}
18653 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18654 
18655 
18656     FramebufferAttachmentImageInfo & operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18657 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18658 
operator =VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18659     FramebufferAttachmentImageInfo & operator=( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18660     {
18661       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo const *>( &rhs );
18662       return *this;
18663     }
18664 
18665 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18666     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18667     {
18668       pNext = pNext_;
18669       return *this;
18670     }
18671 
setFlagsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18672     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
18673     {
18674       flags = flags_;
18675       return *this;
18676     }
18677 
setUsageVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18678     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
18679     {
18680       usage = usage_;
18681       return *this;
18682     }
18683 
setWidthVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18684     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
18685     {
18686       width = width_;
18687       return *this;
18688     }
18689 
setHeightVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18690     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
18691     {
18692       height = height_;
18693       return *this;
18694     }
18695 
setLayerCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18696     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
18697     {
18698       layerCount = layerCount_;
18699       return *this;
18700     }
18701 
setViewFormatCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18702     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT
18703     {
18704       viewFormatCount = viewFormatCount_;
18705       return *this;
18706     }
18707 
setPViewFormatsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18708     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT
18709     {
18710       pViewFormats = pViewFormats_;
18711       return *this;
18712     }
18713 
18714 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewFormatsVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18715     FramebufferAttachmentImageInfo & setViewFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ ) VULKAN_HPP_NOEXCEPT
18716     {
18717       viewFormatCount = static_cast<uint32_t>( viewFormats_.size() );
18718       pViewFormats = viewFormats_.data();
18719       return *this;
18720     }
18721 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18722 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18723 
18724 
operator VkFramebufferAttachmentImageInfo const&VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18725     operator VkFramebufferAttachmentImageInfo const &() const VULKAN_HPP_NOEXCEPT
18726     {
18727       return *reinterpret_cast<const VkFramebufferAttachmentImageInfo*>( this );
18728     }
18729 
operator VkFramebufferAttachmentImageInfo&VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18730     operator VkFramebufferAttachmentImageInfo &() VULKAN_HPP_NOEXCEPT
18731     {
18732       return *reinterpret_cast<VkFramebufferAttachmentImageInfo*>( this );
18733     }
18734 
18735 #if defined( VULKAN_HPP_USE_REFLECT )
18736 #if 14 <= VULKAN_HPP_CPP_VERSION
18737     auto
18738 #else
18739     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageCreateFlags const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Format * const &>
18740 #endif
reflectVULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18741       reflect() const VULKAN_HPP_NOEXCEPT
18742     {
18743       return std::tie( sType, pNext, flags, usage, width, height, layerCount, viewFormatCount, pViewFormats );
18744     }
18745 #endif
18746 
18747 
18748 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18749 auto operator<=>( FramebufferAttachmentImageInfo const & ) const = default;
18750 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18751     bool operator==( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
18752     {
18753 #if defined( VULKAN_HPP_USE_REFLECT )
18754       return this->reflect() == rhs.reflect();
18755 #else
18756       return ( sType == rhs.sType )
18757           && ( pNext == rhs.pNext )
18758           && ( flags == rhs.flags )
18759           && ( usage == rhs.usage )
18760           && ( width == rhs.width )
18761           && ( height == rhs.height )
18762           && ( layerCount == rhs.layerCount )
18763           && ( viewFormatCount == rhs.viewFormatCount )
18764           && ( pViewFormats == rhs.pViewFormats );
18765 #endif
18766     }
18767 
operator !=VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo18768     bool operator!=( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
18769     {
18770       return !operator==( rhs );
18771     }
18772 #endif
18773 
18774     public:
18775     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentImageInfo;
18776     const void * pNext = {};
18777     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {};
18778     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
18779     uint32_t width = {};
18780     uint32_t height = {};
18781     uint32_t layerCount = {};
18782     uint32_t viewFormatCount = {};
18783     const VULKAN_HPP_NAMESPACE::Format * pViewFormats = {};
18784 
18785   };
18786 
18787   template <>
18788   struct CppType<StructureType, StructureType::eFramebufferAttachmentImageInfo>
18789   {
18790     using Type = FramebufferAttachmentImageInfo;
18791   };
18792   using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo;
18793 
18794   struct FramebufferAttachmentsCreateInfo
18795   {
18796     using NativeType = VkFramebufferAttachmentsCreateInfo;
18797 
18798     static const bool allowDuplicate = false;
18799     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentsCreateInfo;
18800 
18801 
18802 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18803 VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo(uint32_t attachmentImageInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
18804     : pNext( pNext_ ), attachmentImageInfoCount( attachmentImageInfoCount_ ), pAttachmentImageInfos( pAttachmentImageInfos_ )
18805     {}
18806 
18807     VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18808 
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18809     FramebufferAttachmentsCreateInfo( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18810       : FramebufferAttachmentsCreateInfo( *reinterpret_cast<FramebufferAttachmentsCreateInfo const *>( &rhs ) )
18811     {}
18812 
18813 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferAttachmentsCreateInfoVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18814     FramebufferAttachmentsCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const & attachmentImageInfos_, const void * pNext_ = nullptr )
18815     : pNext( pNext_ ), attachmentImageInfoCount( static_cast<uint32_t>( attachmentImageInfos_.size() ) ), pAttachmentImageInfos( attachmentImageInfos_.data() )
18816     {}
18817 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18818 
18819 
18820     FramebufferAttachmentsCreateInfo & operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18821 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18822 
operator =VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18823     FramebufferAttachmentsCreateInfo & operator=( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18824     {
18825       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo const *>( &rhs );
18826       return *this;
18827     }
18828 
18829 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18830     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18831     {
18832       pNext = pNext_;
18833       return *this;
18834     }
18835 
setAttachmentImageInfoCountVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18836     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) VULKAN_HPP_NOEXCEPT
18837     {
18838       attachmentImageInfoCount = attachmentImageInfoCount_;
18839       return *this;
18840     }
18841 
setPAttachmentImageInfosVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18842     VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPAttachmentImageInfos( const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT
18843     {
18844       pAttachmentImageInfos = pAttachmentImageInfos_;
18845       return *this;
18846     }
18847 
18848 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentImageInfosVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18849     FramebufferAttachmentsCreateInfo & setAttachmentImageInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo> const & attachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT
18850     {
18851       attachmentImageInfoCount = static_cast<uint32_t>( attachmentImageInfos_.size() );
18852       pAttachmentImageInfos = attachmentImageInfos_.data();
18853       return *this;
18854     }
18855 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18856 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
18857 
18858 
operator VkFramebufferAttachmentsCreateInfo const&VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18859     operator VkFramebufferAttachmentsCreateInfo const &() const VULKAN_HPP_NOEXCEPT
18860     {
18861       return *reinterpret_cast<const VkFramebufferAttachmentsCreateInfo*>( this );
18862     }
18863 
operator VkFramebufferAttachmentsCreateInfo&VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18864     operator VkFramebufferAttachmentsCreateInfo &() VULKAN_HPP_NOEXCEPT
18865     {
18866       return *reinterpret_cast<VkFramebufferAttachmentsCreateInfo*>( this );
18867     }
18868 
18869 #if defined( VULKAN_HPP_USE_REFLECT )
18870 #if 14 <= VULKAN_HPP_CPP_VERSION
18871     auto
18872 #else
18873     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * const &>
18874 #endif
reflectVULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18875       reflect() const VULKAN_HPP_NOEXCEPT
18876     {
18877       return std::tie( sType, pNext, attachmentImageInfoCount, pAttachmentImageInfos );
18878     }
18879 #endif
18880 
18881 
18882 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
18883 auto operator<=>( FramebufferAttachmentsCreateInfo const & ) const = default;
18884 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18885     bool operator==( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
18886     {
18887 #if defined( VULKAN_HPP_USE_REFLECT )
18888       return this->reflect() == rhs.reflect();
18889 #else
18890       return ( sType == rhs.sType )
18891           && ( pNext == rhs.pNext )
18892           && ( attachmentImageInfoCount == rhs.attachmentImageInfoCount )
18893           && ( pAttachmentImageInfos == rhs.pAttachmentImageInfos );
18894 #endif
18895     }
18896 
operator !=VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo18897     bool operator!=( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
18898     {
18899       return !operator==( rhs );
18900     }
18901 #endif
18902 
18903     public:
18904     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentsCreateInfo;
18905     const void * pNext = {};
18906     uint32_t attachmentImageInfoCount = {};
18907     const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo * pAttachmentImageInfos = {};
18908 
18909   };
18910 
18911   template <>
18912   struct CppType<StructureType, StructureType::eFramebufferAttachmentsCreateInfo>
18913   {
18914     using Type = FramebufferAttachmentsCreateInfo;
18915   };
18916   using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo;
18917 
18918   struct FramebufferCreateInfo
18919   {
18920     using NativeType = VkFramebufferCreateInfo;
18921 
18922     static const bool allowDuplicate = false;
18923     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferCreateInfo;
18924 
18925 
18926 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18927 VULKAN_HPP_CONSTEXPR FramebufferCreateInfo(VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ = {}, uint32_t width_ = {}, uint32_t height_ = {}, uint32_t layers_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
18928     : pNext( pNext_ ), flags( flags_ ), renderPass( renderPass_ ), attachmentCount( attachmentCount_ ), pAttachments( pAttachments_ ), width( width_ ), height( height_ ), layers( layers_ )
18929     {}
18930 
18931     VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18932 
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18933     FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18934       : FramebufferCreateInfo( *reinterpret_cast<FramebufferCreateInfo const *>( &rhs ) )
18935     {}
18936 
18937 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
FramebufferCreateInfoVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18938     FramebufferCreateInfo( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_, VULKAN_HPP_NAMESPACE::RenderPass renderPass_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_, uint32_t width_ = {}, uint32_t height_ = {}, uint32_t layers_ = {}, const void * pNext_ = nullptr )
18939     : pNext( pNext_ ), flags( flags_ ), renderPass( renderPass_ ), attachmentCount( static_cast<uint32_t>( attachments_.size() ) ), pAttachments( attachments_.data() ), width( width_ ), height( height_ ), layers( layers_ )
18940     {}
18941 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18942 
18943 
18944     FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
18945 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
18946 
operator =VULKAN_HPP_NAMESPACE::FramebufferCreateInfo18947     FramebufferCreateInfo & operator=( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
18948     {
18949       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const *>( &rhs );
18950       return *this;
18951     }
18952 
18953 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18954     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
18955     {
18956       pNext = pNext_;
18957       return *this;
18958     }
18959 
setFlagsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18960     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
18961     {
18962       flags = flags_;
18963       return *this;
18964     }
18965 
setRenderPassVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18966     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
18967     {
18968       renderPass = renderPass_;
18969       return *this;
18970     }
18971 
setAttachmentCountVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18972     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
18973     {
18974       attachmentCount = attachmentCount_;
18975       return *this;
18976     }
18977 
setPAttachmentsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18978     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT
18979     {
18980       pAttachments = pAttachments_;
18981       return *this;
18982     }
18983 
18984 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18985     FramebufferCreateInfo & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ ) VULKAN_HPP_NOEXCEPT
18986     {
18987       attachmentCount = static_cast<uint32_t>( attachments_.size() );
18988       pAttachments = attachments_.data();
18989       return *this;
18990     }
18991 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
18992 
setWidthVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18993     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT
18994     {
18995       width = width_;
18996       return *this;
18997     }
18998 
setHeightVULKAN_HPP_NAMESPACE::FramebufferCreateInfo18999     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT
19000     {
19001       height = height_;
19002       return *this;
19003     }
19004 
setLayersVULKAN_HPP_NAMESPACE::FramebufferCreateInfo19005     VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setLayers( uint32_t layers_ ) VULKAN_HPP_NOEXCEPT
19006     {
19007       layers = layers_;
19008       return *this;
19009     }
19010 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19011 
19012 
operator VkFramebufferCreateInfo const&VULKAN_HPP_NAMESPACE::FramebufferCreateInfo19013     operator VkFramebufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT
19014     {
19015       return *reinterpret_cast<const VkFramebufferCreateInfo*>( this );
19016     }
19017 
operator VkFramebufferCreateInfo&VULKAN_HPP_NAMESPACE::FramebufferCreateInfo19018     operator VkFramebufferCreateInfo &() VULKAN_HPP_NOEXCEPT
19019     {
19020       return *reinterpret_cast<VkFramebufferCreateInfo*>( this );
19021     }
19022 
19023 #if defined( VULKAN_HPP_USE_REFLECT )
19024 #if 14 <= VULKAN_HPP_CPP_VERSION
19025     auto
19026 #else
19027     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::FramebufferCreateFlags const &, VULKAN_HPP_NAMESPACE::RenderPass const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ImageView * const &, uint32_t const &, uint32_t const &, uint32_t const &>
19028 #endif
reflectVULKAN_HPP_NAMESPACE::FramebufferCreateInfo19029       reflect() const VULKAN_HPP_NOEXCEPT
19030     {
19031       return std::tie( sType, pNext, flags, renderPass, attachmentCount, pAttachments, width, height, layers );
19032     }
19033 #endif
19034 
19035 
19036 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
19037 auto operator<=>( FramebufferCreateInfo const & ) const = default;
19038 #else
operator ==VULKAN_HPP_NAMESPACE::FramebufferCreateInfo19039     bool operator==( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19040     {
19041 #if defined( VULKAN_HPP_USE_REFLECT )
19042       return this->reflect() == rhs.reflect();
19043 #else
19044       return ( sType == rhs.sType )
19045           && ( pNext == rhs.pNext )
19046           && ( flags == rhs.flags )
19047           && ( renderPass == rhs.renderPass )
19048           && ( attachmentCount == rhs.attachmentCount )
19049           && ( pAttachments == rhs.pAttachments )
19050           && ( width == rhs.width )
19051           && ( height == rhs.height )
19052           && ( layers == rhs.layers );
19053 #endif
19054     }
19055 
operator !=VULKAN_HPP_NAMESPACE::FramebufferCreateInfo19056     bool operator!=( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19057     {
19058       return !operator==( rhs );
19059     }
19060 #endif
19061 
19062     public:
19063     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferCreateInfo;
19064     const void * pNext = {};
19065     VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags = {};
19066     VULKAN_HPP_NAMESPACE::RenderPass renderPass = {};
19067     uint32_t attachmentCount = {};
19068     const VULKAN_HPP_NAMESPACE::ImageView * pAttachments = {};
19069     uint32_t width = {};
19070     uint32_t height = {};
19071     uint32_t layers = {};
19072 
19073   };
19074 
19075   template <>
19076   struct CppType<StructureType, StructureType::eFramebufferCreateInfo>
19077   {
19078     using Type = FramebufferCreateInfo;
19079   };
19080 
19081   struct VertexInputBindingDescription
19082   {
19083     using NativeType = VkVertexInputBindingDescription;
19084 
19085 
19086 
19087 
19088 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDescription19089 VULKAN_HPP_CONSTEXPR VertexInputBindingDescription(uint32_t binding_ = {}, uint32_t stride_ = {}, VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex) VULKAN_HPP_NOEXCEPT
19090     : binding( binding_ ), stride( stride_ ), inputRate( inputRate_ )
19091     {}
19092 
19093     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19094 
VertexInputBindingDescriptionVULKAN_HPP_NAMESPACE::VertexInputBindingDescription19095     VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
19096       : VertexInputBindingDescription( *reinterpret_cast<VertexInputBindingDescription const *>( &rhs ) )
19097     {}
19098 
19099 
19100     VertexInputBindingDescription & operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19101 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19102 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDescription19103     VertexInputBindingDescription & operator=( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT
19104     {
19105       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription const *>( &rhs );
19106       return *this;
19107     }
19108 
19109 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDescription19110     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
19111     {
19112       binding = binding_;
19113       return *this;
19114     }
19115 
setStrideVULKAN_HPP_NAMESPACE::VertexInputBindingDescription19116     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
19117     {
19118       stride = stride_;
19119       return *this;
19120     }
19121 
setInputRateVULKAN_HPP_NAMESPACE::VertexInputBindingDescription19122     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT
19123     {
19124       inputRate = inputRate_;
19125       return *this;
19126     }
19127 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19128 
19129 
operator VkVertexInputBindingDescription const&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription19130     operator VkVertexInputBindingDescription const &() const VULKAN_HPP_NOEXCEPT
19131     {
19132       return *reinterpret_cast<const VkVertexInputBindingDescription*>( this );
19133     }
19134 
operator VkVertexInputBindingDescription&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription19135     operator VkVertexInputBindingDescription &() VULKAN_HPP_NOEXCEPT
19136     {
19137       return *reinterpret_cast<VkVertexInputBindingDescription*>( this );
19138     }
19139 
19140 #if defined( VULKAN_HPP_USE_REFLECT )
19141 #if 14 <= VULKAN_HPP_CPP_VERSION
19142     auto
19143 #else
19144     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::VertexInputRate const &>
19145 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDescription19146       reflect() const VULKAN_HPP_NOEXCEPT
19147     {
19148       return std::tie( binding, stride, inputRate );
19149     }
19150 #endif
19151 
19152 
19153 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
19154 auto operator<=>( VertexInputBindingDescription const & ) const = default;
19155 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDescription19156     bool operator==( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
19157     {
19158 #if defined( VULKAN_HPP_USE_REFLECT )
19159       return this->reflect() == rhs.reflect();
19160 #else
19161       return ( binding == rhs.binding )
19162           && ( stride == rhs.stride )
19163           && ( inputRate == rhs.inputRate );
19164 #endif
19165     }
19166 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDescription19167     bool operator!=( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
19168     {
19169       return !operator==( rhs );
19170     }
19171 #endif
19172 
19173     public:
19174     uint32_t binding = {};
19175     uint32_t stride = {};
19176     VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex;
19177 
19178   };
19179 
19180   struct VertexInputAttributeDescription
19181   {
19182     using NativeType = VkVertexInputAttributeDescription;
19183 
19184 
19185 
19186 
19187 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputAttributeDescriptionVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19188 VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription(uint32_t location_ = {}, uint32_t binding_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, uint32_t offset_ = {}) VULKAN_HPP_NOEXCEPT
19189     : location( location_ ), binding( binding_ ), format( format_ ), offset( offset_ )
19190     {}
19191 
19192     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19193 
VertexInputAttributeDescriptionVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19194     VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
19195       : VertexInputAttributeDescription( *reinterpret_cast<VertexInputAttributeDescription const *>( &rhs ) )
19196     {}
19197 
19198 
19199     VertexInputAttributeDescription & operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19200 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19201 
operator =VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19202     VertexInputAttributeDescription & operator=( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT
19203     {
19204       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription const *>( &rhs );
19205       return *this;
19206     }
19207 
19208 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setLocationVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19209     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
19210     {
19211       location = location_;
19212       return *this;
19213     }
19214 
setBindingVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19215     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
19216     {
19217       binding = binding_;
19218       return *this;
19219     }
19220 
setFormatVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19221     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
19222     {
19223       format = format_;
19224       return *this;
19225     }
19226 
setOffsetVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19227     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
19228     {
19229       offset = offset_;
19230       return *this;
19231     }
19232 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19233 
19234 
operator VkVertexInputAttributeDescription const&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19235     operator VkVertexInputAttributeDescription const &() const VULKAN_HPP_NOEXCEPT
19236     {
19237       return *reinterpret_cast<const VkVertexInputAttributeDescription*>( this );
19238     }
19239 
operator VkVertexInputAttributeDescription&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19240     operator VkVertexInputAttributeDescription &() VULKAN_HPP_NOEXCEPT
19241     {
19242       return *reinterpret_cast<VkVertexInputAttributeDescription*>( this );
19243     }
19244 
19245 #if defined( VULKAN_HPP_USE_REFLECT )
19246 #if 14 <= VULKAN_HPP_CPP_VERSION
19247     auto
19248 #else
19249     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Format const &, uint32_t const &>
19250 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19251       reflect() const VULKAN_HPP_NOEXCEPT
19252     {
19253       return std::tie( location, binding, format, offset );
19254     }
19255 #endif
19256 
19257 
19258 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
19259 auto operator<=>( VertexInputAttributeDescription const & ) const = default;
19260 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19261     bool operator==( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
19262     {
19263 #if defined( VULKAN_HPP_USE_REFLECT )
19264       return this->reflect() == rhs.reflect();
19265 #else
19266       return ( location == rhs.location )
19267           && ( binding == rhs.binding )
19268           && ( format == rhs.format )
19269           && ( offset == rhs.offset );
19270 #endif
19271     }
19272 
operator !=VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription19273     bool operator!=( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
19274     {
19275       return !operator==( rhs );
19276     }
19277 #endif
19278 
19279     public:
19280     uint32_t location = {};
19281     uint32_t binding = {};
19282     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
19283     uint32_t offset = {};
19284 
19285   };
19286 
19287   struct PipelineVertexInputStateCreateInfo
19288   {
19289     using NativeType = VkPipelineVertexInputStateCreateInfo;
19290 
19291     static const bool allowDuplicate = false;
19292     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineVertexInputStateCreateInfo;
19293 
19294 
19295 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19296 VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ = {}, uint32_t vertexBindingDescriptionCount_ = {}, const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_ = {}, uint32_t vertexAttributeDescriptionCount_ = {}, const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
19297     : pNext( pNext_ ), flags( flags_ ), vertexBindingDescriptionCount( vertexBindingDescriptionCount_ ), pVertexBindingDescriptions( pVertexBindingDescriptions_ ), vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ ), pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
19298     {}
19299 
19300     VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19301 
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19302     PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19303       : PipelineVertexInputStateCreateInfo( *reinterpret_cast<PipelineVertexInputStateCreateInfo const *>( &rhs ) )
19304     {}
19305 
19306 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineVertexInputStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19307     PipelineVertexInputStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const & vertexBindingDescriptions_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const & vertexAttributeDescriptions_ = {}, const void * pNext_ = nullptr )
19308     : pNext( pNext_ ), flags( flags_ ), vertexBindingDescriptionCount( static_cast<uint32_t>( vertexBindingDescriptions_.size() ) ), pVertexBindingDescriptions( vertexBindingDescriptions_.data() ), vertexAttributeDescriptionCount( static_cast<uint32_t>( vertexAttributeDescriptions_.size() ) ), pVertexAttributeDescriptions( vertexAttributeDescriptions_.data() )
19309     {}
19310 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19311 
19312 
19313     PipelineVertexInputStateCreateInfo & operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19314 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19315 
operator =VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19316     PipelineVertexInputStateCreateInfo & operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19317     {
19318       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo const *>( &rhs );
19319       return *this;
19320     }
19321 
19322 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19323     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19324     {
19325       pNext = pNext_;
19326       return *this;
19327     }
19328 
setFlagsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19329     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
19330     {
19331       flags = flags_;
19332       return *this;
19333     }
19334 
setVertexBindingDescriptionCountVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19335     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) VULKAN_HPP_NOEXCEPT
19336     {
19337       vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
19338       return *this;
19339     }
19340 
setPVertexBindingDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19341     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPVertexBindingDescriptions( const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT
19342     {
19343       pVertexBindingDescriptions = pVertexBindingDescriptions_;
19344       return *this;
19345     }
19346 
19347 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexBindingDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19348     PipelineVertexInputStateCreateInfo & setVertexBindingDescriptions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription> const & vertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT
19349     {
19350       vertexBindingDescriptionCount = static_cast<uint32_t>( vertexBindingDescriptions_.size() );
19351       pVertexBindingDescriptions = vertexBindingDescriptions_.data();
19352       return *this;
19353     }
19354 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19355 
setVertexAttributeDescriptionCountVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19356     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) VULKAN_HPP_NOEXCEPT
19357     {
19358       vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
19359       return *this;
19360     }
19361 
setPVertexAttributeDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19362     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPVertexAttributeDescriptions( const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT
19363     {
19364       pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
19365       return *this;
19366     }
19367 
19368 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexAttributeDescriptionsVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19369     PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription> const & vertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT
19370     {
19371       vertexAttributeDescriptionCount = static_cast<uint32_t>( vertexAttributeDescriptions_.size() );
19372       pVertexAttributeDescriptions = vertexAttributeDescriptions_.data();
19373       return *this;
19374     }
19375 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19376 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19377 
19378 
operator VkPipelineVertexInputStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19379     operator VkPipelineVertexInputStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
19380     {
19381       return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>( this );
19382     }
19383 
operator VkPipelineVertexInputStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19384     operator VkPipelineVertexInputStateCreateInfo &() VULKAN_HPP_NOEXCEPT
19385     {
19386       return *reinterpret_cast<VkPipelineVertexInputStateCreateInfo*>( this );
19387     }
19388 
19389 #if defined( VULKAN_HPP_USE_REFLECT )
19390 #if 14 <= VULKAN_HPP_CPP_VERSION
19391     auto
19392 #else
19393     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * const &>
19394 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19395       reflect() const VULKAN_HPP_NOEXCEPT
19396     {
19397       return std::tie( sType, pNext, flags, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions );
19398     }
19399 #endif
19400 
19401 
19402 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
19403 auto operator<=>( PipelineVertexInputStateCreateInfo const & ) const = default;
19404 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19405     bool operator==( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19406     {
19407 #if defined( VULKAN_HPP_USE_REFLECT )
19408       return this->reflect() == rhs.reflect();
19409 #else
19410       return ( sType == rhs.sType )
19411           && ( pNext == rhs.pNext )
19412           && ( flags == rhs.flags )
19413           && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
19414           && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
19415           && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
19416           && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
19417 #endif
19418     }
19419 
operator !=VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo19420     bool operator!=( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19421     {
19422       return !operator==( rhs );
19423     }
19424 #endif
19425 
19426     public:
19427     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo;
19428     const void * pNext = {};
19429     VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags = {};
19430     uint32_t vertexBindingDescriptionCount = {};
19431     const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription * pVertexBindingDescriptions = {};
19432     uint32_t vertexAttributeDescriptionCount = {};
19433     const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription * pVertexAttributeDescriptions = {};
19434 
19435   };
19436 
19437   template <>
19438   struct CppType<StructureType, StructureType::ePipelineVertexInputStateCreateInfo>
19439   {
19440     using Type = PipelineVertexInputStateCreateInfo;
19441   };
19442 
19443   struct PipelineInputAssemblyStateCreateInfo
19444   {
19445     using NativeType = VkPipelineInputAssemblyStateCreateInfo;
19446 
19447     static const bool allowDuplicate = false;
19448     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineInputAssemblyStateCreateInfo;
19449 
19450 
19451 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineInputAssemblyStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19452 VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList, VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
19453     : pNext( pNext_ ), flags( flags_ ), topology( topology_ ), primitiveRestartEnable( primitiveRestartEnable_ )
19454     {}
19455 
19456     VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19457 
PipelineInputAssemblyStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19458     PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19459       : PipelineInputAssemblyStateCreateInfo( *reinterpret_cast<PipelineInputAssemblyStateCreateInfo const *>( &rhs ) )
19460     {}
19461 
19462 
19463     PipelineInputAssemblyStateCreateInfo & operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19464 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19465 
operator =VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19466     PipelineInputAssemblyStateCreateInfo & operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19467     {
19468       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo const *>( &rhs );
19469       return *this;
19470     }
19471 
19472 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19473     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19474     {
19475       pNext = pNext_;
19476       return *this;
19477     }
19478 
setFlagsVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19479     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
19480     {
19481       flags = flags_;
19482       return *this;
19483     }
19484 
setTopologyVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19485     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ ) VULKAN_HPP_NOEXCEPT
19486     {
19487       topology = topology_;
19488       return *this;
19489     }
19490 
setPrimitiveRestartEnableVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19491     VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ ) VULKAN_HPP_NOEXCEPT
19492     {
19493       primitiveRestartEnable = primitiveRestartEnable_;
19494       return *this;
19495     }
19496 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19497 
19498 
operator VkPipelineInputAssemblyStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19499     operator VkPipelineInputAssemblyStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
19500     {
19501       return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>( this );
19502     }
19503 
operator VkPipelineInputAssemblyStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19504     operator VkPipelineInputAssemblyStateCreateInfo &() VULKAN_HPP_NOEXCEPT
19505     {
19506       return *reinterpret_cast<VkPipelineInputAssemblyStateCreateInfo*>( this );
19507     }
19508 
19509 #if defined( VULKAN_HPP_USE_REFLECT )
19510 #if 14 <= VULKAN_HPP_CPP_VERSION
19511     auto
19512 #else
19513     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags const &, VULKAN_HPP_NAMESPACE::PrimitiveTopology const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
19514 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19515       reflect() const VULKAN_HPP_NOEXCEPT
19516     {
19517       return std::tie( sType, pNext, flags, topology, primitiveRestartEnable );
19518     }
19519 #endif
19520 
19521 
19522 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
19523 auto operator<=>( PipelineInputAssemblyStateCreateInfo const & ) const = default;
19524 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19525     bool operator==( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19526     {
19527 #if defined( VULKAN_HPP_USE_REFLECT )
19528       return this->reflect() == rhs.reflect();
19529 #else
19530       return ( sType == rhs.sType )
19531           && ( pNext == rhs.pNext )
19532           && ( flags == rhs.flags )
19533           && ( topology == rhs.topology )
19534           && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
19535 #endif
19536     }
19537 
operator !=VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo19538     bool operator!=( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19539     {
19540       return !operator==( rhs );
19541     }
19542 #endif
19543 
19544     public:
19545     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo;
19546     const void * pNext = {};
19547     VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags = {};
19548     VULKAN_HPP_NAMESPACE::PrimitiveTopology topology = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList;
19549     VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable = {};
19550 
19551   };
19552 
19553   template <>
19554   struct CppType<StructureType, StructureType::ePipelineInputAssemblyStateCreateInfo>
19555   {
19556     using Type = PipelineInputAssemblyStateCreateInfo;
19557   };
19558 
19559   struct PipelineTessellationStateCreateInfo
19560   {
19561     using NativeType = VkPipelineTessellationStateCreateInfo;
19562 
19563     static const bool allowDuplicate = false;
19564     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineTessellationStateCreateInfo;
19565 
19566 
19567 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineTessellationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19568 VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ = {}, uint32_t patchControlPoints_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
19569     : pNext( pNext_ ), flags( flags_ ), patchControlPoints( patchControlPoints_ )
19570     {}
19571 
19572     VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19573 
PipelineTessellationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19574     PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19575       : PipelineTessellationStateCreateInfo( *reinterpret_cast<PipelineTessellationStateCreateInfo const *>( &rhs ) )
19576     {}
19577 
19578 
19579     PipelineTessellationStateCreateInfo & operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19580 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19581 
operator =VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19582     PipelineTessellationStateCreateInfo & operator=( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19583     {
19584       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo const *>( &rhs );
19585       return *this;
19586     }
19587 
19588 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19589     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19590     {
19591       pNext = pNext_;
19592       return *this;
19593     }
19594 
setFlagsVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19595     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
19596     {
19597       flags = flags_;
19598       return *this;
19599     }
19600 
setPatchControlPointsVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19601     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPatchControlPoints( uint32_t patchControlPoints_ ) VULKAN_HPP_NOEXCEPT
19602     {
19603       patchControlPoints = patchControlPoints_;
19604       return *this;
19605     }
19606 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19607 
19608 
operator VkPipelineTessellationStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19609     operator VkPipelineTessellationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
19610     {
19611       return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>( this );
19612     }
19613 
operator VkPipelineTessellationStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19614     operator VkPipelineTessellationStateCreateInfo &() VULKAN_HPP_NOEXCEPT
19615     {
19616       return *reinterpret_cast<VkPipelineTessellationStateCreateInfo*>( this );
19617     }
19618 
19619 #if defined( VULKAN_HPP_USE_REFLECT )
19620 #if 14 <= VULKAN_HPP_CPP_VERSION
19621     auto
19622 #else
19623     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags const &, uint32_t const &>
19624 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19625       reflect() const VULKAN_HPP_NOEXCEPT
19626     {
19627       return std::tie( sType, pNext, flags, patchControlPoints );
19628     }
19629 #endif
19630 
19631 
19632 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
19633 auto operator<=>( PipelineTessellationStateCreateInfo const & ) const = default;
19634 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19635     bool operator==( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19636     {
19637 #if defined( VULKAN_HPP_USE_REFLECT )
19638       return this->reflect() == rhs.reflect();
19639 #else
19640       return ( sType == rhs.sType )
19641           && ( pNext == rhs.pNext )
19642           && ( flags == rhs.flags )
19643           && ( patchControlPoints == rhs.patchControlPoints );
19644 #endif
19645     }
19646 
operator !=VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo19647     bool operator!=( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19648     {
19649       return !operator==( rhs );
19650     }
19651 #endif
19652 
19653     public:
19654     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationStateCreateInfo;
19655     const void * pNext = {};
19656     VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags = {};
19657     uint32_t patchControlPoints = {};
19658 
19659   };
19660 
19661   template <>
19662   struct CppType<StructureType, StructureType::ePipelineTessellationStateCreateInfo>
19663   {
19664     using Type = PipelineTessellationStateCreateInfo;
19665   };
19666 
19667   struct Viewport
19668   {
19669     using NativeType = VkViewport;
19670 
19671 
19672 
19673 
19674 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ViewportVULKAN_HPP_NAMESPACE::Viewport19675 VULKAN_HPP_CONSTEXPR Viewport(float x_ = {}, float y_ = {}, float width_ = {}, float height_ = {}, float minDepth_ = {}, float maxDepth_ = {}) VULKAN_HPP_NOEXCEPT
19676     : x( x_ ), y( y_ ), width( width_ ), height( height_ ), minDepth( minDepth_ ), maxDepth( maxDepth_ )
19677     {}
19678 
19679     VULKAN_HPP_CONSTEXPR Viewport( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19680 
ViewportVULKAN_HPP_NAMESPACE::Viewport19681     Viewport( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT
19682       : Viewport( *reinterpret_cast<Viewport const *>( &rhs ) )
19683     {}
19684 
19685 
19686     Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19687 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19688 
operator =VULKAN_HPP_NAMESPACE::Viewport19689     Viewport & operator=( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT
19690     {
19691       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::Viewport const *>( &rhs );
19692       return *this;
19693     }
19694 
19695 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::Viewport19696     VULKAN_HPP_CONSTEXPR_14 Viewport & setX( float x_ ) VULKAN_HPP_NOEXCEPT
19697     {
19698       x = x_;
19699       return *this;
19700     }
19701 
setYVULKAN_HPP_NAMESPACE::Viewport19702     VULKAN_HPP_CONSTEXPR_14 Viewport & setY( float y_ ) VULKAN_HPP_NOEXCEPT
19703     {
19704       y = y_;
19705       return *this;
19706     }
19707 
setWidthVULKAN_HPP_NAMESPACE::Viewport19708     VULKAN_HPP_CONSTEXPR_14 Viewport & setWidth( float width_ ) VULKAN_HPP_NOEXCEPT
19709     {
19710       width = width_;
19711       return *this;
19712     }
19713 
setHeightVULKAN_HPP_NAMESPACE::Viewport19714     VULKAN_HPP_CONSTEXPR_14 Viewport & setHeight( float height_ ) VULKAN_HPP_NOEXCEPT
19715     {
19716       height = height_;
19717       return *this;
19718     }
19719 
setMinDepthVULKAN_HPP_NAMESPACE::Viewport19720     VULKAN_HPP_CONSTEXPR_14 Viewport & setMinDepth( float minDepth_ ) VULKAN_HPP_NOEXCEPT
19721     {
19722       minDepth = minDepth_;
19723       return *this;
19724     }
19725 
setMaxDepthVULKAN_HPP_NAMESPACE::Viewport19726     VULKAN_HPP_CONSTEXPR_14 Viewport & setMaxDepth( float maxDepth_ ) VULKAN_HPP_NOEXCEPT
19727     {
19728       maxDepth = maxDepth_;
19729       return *this;
19730     }
19731 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19732 
19733 
operator VkViewport const&VULKAN_HPP_NAMESPACE::Viewport19734     operator VkViewport const &() const VULKAN_HPP_NOEXCEPT
19735     {
19736       return *reinterpret_cast<const VkViewport*>( this );
19737     }
19738 
operator VkViewport&VULKAN_HPP_NAMESPACE::Viewport19739     operator VkViewport &() VULKAN_HPP_NOEXCEPT
19740     {
19741       return *reinterpret_cast<VkViewport*>( this );
19742     }
19743 
19744 #if defined( VULKAN_HPP_USE_REFLECT )
19745 #if 14 <= VULKAN_HPP_CPP_VERSION
19746     auto
19747 #else
19748     std::tuple<float const &, float const &, float const &, float const &, float const &, float const &>
19749 #endif
reflectVULKAN_HPP_NAMESPACE::Viewport19750       reflect() const VULKAN_HPP_NOEXCEPT
19751     {
19752       return std::tie( x, y, width, height, minDepth, maxDepth );
19753     }
19754 #endif
19755 
19756 
19757 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
19758 auto operator<=>( Viewport const & ) const = default;
19759 #else
operator ==VULKAN_HPP_NAMESPACE::Viewport19760     bool operator==( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT
19761     {
19762 #if defined( VULKAN_HPP_USE_REFLECT )
19763       return this->reflect() == rhs.reflect();
19764 #else
19765       return ( x == rhs.x )
19766           && ( y == rhs.y )
19767           && ( width == rhs.width )
19768           && ( height == rhs.height )
19769           && ( minDepth == rhs.minDepth )
19770           && ( maxDepth == rhs.maxDepth );
19771 #endif
19772     }
19773 
operator !=VULKAN_HPP_NAMESPACE::Viewport19774     bool operator!=( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT
19775     {
19776       return !operator==( rhs );
19777     }
19778 #endif
19779 
19780     public:
19781     float x = {};
19782     float y = {};
19783     float width = {};
19784     float height = {};
19785     float minDepth = {};
19786     float maxDepth = {};
19787 
19788   };
19789 
19790   struct PipelineViewportStateCreateInfo
19791   {
19792     using NativeType = VkPipelineViewportStateCreateInfo;
19793 
19794     static const bool allowDuplicate = false;
19795     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportStateCreateInfo;
19796 
19797 
19798 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19799 VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ = {}, uint32_t viewportCount_ = {}, const VULKAN_HPP_NAMESPACE::Viewport * pViewports_ = {}, uint32_t scissorCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D * pScissors_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
19800     : pNext( pNext_ ), flags( flags_ ), viewportCount( viewportCount_ ), pViewports( pViewports_ ), scissorCount( scissorCount_ ), pScissors( pScissors_ )
19801     {}
19802 
19803     VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19804 
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19805     PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19806       : PipelineViewportStateCreateInfo( *reinterpret_cast<PipelineViewportStateCreateInfo const *>( &rhs ) )
19807     {}
19808 
19809 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineViewportStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19810     PipelineViewportStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors_ = {}, const void * pNext_ = nullptr )
19811     : pNext( pNext_ ), flags( flags_ ), viewportCount( static_cast<uint32_t>( viewports_.size() ) ), pViewports( viewports_.data() ), scissorCount( static_cast<uint32_t>( scissors_.size() ) ), pScissors( scissors_.data() )
19812     {}
19813 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19814 
19815 
19816     PipelineViewportStateCreateInfo & operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19817 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19818 
operator =VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19819     PipelineViewportStateCreateInfo & operator=( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19820     {
19821       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo const *>( &rhs );
19822       return *this;
19823     }
19824 
19825 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19826     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19827     {
19828       pNext = pNext_;
19829       return *this;
19830     }
19831 
setFlagsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19832     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
19833     {
19834       flags = flags_;
19835       return *this;
19836     }
19837 
setViewportCountVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19838     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT
19839     {
19840       viewportCount = viewportCount_;
19841       return *this;
19842     }
19843 
setPViewportsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19844     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPViewports( const VULKAN_HPP_NAMESPACE::Viewport * pViewports_ ) VULKAN_HPP_NOEXCEPT
19845     {
19846       pViewports = pViewports_;
19847       return *this;
19848     }
19849 
19850 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewportsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19851     PipelineViewportStateCreateInfo & setViewports( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports_ ) VULKAN_HPP_NOEXCEPT
19852     {
19853       viewportCount = static_cast<uint32_t>( viewports_.size() );
19854       pViewports = viewports_.data();
19855       return *this;
19856     }
19857 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19858 
setScissorCountVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19859     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setScissorCount( uint32_t scissorCount_ ) VULKAN_HPP_NOEXCEPT
19860     {
19861       scissorCount = scissorCount_;
19862       return *this;
19863     }
19864 
setPScissorsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19865     VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPScissors( const VULKAN_HPP_NAMESPACE::Rect2D * pScissors_ ) VULKAN_HPP_NOEXCEPT
19866     {
19867       pScissors = pScissors_;
19868       return *this;
19869     }
19870 
19871 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setScissorsVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19872     PipelineViewportStateCreateInfo & setScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors_ ) VULKAN_HPP_NOEXCEPT
19873     {
19874       scissorCount = static_cast<uint32_t>( scissors_.size() );
19875       pScissors = scissors_.data();
19876       return *this;
19877     }
19878 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
19879 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
19880 
19881 
operator VkPipelineViewportStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19882     operator VkPipelineViewportStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
19883     {
19884       return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>( this );
19885     }
19886 
operator VkPipelineViewportStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19887     operator VkPipelineViewportStateCreateInfo &() VULKAN_HPP_NOEXCEPT
19888     {
19889       return *reinterpret_cast<VkPipelineViewportStateCreateInfo*>( this );
19890     }
19891 
19892 #if defined( VULKAN_HPP_USE_REFLECT )
19893 #if 14 <= VULKAN_HPP_CPP_VERSION
19894     auto
19895 #else
19896     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Viewport * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
19897 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19898       reflect() const VULKAN_HPP_NOEXCEPT
19899     {
19900       return std::tie( sType, pNext, flags, viewportCount, pViewports, scissorCount, pScissors );
19901     }
19902 #endif
19903 
19904 
19905 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
19906 auto operator<=>( PipelineViewportStateCreateInfo const & ) const = default;
19907 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19908     bool operator==( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19909     {
19910 #if defined( VULKAN_HPP_USE_REFLECT )
19911       return this->reflect() == rhs.reflect();
19912 #else
19913       return ( sType == rhs.sType )
19914           && ( pNext == rhs.pNext )
19915           && ( flags == rhs.flags )
19916           && ( viewportCount == rhs.viewportCount )
19917           && ( pViewports == rhs.pViewports )
19918           && ( scissorCount == rhs.scissorCount )
19919           && ( pScissors == rhs.pScissors );
19920 #endif
19921     }
19922 
operator !=VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo19923     bool operator!=( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
19924     {
19925       return !operator==( rhs );
19926     }
19927 #endif
19928 
19929     public:
19930     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportStateCreateInfo;
19931     const void * pNext = {};
19932     VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags = {};
19933     uint32_t viewportCount = {};
19934     const VULKAN_HPP_NAMESPACE::Viewport * pViewports = {};
19935     uint32_t scissorCount = {};
19936     const VULKAN_HPP_NAMESPACE::Rect2D * pScissors = {};
19937 
19938   };
19939 
19940   template <>
19941   struct CppType<StructureType, StructureType::ePipelineViewportStateCreateInfo>
19942   {
19943     using Type = PipelineViewportStateCreateInfo;
19944   };
19945 
19946   struct PipelineRasterizationStateCreateInfo
19947   {
19948     using NativeType = VkPipelineRasterizationStateCreateInfo;
19949 
19950     static const bool allowDuplicate = false;
19951     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationStateCreateInfo;
19952 
19953 
19954 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo19955 VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ = {}, VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ = VULKAN_HPP_NAMESPACE::PolygonMode::eFill, VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ = {}, VULKAN_HPP_NAMESPACE::FrontFace frontFace_ = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise, VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ = {}, float depthBiasConstantFactor_ = {}, float depthBiasClamp_ = {}, float depthBiasSlopeFactor_ = {}, float lineWidth_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
19956     : pNext( pNext_ ), flags( flags_ ), depthClampEnable( depthClampEnable_ ), rasterizerDiscardEnable( rasterizerDiscardEnable_ ), polygonMode( polygonMode_ ), cullMode( cullMode_ ), frontFace( frontFace_ ), depthBiasEnable( depthBiasEnable_ ), depthBiasConstantFactor( depthBiasConstantFactor_ ), depthBiasClamp( depthBiasClamp_ ), depthBiasSlopeFactor( depthBiasSlopeFactor_ ), lineWidth( lineWidth_ )
19957     {}
19958 
19959     VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19960 
PipelineRasterizationStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo19961     PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19962       : PipelineRasterizationStateCreateInfo( *reinterpret_cast<PipelineRasterizationStateCreateInfo const *>( &rhs ) )
19963     {}
19964 
19965 
19966     PipelineRasterizationStateCreateInfo & operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
19967 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
19968 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo19969     PipelineRasterizationStateCreateInfo & operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
19970     {
19971       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo const *>( &rhs );
19972       return *this;
19973     }
19974 
19975 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo19976     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
19977     {
19978       pNext = pNext_;
19979       return *this;
19980     }
19981 
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo19982     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
19983     {
19984       flags = flags_;
19985       return *this;
19986     }
19987 
setDepthClampEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo19988     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthClampEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ ) VULKAN_HPP_NOEXCEPT
19989     {
19990       depthClampEnable = depthClampEnable_;
19991       return *this;
19992     }
19993 
setRasterizerDiscardEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo19994     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ ) VULKAN_HPP_NOEXCEPT
19995     {
19996       rasterizerDiscardEnable = rasterizerDiscardEnable_;
19997       return *this;
19998     }
19999 
setPolygonModeVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20000     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPolygonMode( VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ ) VULKAN_HPP_NOEXCEPT
20001     {
20002       polygonMode = polygonMode_;
20003       return *this;
20004     }
20005 
setCullModeVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20006     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ ) VULKAN_HPP_NOEXCEPT
20007     {
20008       cullMode = cullMode_;
20009       return *this;
20010     }
20011 
setFrontFaceVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20012     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace_ ) VULKAN_HPP_NOEXCEPT
20013     {
20014       frontFace = frontFace_;
20015       return *this;
20016     }
20017 
setDepthBiasEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20018     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ ) VULKAN_HPP_NOEXCEPT
20019     {
20020       depthBiasEnable = depthBiasEnable_;
20021       return *this;
20022     }
20023 
setDepthBiasConstantFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20024     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) VULKAN_HPP_NOEXCEPT
20025     {
20026       depthBiasConstantFactor = depthBiasConstantFactor_;
20027       return *this;
20028     }
20029 
setDepthBiasClampVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20030     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasClamp( float depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT
20031     {
20032       depthBiasClamp = depthBiasClamp_;
20033       return *this;
20034     }
20035 
setDepthBiasSlopeFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20036     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) VULKAN_HPP_NOEXCEPT
20037     {
20038       depthBiasSlopeFactor = depthBiasSlopeFactor_;
20039       return *this;
20040     }
20041 
setLineWidthVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20042     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setLineWidth( float lineWidth_ ) VULKAN_HPP_NOEXCEPT
20043     {
20044       lineWidth = lineWidth_;
20045       return *this;
20046     }
20047 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20048 
20049 
operator VkPipelineRasterizationStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20050     operator VkPipelineRasterizationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
20051     {
20052       return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>( this );
20053     }
20054 
operator VkPipelineRasterizationStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20055     operator VkPipelineRasterizationStateCreateInfo &() VULKAN_HPP_NOEXCEPT
20056     {
20057       return *reinterpret_cast<VkPipelineRasterizationStateCreateInfo*>( this );
20058     }
20059 
20060 #if defined( VULKAN_HPP_USE_REFLECT )
20061 #if 14 <= VULKAN_HPP_CPP_VERSION
20062     auto
20063 #else
20064     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::PolygonMode const &, VULKAN_HPP_NAMESPACE::CullModeFlags const &, VULKAN_HPP_NAMESPACE::FrontFace const &, VULKAN_HPP_NAMESPACE::Bool32 const &, float const &, float const &, float const &, float const &>
20065 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20066       reflect() const VULKAN_HPP_NOEXCEPT
20067     {
20068       return std::tie( sType, pNext, flags, depthClampEnable, rasterizerDiscardEnable, polygonMode, cullMode, frontFace, depthBiasEnable, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, lineWidth );
20069     }
20070 #endif
20071 
20072 
20073 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
20074 auto operator<=>( PipelineRasterizationStateCreateInfo const & ) const = default;
20075 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20076     bool operator==( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20077     {
20078 #if defined( VULKAN_HPP_USE_REFLECT )
20079       return this->reflect() == rhs.reflect();
20080 #else
20081       return ( sType == rhs.sType )
20082           && ( pNext == rhs.pNext )
20083           && ( flags == rhs.flags )
20084           && ( depthClampEnable == rhs.depthClampEnable )
20085           && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
20086           && ( polygonMode == rhs.polygonMode )
20087           && ( cullMode == rhs.cullMode )
20088           && ( frontFace == rhs.frontFace )
20089           && ( depthBiasEnable == rhs.depthBiasEnable )
20090           && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
20091           && ( depthBiasClamp == rhs.depthBiasClamp )
20092           && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
20093           && ( lineWidth == rhs.lineWidth );
20094 #endif
20095     }
20096 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo20097     bool operator!=( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20098     {
20099       return !operator==( rhs );
20100     }
20101 #endif
20102 
20103     public:
20104     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo;
20105     const void * pNext = {};
20106     VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags = {};
20107     VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable = {};
20108     VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable = {};
20109     VULKAN_HPP_NAMESPACE::PolygonMode polygonMode = VULKAN_HPP_NAMESPACE::PolygonMode::eFill;
20110     VULKAN_HPP_NAMESPACE::CullModeFlags cullMode = {};
20111     VULKAN_HPP_NAMESPACE::FrontFace frontFace = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise;
20112     VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable = {};
20113     float depthBiasConstantFactor = {};
20114     float depthBiasClamp = {};
20115     float depthBiasSlopeFactor = {};
20116     float lineWidth = {};
20117 
20118   };
20119 
20120   template <>
20121   struct CppType<StructureType, StructureType::ePipelineRasterizationStateCreateInfo>
20122   {
20123     using Type = PipelineRasterizationStateCreateInfo;
20124   };
20125 
20126   struct PipelineMultisampleStateCreateInfo
20127   {
20128     using NativeType = VkPipelineMultisampleStateCreateInfo;
20129 
20130     static const bool allowDuplicate = false;
20131     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineMultisampleStateCreateInfo;
20132 
20133 
20134 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineMultisampleStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20135 VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ = {}, float minSampleShading_ = {}, const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask_ = {}, VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
20136     : pNext( pNext_ ), flags( flags_ ), rasterizationSamples( rasterizationSamples_ ), sampleShadingEnable( sampleShadingEnable_ ), minSampleShading( minSampleShading_ ), pSampleMask( pSampleMask_ ), alphaToCoverageEnable( alphaToCoverageEnable_ ), alphaToOneEnable( alphaToOneEnable_ )
20137     {}
20138 
20139     VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20140 
PipelineMultisampleStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20141     PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20142       : PipelineMultisampleStateCreateInfo( *reinterpret_cast<PipelineMultisampleStateCreateInfo const *>( &rhs ) )
20143     {}
20144 
20145 
20146     PipelineMultisampleStateCreateInfo & operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20147 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20148 
operator =VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20149     PipelineMultisampleStateCreateInfo & operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20150     {
20151       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo const *>( &rhs );
20152       return *this;
20153     }
20154 
20155 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20156     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20157     {
20158       pNext = pNext_;
20159       return *this;
20160     }
20161 
setFlagsVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20162     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
20163     {
20164       flags = flags_;
20165       return *this;
20166     }
20167 
setRasterizationSamplesVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20168     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT
20169     {
20170       rasterizationSamples = rasterizationSamples_;
20171       return *this;
20172     }
20173 
setSampleShadingEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20174     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setSampleShadingEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ ) VULKAN_HPP_NOEXCEPT
20175     {
20176       sampleShadingEnable = sampleShadingEnable_;
20177       return *this;
20178     }
20179 
setMinSampleShadingVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20180     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setMinSampleShading( float minSampleShading_ ) VULKAN_HPP_NOEXCEPT
20181     {
20182       minSampleShading = minSampleShading_;
20183       return *this;
20184     }
20185 
setPSampleMaskVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20186     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPSampleMask( const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask_ ) VULKAN_HPP_NOEXCEPT
20187     {
20188       pSampleMask = pSampleMask_;
20189       return *this;
20190     }
20191 
setAlphaToCoverageEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20192     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setAlphaToCoverageEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ ) VULKAN_HPP_NOEXCEPT
20193     {
20194       alphaToCoverageEnable = alphaToCoverageEnable_;
20195       return *this;
20196     }
20197 
setAlphaToOneEnableVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20198     VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setAlphaToOneEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ ) VULKAN_HPP_NOEXCEPT
20199     {
20200       alphaToOneEnable = alphaToOneEnable_;
20201       return *this;
20202     }
20203 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20204 
20205 
operator VkPipelineMultisampleStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20206     operator VkPipelineMultisampleStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
20207     {
20208       return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>( this );
20209     }
20210 
operator VkPipelineMultisampleStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20211     operator VkPipelineMultisampleStateCreateInfo &() VULKAN_HPP_NOEXCEPT
20212     {
20213       return *reinterpret_cast<VkPipelineMultisampleStateCreateInfo*>( this );
20214     }
20215 
20216 #if defined( VULKAN_HPP_USE_REFLECT )
20217 #if 14 <= VULKAN_HPP_CPP_VERSION
20218     auto
20219 #else
20220     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &, VULKAN_HPP_NAMESPACE::Bool32 const &, float const &, const VULKAN_HPP_NAMESPACE::SampleMask * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
20221 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20222       reflect() const VULKAN_HPP_NOEXCEPT
20223     {
20224       return std::tie( sType, pNext, flags, rasterizationSamples, sampleShadingEnable, minSampleShading, pSampleMask, alphaToCoverageEnable, alphaToOneEnable );
20225     }
20226 #endif
20227 
20228 
20229 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
20230 auto operator<=>( PipelineMultisampleStateCreateInfo const & ) const = default;
20231 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20232     bool operator==( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20233     {
20234 #if defined( VULKAN_HPP_USE_REFLECT )
20235       return this->reflect() == rhs.reflect();
20236 #else
20237       return ( sType == rhs.sType )
20238           && ( pNext == rhs.pNext )
20239           && ( flags == rhs.flags )
20240           && ( rasterizationSamples == rhs.rasterizationSamples )
20241           && ( sampleShadingEnable == rhs.sampleShadingEnable )
20242           && ( minSampleShading == rhs.minSampleShading )
20243           && ( pSampleMask == rhs.pSampleMask )
20244           && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
20245           && ( alphaToOneEnable == rhs.alphaToOneEnable );
20246 #endif
20247     }
20248 
operator !=VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo20249     bool operator!=( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20250     {
20251       return !operator==( rhs );
20252     }
20253 #endif
20254 
20255     public:
20256     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo;
20257     const void * pNext = {};
20258     VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags = {};
20259     VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
20260     VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable = {};
20261     float minSampleShading = {};
20262     const VULKAN_HPP_NAMESPACE::SampleMask * pSampleMask = {};
20263     VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable = {};
20264     VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable = {};
20265 
20266   };
20267 
20268   template <>
20269   struct CppType<StructureType, StructureType::ePipelineMultisampleStateCreateInfo>
20270   {
20271     using Type = PipelineMultisampleStateCreateInfo;
20272   };
20273 
20274   struct StencilOpState
20275   {
20276     using NativeType = VkStencilOpState;
20277 
20278 
20279 
20280 
20281 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
StencilOpStateVULKAN_HPP_NAMESPACE::StencilOpState20282 VULKAN_HPP_CONSTEXPR StencilOpState(VULKAN_HPP_NAMESPACE::StencilOp failOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, VULKAN_HPP_NAMESPACE::StencilOp passOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, VULKAN_HPP_NAMESPACE::CompareOp compareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever, uint32_t compareMask_ = {}, uint32_t writeMask_ = {}, uint32_t reference_ = {}) VULKAN_HPP_NOEXCEPT
20283     : failOp( failOp_ ), passOp( passOp_ ), depthFailOp( depthFailOp_ ), compareOp( compareOp_ ), compareMask( compareMask_ ), writeMask( writeMask_ ), reference( reference_ )
20284     {}
20285 
20286     VULKAN_HPP_CONSTEXPR StencilOpState( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20287 
StencilOpStateVULKAN_HPP_NAMESPACE::StencilOpState20288     StencilOpState( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
20289       : StencilOpState( *reinterpret_cast<StencilOpState const *>( &rhs ) )
20290     {}
20291 
20292 
20293     StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20294 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20295 
operator =VULKAN_HPP_NAMESPACE::StencilOpState20296     StencilOpState & operator=( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT
20297     {
20298       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::StencilOpState const *>( &rhs );
20299       return *this;
20300     }
20301 
20302 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFailOpVULKAN_HPP_NAMESPACE::StencilOpState20303     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setFailOp( VULKAN_HPP_NAMESPACE::StencilOp failOp_ ) VULKAN_HPP_NOEXCEPT
20304     {
20305       failOp = failOp_;
20306       return *this;
20307     }
20308 
setPassOpVULKAN_HPP_NAMESPACE::StencilOpState20309     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setPassOp( VULKAN_HPP_NAMESPACE::StencilOp passOp_ ) VULKAN_HPP_NOEXCEPT
20310     {
20311       passOp = passOp_;
20312       return *this;
20313     }
20314 
setDepthFailOpVULKAN_HPP_NAMESPACE::StencilOpState20315     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setDepthFailOp( VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ ) VULKAN_HPP_NOEXCEPT
20316     {
20317       depthFailOp = depthFailOp_;
20318       return *this;
20319     }
20320 
setCompareOpVULKAN_HPP_NAMESPACE::StencilOpState20321     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT
20322     {
20323       compareOp = compareOp_;
20324       return *this;
20325     }
20326 
setCompareMaskVULKAN_HPP_NAMESPACE::StencilOpState20327     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareMask( uint32_t compareMask_ ) VULKAN_HPP_NOEXCEPT
20328     {
20329       compareMask = compareMask_;
20330       return *this;
20331     }
20332 
setWriteMaskVULKAN_HPP_NAMESPACE::StencilOpState20333     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setWriteMask( uint32_t writeMask_ ) VULKAN_HPP_NOEXCEPT
20334     {
20335       writeMask = writeMask_;
20336       return *this;
20337     }
20338 
setReferenceVULKAN_HPP_NAMESPACE::StencilOpState20339     VULKAN_HPP_CONSTEXPR_14 StencilOpState & setReference( uint32_t reference_ ) VULKAN_HPP_NOEXCEPT
20340     {
20341       reference = reference_;
20342       return *this;
20343     }
20344 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20345 
20346 
operator VkStencilOpState const&VULKAN_HPP_NAMESPACE::StencilOpState20347     operator VkStencilOpState const &() const VULKAN_HPP_NOEXCEPT
20348     {
20349       return *reinterpret_cast<const VkStencilOpState*>( this );
20350     }
20351 
operator VkStencilOpState&VULKAN_HPP_NAMESPACE::StencilOpState20352     operator VkStencilOpState &() VULKAN_HPP_NOEXCEPT
20353     {
20354       return *reinterpret_cast<VkStencilOpState*>( this );
20355     }
20356 
20357 #if defined( VULKAN_HPP_USE_REFLECT )
20358 #if 14 <= VULKAN_HPP_CPP_VERSION
20359     auto
20360 #else
20361     std::tuple<VULKAN_HPP_NAMESPACE::StencilOp const &, VULKAN_HPP_NAMESPACE::StencilOp const &, VULKAN_HPP_NAMESPACE::StencilOp const &, VULKAN_HPP_NAMESPACE::CompareOp const &, uint32_t const &, uint32_t const &, uint32_t const &>
20362 #endif
reflectVULKAN_HPP_NAMESPACE::StencilOpState20363       reflect() const VULKAN_HPP_NOEXCEPT
20364     {
20365       return std::tie( failOp, passOp, depthFailOp, compareOp, compareMask, writeMask, reference );
20366     }
20367 #endif
20368 
20369 
20370 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
20371 auto operator<=>( StencilOpState const & ) const = default;
20372 #else
operator ==VULKAN_HPP_NAMESPACE::StencilOpState20373     bool operator==( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT
20374     {
20375 #if defined( VULKAN_HPP_USE_REFLECT )
20376       return this->reflect() == rhs.reflect();
20377 #else
20378       return ( failOp == rhs.failOp )
20379           && ( passOp == rhs.passOp )
20380           && ( depthFailOp == rhs.depthFailOp )
20381           && ( compareOp == rhs.compareOp )
20382           && ( compareMask == rhs.compareMask )
20383           && ( writeMask == rhs.writeMask )
20384           && ( reference == rhs.reference );
20385 #endif
20386     }
20387 
operator !=VULKAN_HPP_NAMESPACE::StencilOpState20388     bool operator!=( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT
20389     {
20390       return !operator==( rhs );
20391     }
20392 #endif
20393 
20394     public:
20395     VULKAN_HPP_NAMESPACE::StencilOp failOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
20396     VULKAN_HPP_NAMESPACE::StencilOp passOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
20397     VULKAN_HPP_NAMESPACE::StencilOp depthFailOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep;
20398     VULKAN_HPP_NAMESPACE::CompareOp compareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
20399     uint32_t compareMask = {};
20400     uint32_t writeMask = {};
20401     uint32_t reference = {};
20402 
20403   };
20404 
20405   struct PipelineDepthStencilStateCreateInfo
20406   {
20407     using NativeType = VkPipelineDepthStencilStateCreateInfo;
20408 
20409     static const bool allowDuplicate = false;
20410     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDepthStencilStateCreateInfo;
20411 
20412 
20413 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDepthStencilStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20414 VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ = {}, VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever, VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ = {}, VULKAN_HPP_NAMESPACE::StencilOpState front_ = {}, VULKAN_HPP_NAMESPACE::StencilOpState back_ = {}, float minDepthBounds_ = {}, float maxDepthBounds_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
20415     : pNext( pNext_ ), flags( flags_ ), depthTestEnable( depthTestEnable_ ), depthWriteEnable( depthWriteEnable_ ), depthCompareOp( depthCompareOp_ ), depthBoundsTestEnable( depthBoundsTestEnable_ ), stencilTestEnable( stencilTestEnable_ ), front( front_ ), back( back_ ), minDepthBounds( minDepthBounds_ ), maxDepthBounds( maxDepthBounds_ )
20416     {}
20417 
20418     VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20419 
PipelineDepthStencilStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20420     PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20421       : PipelineDepthStencilStateCreateInfo( *reinterpret_cast<PipelineDepthStencilStateCreateInfo const *>( &rhs ) )
20422     {}
20423 
20424 
20425     PipelineDepthStencilStateCreateInfo & operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20426 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20427 
operator =VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20428     PipelineDepthStencilStateCreateInfo & operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20429     {
20430       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo const *>( &rhs );
20431       return *this;
20432     }
20433 
20434 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20435     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20436     {
20437       pNext = pNext_;
20438       return *this;
20439     }
20440 
setFlagsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20441     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
20442     {
20443       flags = flags_;
20444       return *this;
20445     }
20446 
setDepthTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20447     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ ) VULKAN_HPP_NOEXCEPT
20448     {
20449       depthTestEnable = depthTestEnable_;
20450       return *this;
20451     }
20452 
setDepthWriteEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20453     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ ) VULKAN_HPP_NOEXCEPT
20454     {
20455       depthWriteEnable = depthWriteEnable_;
20456       return *this;
20457     }
20458 
setDepthCompareOpVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20459     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ ) VULKAN_HPP_NOEXCEPT
20460     {
20461       depthCompareOp = depthCompareOp_;
20462       return *this;
20463     }
20464 
setDepthBoundsTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20465     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ ) VULKAN_HPP_NOEXCEPT
20466     {
20467       depthBoundsTestEnable = depthBoundsTestEnable_;
20468       return *this;
20469     }
20470 
setStencilTestEnableVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20471     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ ) VULKAN_HPP_NOEXCEPT
20472     {
20473       stencilTestEnable = stencilTestEnable_;
20474       return *this;
20475     }
20476 
setFrontVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20477     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setFront( VULKAN_HPP_NAMESPACE::StencilOpState const & front_ ) VULKAN_HPP_NOEXCEPT
20478     {
20479       front = front_;
20480       return *this;
20481     }
20482 
setBackVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20483     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setBack( VULKAN_HPP_NAMESPACE::StencilOpState const & back_ ) VULKAN_HPP_NOEXCEPT
20484     {
20485       back = back_;
20486       return *this;
20487     }
20488 
setMinDepthBoundsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20489     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setMinDepthBounds( float minDepthBounds_ ) VULKAN_HPP_NOEXCEPT
20490     {
20491       minDepthBounds = minDepthBounds_;
20492       return *this;
20493     }
20494 
setMaxDepthBoundsVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20495     VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setMaxDepthBounds( float maxDepthBounds_ ) VULKAN_HPP_NOEXCEPT
20496     {
20497       maxDepthBounds = maxDepthBounds_;
20498       return *this;
20499     }
20500 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20501 
20502 
operator VkPipelineDepthStencilStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20503     operator VkPipelineDepthStencilStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
20504     {
20505       return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>( this );
20506     }
20507 
operator VkPipelineDepthStencilStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20508     operator VkPipelineDepthStencilStateCreateInfo &() VULKAN_HPP_NOEXCEPT
20509     {
20510       return *reinterpret_cast<VkPipelineDepthStencilStateCreateInfo*>( this );
20511     }
20512 
20513 #if defined( VULKAN_HPP_USE_REFLECT )
20514 #if 14 <= VULKAN_HPP_CPP_VERSION
20515     auto
20516 #else
20517     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::CompareOp const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::StencilOpState const &, VULKAN_HPP_NAMESPACE::StencilOpState const &, float const &, float const &>
20518 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20519       reflect() const VULKAN_HPP_NOEXCEPT
20520     {
20521       return std::tie( sType, pNext, flags, depthTestEnable, depthWriteEnable, depthCompareOp, depthBoundsTestEnable, stencilTestEnable, front, back, minDepthBounds, maxDepthBounds );
20522     }
20523 #endif
20524 
20525 
20526 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
20527 auto operator<=>( PipelineDepthStencilStateCreateInfo const & ) const = default;
20528 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20529     bool operator==( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20530     {
20531 #if defined( VULKAN_HPP_USE_REFLECT )
20532       return this->reflect() == rhs.reflect();
20533 #else
20534       return ( sType == rhs.sType )
20535           && ( pNext == rhs.pNext )
20536           && ( flags == rhs.flags )
20537           && ( depthTestEnable == rhs.depthTestEnable )
20538           && ( depthWriteEnable == rhs.depthWriteEnable )
20539           && ( depthCompareOp == rhs.depthCompareOp )
20540           && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
20541           && ( stencilTestEnable == rhs.stencilTestEnable )
20542           && ( front == rhs.front )
20543           && ( back == rhs.back )
20544           && ( minDepthBounds == rhs.minDepthBounds )
20545           && ( maxDepthBounds == rhs.maxDepthBounds );
20546 #endif
20547     }
20548 
operator !=VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo20549     bool operator!=( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20550     {
20551       return !operator==( rhs );
20552     }
20553 #endif
20554 
20555     public:
20556     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo;
20557     const void * pNext = {};
20558     VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags = {};
20559     VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable = {};
20560     VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable = {};
20561     VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
20562     VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable = {};
20563     VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable = {};
20564     VULKAN_HPP_NAMESPACE::StencilOpState front = {};
20565     VULKAN_HPP_NAMESPACE::StencilOpState back = {};
20566     float minDepthBounds = {};
20567     float maxDepthBounds = {};
20568 
20569   };
20570 
20571   template <>
20572   struct CppType<StructureType, StructureType::ePipelineDepthStencilStateCreateInfo>
20573   {
20574     using Type = PipelineDepthStencilStateCreateInfo;
20575   };
20576 
20577   struct PipelineColorBlendAttachmentState
20578   {
20579     using NativeType = VkPipelineColorBlendAttachmentState;
20580 
20581 
20582 
20583 
20584 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendAttachmentStateVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20585 VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState(VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ = {}, VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ = VULKAN_HPP_NAMESPACE::BlendOp::eAdd, VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ = VULKAN_HPP_NAMESPACE::BlendOp::eAdd, VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ = {}) VULKAN_HPP_NOEXCEPT
20586     : blendEnable( blendEnable_ ), srcColorBlendFactor( srcColorBlendFactor_ ), dstColorBlendFactor( dstColorBlendFactor_ ), colorBlendOp( colorBlendOp_ ), srcAlphaBlendFactor( srcAlphaBlendFactor_ ), dstAlphaBlendFactor( dstAlphaBlendFactor_ ), alphaBlendOp( alphaBlendOp_ ), colorWriteMask( colorWriteMask_ )
20587     {}
20588 
20589     VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20590 
PipelineColorBlendAttachmentStateVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20591     PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
20592       : PipelineColorBlendAttachmentState( *reinterpret_cast<PipelineColorBlendAttachmentState const *>( &rhs ) )
20593     {}
20594 
20595 
20596     PipelineColorBlendAttachmentState & operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20597 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20598 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20599     PipelineColorBlendAttachmentState & operator=( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT
20600     {
20601       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState const *>( &rhs );
20602       return *this;
20603     }
20604 
20605 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBlendEnableVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20606     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ ) VULKAN_HPP_NOEXCEPT
20607     {
20608       blendEnable = blendEnable_;
20609       return *this;
20610     }
20611 
setSrcColorBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20612     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setSrcColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
20613     {
20614       srcColorBlendFactor = srcColorBlendFactor_;
20615       return *this;
20616     }
20617 
setDstColorBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20618     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setDstColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT
20619     {
20620       dstColorBlendFactor = dstColorBlendFactor_;
20621       return *this;
20622     }
20623 
setColorBlendOpVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20624     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setColorBlendOp( VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ ) VULKAN_HPP_NOEXCEPT
20625     {
20626       colorBlendOp = colorBlendOp_;
20627       return *this;
20628     }
20629 
setSrcAlphaBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20630     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setSrcAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
20631     {
20632       srcAlphaBlendFactor = srcAlphaBlendFactor_;
20633       return *this;
20634     }
20635 
setDstAlphaBlendFactorVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20636     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setDstAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT
20637     {
20638       dstAlphaBlendFactor = dstAlphaBlendFactor_;
20639       return *this;
20640     }
20641 
setAlphaBlendOpVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20642     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setAlphaBlendOp( VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ ) VULKAN_HPP_NOEXCEPT
20643     {
20644       alphaBlendOp = alphaBlendOp_;
20645       return *this;
20646     }
20647 
setColorWriteMaskVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20648     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setColorWriteMask( VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ ) VULKAN_HPP_NOEXCEPT
20649     {
20650       colorWriteMask = colorWriteMask_;
20651       return *this;
20652     }
20653 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20654 
20655 
operator VkPipelineColorBlendAttachmentState const&VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20656     operator VkPipelineColorBlendAttachmentState const &() const VULKAN_HPP_NOEXCEPT
20657     {
20658       return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>( this );
20659     }
20660 
operator VkPipelineColorBlendAttachmentState&VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20661     operator VkPipelineColorBlendAttachmentState &() VULKAN_HPP_NOEXCEPT
20662     {
20663       return *reinterpret_cast<VkPipelineColorBlendAttachmentState*>( this );
20664     }
20665 
20666 #if defined( VULKAN_HPP_USE_REFLECT )
20667 #if 14 <= VULKAN_HPP_CPP_VERSION
20668     auto
20669 #else
20670     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::BlendFactor const &, VULKAN_HPP_NAMESPACE::BlendFactor const &, VULKAN_HPP_NAMESPACE::BlendOp const &, VULKAN_HPP_NAMESPACE::BlendFactor const &, VULKAN_HPP_NAMESPACE::BlendFactor const &, VULKAN_HPP_NAMESPACE::BlendOp const &, VULKAN_HPP_NAMESPACE::ColorComponentFlags const &>
20671 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20672       reflect() const VULKAN_HPP_NOEXCEPT
20673     {
20674       return std::tie( blendEnable, srcColorBlendFactor, dstColorBlendFactor, colorBlendOp, srcAlphaBlendFactor, dstAlphaBlendFactor, alphaBlendOp, colorWriteMask );
20675     }
20676 #endif
20677 
20678 
20679 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
20680 auto operator<=>( PipelineColorBlendAttachmentState const & ) const = default;
20681 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20682     bool operator==( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT
20683     {
20684 #if defined( VULKAN_HPP_USE_REFLECT )
20685       return this->reflect() == rhs.reflect();
20686 #else
20687       return ( blendEnable == rhs.blendEnable )
20688           && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
20689           && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
20690           && ( colorBlendOp == rhs.colorBlendOp )
20691           && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
20692           && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
20693           && ( alphaBlendOp == rhs.alphaBlendOp )
20694           && ( colorWriteMask == rhs.colorWriteMask );
20695 #endif
20696     }
20697 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState20698     bool operator!=( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT
20699     {
20700       return !operator==( rhs );
20701     }
20702 #endif
20703 
20704     public:
20705     VULKAN_HPP_NAMESPACE::Bool32 blendEnable = {};
20706     VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
20707     VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
20708     VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
20709     VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
20710     VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero;
20711     VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp = VULKAN_HPP_NAMESPACE::BlendOp::eAdd;
20712     VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask = {};
20713 
20714   };
20715 
20716   struct PipelineColorBlendStateCreateInfo
20717   {
20718     using NativeType = VkPipelineColorBlendStateCreateInfo;
20719 
20720     static const bool allowDuplicate = false;
20721     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorBlendStateCreateInfo;
20722 
20723 
20724 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20725 VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ = {}, VULKAN_HPP_NAMESPACE::LogicOp logicOp_ = VULKAN_HPP_NAMESPACE::LogicOp::eClear, uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_ = {}, std::array<float,4> const & blendConstants_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
20726     : pNext( pNext_ ), flags( flags_ ), logicOpEnable( logicOpEnable_ ), logicOp( logicOp_ ), attachmentCount( attachmentCount_ ), pAttachments( pAttachments_ ), blendConstants( blendConstants_ )
20727     {}
20728 
20729     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20730 
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20731     PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20732       : PipelineColorBlendStateCreateInfo( *reinterpret_cast<PipelineColorBlendStateCreateInfo const *>( &rhs ) )
20733     {}
20734 
20735 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineColorBlendStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20736     PipelineColorBlendStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_, VULKAN_HPP_NAMESPACE::LogicOp logicOp_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_, std::array<float,4> const & blendConstants_ = {}, const void * pNext_ = nullptr )
20737     : pNext( pNext_ ), flags( flags_ ), logicOpEnable( logicOpEnable_ ), logicOp( logicOp_ ), attachmentCount( static_cast<uint32_t>( attachments_.size() ) ), pAttachments( attachments_.data() ), blendConstants( blendConstants_ )
20738     {}
20739 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20740 
20741 
20742     PipelineColorBlendStateCreateInfo & operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20743 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20744 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20745     PipelineColorBlendStateCreateInfo & operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20746     {
20747       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo const *>( &rhs );
20748       return *this;
20749     }
20750 
20751 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20752     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20753     {
20754       pNext = pNext_;
20755       return *this;
20756     }
20757 
setFlagsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20758     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
20759     {
20760       flags = flags_;
20761       return *this;
20762     }
20763 
setLogicOpEnableVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20764     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setLogicOpEnable( VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ ) VULKAN_HPP_NOEXCEPT
20765     {
20766       logicOpEnable = logicOpEnable_;
20767       return *this;
20768     }
20769 
setLogicOpVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20770     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setLogicOp( VULKAN_HPP_NAMESPACE::LogicOp logicOp_ ) VULKAN_HPP_NOEXCEPT
20771     {
20772       logicOp = logicOp_;
20773       return *this;
20774     }
20775 
setAttachmentCountVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20776     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
20777     {
20778       attachmentCount = attachmentCount_;
20779       return *this;
20780     }
20781 
setPAttachmentsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20782     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments_ ) VULKAN_HPP_NOEXCEPT
20783     {
20784       pAttachments = pAttachments_;
20785       return *this;
20786     }
20787 
20788 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20789     PipelineColorBlendStateCreateInfo & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState> const & attachments_ ) VULKAN_HPP_NOEXCEPT
20790     {
20791       attachmentCount = static_cast<uint32_t>( attachments_.size() );
20792       pAttachments = attachments_.data();
20793       return *this;
20794     }
20795 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20796 
setBlendConstantsVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20797     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setBlendConstants( std::array<float,4> blendConstants_ ) VULKAN_HPP_NOEXCEPT
20798     {
20799       blendConstants = blendConstants_;
20800       return *this;
20801     }
20802 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20803 
20804 
operator VkPipelineColorBlendStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20805     operator VkPipelineColorBlendStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
20806     {
20807       return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>( this );
20808     }
20809 
operator VkPipelineColorBlendStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20810     operator VkPipelineColorBlendStateCreateInfo &() VULKAN_HPP_NOEXCEPT
20811     {
20812       return *reinterpret_cast<VkPipelineColorBlendStateCreateInfo*>( this );
20813     }
20814 
20815 #if defined( VULKAN_HPP_USE_REFLECT )
20816 #if 14 <= VULKAN_HPP_CPP_VERSION
20817     auto
20818 #else
20819     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::LogicOp const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> const &>
20820 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20821       reflect() const VULKAN_HPP_NOEXCEPT
20822     {
20823       return std::tie( sType, pNext, flags, logicOpEnable, logicOp, attachmentCount, pAttachments, blendConstants );
20824     }
20825 #endif
20826 
20827 
20828 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
20829 auto operator<=>( PipelineColorBlendStateCreateInfo const & ) const = default;
20830 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20831     bool operator==( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20832     {
20833 #if defined( VULKAN_HPP_USE_REFLECT )
20834       return this->reflect() == rhs.reflect();
20835 #else
20836       return ( sType == rhs.sType )
20837           && ( pNext == rhs.pNext )
20838           && ( flags == rhs.flags )
20839           && ( logicOpEnable == rhs.logicOpEnable )
20840           && ( logicOp == rhs.logicOp )
20841           && ( attachmentCount == rhs.attachmentCount )
20842           && ( pAttachments == rhs.pAttachments )
20843           && ( blendConstants == rhs.blendConstants );
20844 #endif
20845     }
20846 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo20847     bool operator!=( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20848     {
20849       return !operator==( rhs );
20850     }
20851 #endif
20852 
20853     public:
20854     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo;
20855     const void * pNext = {};
20856     VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags = {};
20857     VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable = {};
20858     VULKAN_HPP_NAMESPACE::LogicOp logicOp = VULKAN_HPP_NAMESPACE::LogicOp::eClear;
20859     uint32_t attachmentCount = {};
20860     const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState * pAttachments = {};
20861     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 4> blendConstants = {};
20862 
20863   };
20864 
20865   template <>
20866   struct CppType<StructureType, StructureType::ePipelineColorBlendStateCreateInfo>
20867   {
20868     using Type = PipelineColorBlendStateCreateInfo;
20869   };
20870 
20871   struct PipelineDynamicStateCreateInfo
20872   {
20873     using NativeType = VkPipelineDynamicStateCreateInfo;
20874 
20875     static const bool allowDuplicate = false;
20876     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDynamicStateCreateInfo;
20877 
20878 
20879 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20880 VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ = {}, uint32_t dynamicStateCount_ = {}, const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
20881     : pNext( pNext_ ), flags( flags_ ), dynamicStateCount( dynamicStateCount_ ), pDynamicStates( pDynamicStates_ )
20882     {}
20883 
20884     VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20885 
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20886     PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20887       : PipelineDynamicStateCreateInfo( *reinterpret_cast<PipelineDynamicStateCreateInfo const *>( &rhs ) )
20888     {}
20889 
20890 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineDynamicStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20891     PipelineDynamicStateCreateInfo( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_, const void * pNext_ = nullptr )
20892     : pNext( pNext_ ), flags( flags_ ), dynamicStateCount( static_cast<uint32_t>( dynamicStates_.size() ) ), pDynamicStates( dynamicStates_.data() )
20893     {}
20894 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20895 
20896 
20897     PipelineDynamicStateCreateInfo & operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
20898 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
20899 
operator =VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20900     PipelineDynamicStateCreateInfo & operator=( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
20901     {
20902       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo const *>( &rhs );
20903       return *this;
20904     }
20905 
20906 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20907     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
20908     {
20909       pNext = pNext_;
20910       return *this;
20911     }
20912 
setFlagsVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20913     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
20914     {
20915       flags = flags_;
20916       return *this;
20917     }
20918 
setDynamicStateCountVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20919     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setDynamicStateCount( uint32_t dynamicStateCount_ ) VULKAN_HPP_NOEXCEPT
20920     {
20921       dynamicStateCount = dynamicStateCount_;
20922       return *this;
20923     }
20924 
setPDynamicStatesVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20925     VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPDynamicStates( const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates_ ) VULKAN_HPP_NOEXCEPT
20926     {
20927       pDynamicStates = pDynamicStates_;
20928       return *this;
20929     }
20930 
20931 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDynamicStatesVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20932     PipelineDynamicStateCreateInfo & setDynamicStates( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DynamicState> const & dynamicStates_ ) VULKAN_HPP_NOEXCEPT
20933     {
20934       dynamicStateCount = static_cast<uint32_t>( dynamicStates_.size() );
20935       pDynamicStates = dynamicStates_.data();
20936       return *this;
20937     }
20938 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
20939 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
20940 
20941 
operator VkPipelineDynamicStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20942     operator VkPipelineDynamicStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
20943     {
20944       return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>( this );
20945     }
20946 
operator VkPipelineDynamicStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20947     operator VkPipelineDynamicStateCreateInfo &() VULKAN_HPP_NOEXCEPT
20948     {
20949       return *reinterpret_cast<VkPipelineDynamicStateCreateInfo*>( this );
20950     }
20951 
20952 #if defined( VULKAN_HPP_USE_REFLECT )
20953 #if 14 <= VULKAN_HPP_CPP_VERSION
20954     auto
20955 #else
20956     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DynamicState * const &>
20957 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20958       reflect() const VULKAN_HPP_NOEXCEPT
20959     {
20960       return std::tie( sType, pNext, flags, dynamicStateCount, pDynamicStates );
20961     }
20962 #endif
20963 
20964 
20965 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
20966 auto operator<=>( PipelineDynamicStateCreateInfo const & ) const = default;
20967 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20968     bool operator==( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20969     {
20970 #if defined( VULKAN_HPP_USE_REFLECT )
20971       return this->reflect() == rhs.reflect();
20972 #else
20973       return ( sType == rhs.sType )
20974           && ( pNext == rhs.pNext )
20975           && ( flags == rhs.flags )
20976           && ( dynamicStateCount == rhs.dynamicStateCount )
20977           && ( pDynamicStates == rhs.pDynamicStates );
20978 #endif
20979     }
20980 
operator !=VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo20981     bool operator!=( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
20982     {
20983       return !operator==( rhs );
20984     }
20985 #endif
20986 
20987     public:
20988     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDynamicStateCreateInfo;
20989     const void * pNext = {};
20990     VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags = {};
20991     uint32_t dynamicStateCount = {};
20992     const VULKAN_HPP_NAMESPACE::DynamicState * pDynamicStates = {};
20993 
20994   };
20995 
20996   template <>
20997   struct CppType<StructureType, StructureType::ePipelineDynamicStateCreateInfo>
20998   {
20999     using Type = PipelineDynamicStateCreateInfo;
21000   };
21001 
21002   struct GraphicsPipelineCreateInfo
21003   {
21004     using NativeType = VkGraphicsPipelineCreateInfo;
21005 
21006     static const bool allowDuplicate = false;
21007     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsPipelineCreateInfo;
21008 
21009 
21010 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21011 VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo(VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, uint32_t stageCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ = {}, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t subpass_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
21012     : pNext( pNext_ ), flags( flags_ ), stageCount( stageCount_ ), pStages( pStages_ ), pVertexInputState( pVertexInputState_ ), pInputAssemblyState( pInputAssemblyState_ ), pTessellationState( pTessellationState_ ), pViewportState( pViewportState_ ), pRasterizationState( pRasterizationState_ ), pMultisampleState( pMultisampleState_ ), pDepthStencilState( pDepthStencilState_ ), pColorBlendState( pColorBlendState_ ), pDynamicState( pDynamicState_ ), layout( layout_ ), renderPass( renderPass_ ), subpass( subpass_ ), basePipelineHandle( basePipelineHandle_ ), basePipelineIndex( basePipelineIndex_ )
21013     {}
21014 
21015     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21016 
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21017     GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
21018       : GraphicsPipelineCreateInfo( *reinterpret_cast<GraphicsPipelineCreateInfo const *>( &rhs ) )
21019     {}
21020 
21021 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
GraphicsPipelineCreateInfoVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21022     GraphicsPipelineCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t subpass_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {}, const void * pNext_ = nullptr )
21023     : pNext( pNext_ ), flags( flags_ ), stageCount( static_cast<uint32_t>( stages_.size() ) ), pStages( stages_.data() ), pVertexInputState( pVertexInputState_ ), pInputAssemblyState( pInputAssemblyState_ ), pTessellationState( pTessellationState_ ), pViewportState( pViewportState_ ), pRasterizationState( pRasterizationState_ ), pMultisampleState( pMultisampleState_ ), pDepthStencilState( pDepthStencilState_ ), pColorBlendState( pColorBlendState_ ), pDynamicState( pDynamicState_ ), layout( layout_ ), renderPass( renderPass_ ), subpass( subpass_ ), basePipelineHandle( basePipelineHandle_ ), basePipelineIndex( basePipelineIndex_ )
21024     {}
21025 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21026 
21027 
21028     GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21029 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21030 
operator =VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21031     GraphicsPipelineCreateInfo & operator=( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
21032     {
21033       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const *>( &rhs );
21034       return *this;
21035     }
21036 
21037 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21038     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21039     {
21040       pNext = pNext_;
21041       return *this;
21042     }
21043 
setFlagsVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21044     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
21045     {
21046       flags = flags_;
21047       return *this;
21048     }
21049 
setStageCountVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21050     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT
21051     {
21052       stageCount = stageCount_;
21053       return *this;
21054     }
21055 
setPStagesVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21056     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages_ ) VULKAN_HPP_NOEXCEPT
21057     {
21058       pStages = pStages_;
21059       return *this;
21060     }
21061 
21062 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setStagesVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21063     GraphicsPipelineCreateInfo & setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo> const & stages_ ) VULKAN_HPP_NOEXCEPT
21064     {
21065       stageCount = static_cast<uint32_t>( stages_.size() );
21066       pStages = stages_.data();
21067       return *this;
21068     }
21069 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21070 
setPVertexInputStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21071     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPVertexInputState( const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState_ ) VULKAN_HPP_NOEXCEPT
21072     {
21073       pVertexInputState = pVertexInputState_;
21074       return *this;
21075     }
21076 
setPInputAssemblyStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21077     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPInputAssemblyState( const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState_ ) VULKAN_HPP_NOEXCEPT
21078     {
21079       pInputAssemblyState = pInputAssemblyState_;
21080       return *this;
21081     }
21082 
setPTessellationStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21083     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPTessellationState( const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState_ ) VULKAN_HPP_NOEXCEPT
21084     {
21085       pTessellationState = pTessellationState_;
21086       return *this;
21087     }
21088 
setPViewportStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21089     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPViewportState( const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState_ ) VULKAN_HPP_NOEXCEPT
21090     {
21091       pViewportState = pViewportState_;
21092       return *this;
21093     }
21094 
setPRasterizationStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21095     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPRasterizationState( const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState_ ) VULKAN_HPP_NOEXCEPT
21096     {
21097       pRasterizationState = pRasterizationState_;
21098       return *this;
21099     }
21100 
setPMultisampleStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21101     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPMultisampleState( const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState_ ) VULKAN_HPP_NOEXCEPT
21102     {
21103       pMultisampleState = pMultisampleState_;
21104       return *this;
21105     }
21106 
setPDepthStencilStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21107     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPDepthStencilState( const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState_ ) VULKAN_HPP_NOEXCEPT
21108     {
21109       pDepthStencilState = pDepthStencilState_;
21110       return *this;
21111     }
21112 
setPColorBlendStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21113     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPColorBlendState( const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState_ ) VULKAN_HPP_NOEXCEPT
21114     {
21115       pColorBlendState = pColorBlendState_;
21116       return *this;
21117     }
21118 
setPDynamicStateVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21119     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPDynamicState( const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState_ ) VULKAN_HPP_NOEXCEPT
21120     {
21121       pDynamicState = pDynamicState_;
21122       return *this;
21123     }
21124 
setLayoutVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21125     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT
21126     {
21127       layout = layout_;
21128       return *this;
21129     }
21130 
setRenderPassVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21131     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
21132     {
21133       renderPass = renderPass_;
21134       return *this;
21135     }
21136 
setSubpassVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21137     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
21138     {
21139       subpass = subpass_;
21140       return *this;
21141     }
21142 
setBasePipelineHandleVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21143     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT
21144     {
21145       basePipelineHandle = basePipelineHandle_;
21146       return *this;
21147     }
21148 
setBasePipelineIndexVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21149     VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT
21150     {
21151       basePipelineIndex = basePipelineIndex_;
21152       return *this;
21153     }
21154 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21155 
21156 
operator VkGraphicsPipelineCreateInfo const&VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21157     operator VkGraphicsPipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
21158     {
21159       return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( this );
21160     }
21161 
operator VkGraphicsPipelineCreateInfo&VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21162     operator VkGraphicsPipelineCreateInfo &() VULKAN_HPP_NOEXCEPT
21163     {
21164       return *reinterpret_cast<VkGraphicsPipelineCreateInfo*>( this );
21165     }
21166 
21167 #if defined( VULKAN_HPP_USE_REFLECT )
21168 #if 14 <= VULKAN_HPP_CPP_VERSION
21169     auto
21170 #else
21171     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * const &, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * const &, VULKAN_HPP_NAMESPACE::PipelineLayout const &, VULKAN_HPP_NAMESPACE::RenderPass const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Pipeline const &, int32_t const &>
21172 #endif
reflectVULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21173       reflect() const VULKAN_HPP_NOEXCEPT
21174     {
21175       return std::tie( sType, pNext, flags, stageCount, pStages, pVertexInputState, pInputAssemblyState, pTessellationState, pViewportState, pRasterizationState, pMultisampleState, pDepthStencilState, pColorBlendState, pDynamicState, layout, renderPass, subpass, basePipelineHandle, basePipelineIndex );
21176     }
21177 #endif
21178 
21179 
21180 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
21181 auto operator<=>( GraphicsPipelineCreateInfo const & ) const = default;
21182 #else
operator ==VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21183     bool operator==( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
21184     {
21185 #if defined( VULKAN_HPP_USE_REFLECT )
21186       return this->reflect() == rhs.reflect();
21187 #else
21188       return ( sType == rhs.sType )
21189           && ( pNext == rhs.pNext )
21190           && ( flags == rhs.flags )
21191           && ( stageCount == rhs.stageCount )
21192           && ( pStages == rhs.pStages )
21193           && ( pVertexInputState == rhs.pVertexInputState )
21194           && ( pInputAssemblyState == rhs.pInputAssemblyState )
21195           && ( pTessellationState == rhs.pTessellationState )
21196           && ( pViewportState == rhs.pViewportState )
21197           && ( pRasterizationState == rhs.pRasterizationState )
21198           && ( pMultisampleState == rhs.pMultisampleState )
21199           && ( pDepthStencilState == rhs.pDepthStencilState )
21200           && ( pColorBlendState == rhs.pColorBlendState )
21201           && ( pDynamicState == rhs.pDynamicState )
21202           && ( layout == rhs.layout )
21203           && ( renderPass == rhs.renderPass )
21204           && ( subpass == rhs.subpass )
21205           && ( basePipelineHandle == rhs.basePipelineHandle )
21206           && ( basePipelineIndex == rhs.basePipelineIndex );
21207 #endif
21208     }
21209 
operator !=VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo21210     bool operator!=( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
21211     {
21212       return !operator==( rhs );
21213     }
21214 #endif
21215 
21216     public:
21217     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineCreateInfo;
21218     const void * pNext = {};
21219     VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {};
21220     uint32_t stageCount = {};
21221     const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo * pStages = {};
21222     const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo * pVertexInputState = {};
21223     const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo * pInputAssemblyState = {};
21224     const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo * pTessellationState = {};
21225     const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo * pViewportState = {};
21226     const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo * pRasterizationState = {};
21227     const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo * pMultisampleState = {};
21228     const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo * pDepthStencilState = {};
21229     const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo * pColorBlendState = {};
21230     const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo * pDynamicState = {};
21231     VULKAN_HPP_NAMESPACE::PipelineLayout layout = {};
21232     VULKAN_HPP_NAMESPACE::RenderPass renderPass = {};
21233     uint32_t subpass = {};
21234     VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {};
21235     int32_t basePipelineIndex = {};
21236 
21237   };
21238 
21239   template <>
21240   struct CppType<StructureType, StructureType::eGraphicsPipelineCreateInfo>
21241   {
21242     using Type = GraphicsPipelineCreateInfo;
21243   };
21244 
21245   struct XYColorEXT
21246   {
21247     using NativeType = VkXYColorEXT;
21248 
21249 
21250 
21251 
21252 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
XYColorEXTVULKAN_HPP_NAMESPACE::XYColorEXT21253 VULKAN_HPP_CONSTEXPR XYColorEXT(float x_ = {}, float y_ = {}) VULKAN_HPP_NOEXCEPT
21254     : x( x_ ), y( y_ )
21255     {}
21256 
21257     VULKAN_HPP_CONSTEXPR XYColorEXT( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21258 
XYColorEXTVULKAN_HPP_NAMESPACE::XYColorEXT21259     XYColorEXT( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21260       : XYColorEXT( *reinterpret_cast<XYColorEXT const *>( &rhs ) )
21261     {}
21262 
21263 
21264     XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21265 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21266 
operator =VULKAN_HPP_NAMESPACE::XYColorEXT21267     XYColorEXT & operator=( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21268     {
21269       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::XYColorEXT const *>( &rhs );
21270       return *this;
21271     }
21272 
21273 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setXVULKAN_HPP_NAMESPACE::XYColorEXT21274     VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT
21275     {
21276       x = x_;
21277       return *this;
21278     }
21279 
setYVULKAN_HPP_NAMESPACE::XYColorEXT21280     VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT
21281     {
21282       y = y_;
21283       return *this;
21284     }
21285 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21286 
21287 
operator VkXYColorEXT const&VULKAN_HPP_NAMESPACE::XYColorEXT21288     operator VkXYColorEXT const &() const VULKAN_HPP_NOEXCEPT
21289     {
21290       return *reinterpret_cast<const VkXYColorEXT*>( this );
21291     }
21292 
operator VkXYColorEXT&VULKAN_HPP_NAMESPACE::XYColorEXT21293     operator VkXYColorEXT &() VULKAN_HPP_NOEXCEPT
21294     {
21295       return *reinterpret_cast<VkXYColorEXT*>( this );
21296     }
21297 
21298 #if defined( VULKAN_HPP_USE_REFLECT )
21299 #if 14 <= VULKAN_HPP_CPP_VERSION
21300     auto
21301 #else
21302     std::tuple<float const &, float const &>
21303 #endif
reflectVULKAN_HPP_NAMESPACE::XYColorEXT21304       reflect() const VULKAN_HPP_NOEXCEPT
21305     {
21306       return std::tie( x, y );
21307     }
21308 #endif
21309 
21310 
21311 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
21312 auto operator<=>( XYColorEXT const & ) const = default;
21313 #else
operator ==VULKAN_HPP_NAMESPACE::XYColorEXT21314     bool operator==( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21315     {
21316 #if defined( VULKAN_HPP_USE_REFLECT )
21317       return this->reflect() == rhs.reflect();
21318 #else
21319       return ( x == rhs.x )
21320           && ( y == rhs.y );
21321 #endif
21322     }
21323 
operator !=VULKAN_HPP_NAMESPACE::XYColorEXT21324     bool operator!=( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21325     {
21326       return !operator==( rhs );
21327     }
21328 #endif
21329 
21330     public:
21331     float x = {};
21332     float y = {};
21333 
21334   };
21335 
21336   struct HdrMetadataEXT
21337   {
21338     using NativeType = VkHdrMetadataEXT;
21339 
21340     static const bool allowDuplicate = false;
21341     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHdrMetadataEXT;
21342 
21343 
21344 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HdrMetadataEXTVULKAN_HPP_NAMESPACE::HdrMetadataEXT21345 VULKAN_HPP_CONSTEXPR HdrMetadataEXT(VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed_ = {}, VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen_ = {}, VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue_ = {}, VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint_ = {}, float maxLuminance_ = {}, float minLuminance_ = {}, float maxContentLightLevel_ = {}, float maxFrameAverageLightLevel_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
21346     : pNext( pNext_ ), displayPrimaryRed( displayPrimaryRed_ ), displayPrimaryGreen( displayPrimaryGreen_ ), displayPrimaryBlue( displayPrimaryBlue_ ), whitePoint( whitePoint_ ), maxLuminance( maxLuminance_ ), minLuminance( minLuminance_ ), maxContentLightLevel( maxContentLightLevel_ ), maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
21347     {}
21348 
21349     VULKAN_HPP_CONSTEXPR HdrMetadataEXT( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21350 
HdrMetadataEXTVULKAN_HPP_NAMESPACE::HdrMetadataEXT21351     HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21352       : HdrMetadataEXT( *reinterpret_cast<HdrMetadataEXT const *>( &rhs ) )
21353     {}
21354 
21355 
21356     HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21357 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21358 
operator =VULKAN_HPP_NAMESPACE::HdrMetadataEXT21359     HdrMetadataEXT & operator=( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21360     {
21361       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HdrMetadataEXT const *>( &rhs );
21362       return *this;
21363     }
21364 
21365 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HdrMetadataEXT21366     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21367     {
21368       pNext = pNext_;
21369       return *this;
21370     }
21371 
setDisplayPrimaryRedVULKAN_HPP_NAMESPACE::HdrMetadataEXT21372     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryRed( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryRed_ ) VULKAN_HPP_NOEXCEPT
21373     {
21374       displayPrimaryRed = displayPrimaryRed_;
21375       return *this;
21376     }
21377 
setDisplayPrimaryGreenVULKAN_HPP_NAMESPACE::HdrMetadataEXT21378     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryGreen( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryGreen_ ) VULKAN_HPP_NOEXCEPT
21379     {
21380       displayPrimaryGreen = displayPrimaryGreen_;
21381       return *this;
21382     }
21383 
setDisplayPrimaryBlueVULKAN_HPP_NAMESPACE::HdrMetadataEXT21384     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryBlue( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryBlue_ ) VULKAN_HPP_NOEXCEPT
21385     {
21386       displayPrimaryBlue = displayPrimaryBlue_;
21387       return *this;
21388     }
21389 
setWhitePointVULKAN_HPP_NAMESPACE::HdrMetadataEXT21390     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setWhitePoint( VULKAN_HPP_NAMESPACE::XYColorEXT const & whitePoint_ ) VULKAN_HPP_NOEXCEPT
21391     {
21392       whitePoint = whitePoint_;
21393       return *this;
21394     }
21395 
setMaxLuminanceVULKAN_HPP_NAMESPACE::HdrMetadataEXT21396     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxLuminance( float maxLuminance_ ) VULKAN_HPP_NOEXCEPT
21397     {
21398       maxLuminance = maxLuminance_;
21399       return *this;
21400     }
21401 
setMinLuminanceVULKAN_HPP_NAMESPACE::HdrMetadataEXT21402     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMinLuminance( float minLuminance_ ) VULKAN_HPP_NOEXCEPT
21403     {
21404       minLuminance = minLuminance_;
21405       return *this;
21406     }
21407 
setMaxContentLightLevelVULKAN_HPP_NAMESPACE::HdrMetadataEXT21408     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxContentLightLevel( float maxContentLightLevel_ ) VULKAN_HPP_NOEXCEPT
21409     {
21410       maxContentLightLevel = maxContentLightLevel_;
21411       return *this;
21412     }
21413 
setMaxFrameAverageLightLevelVULKAN_HPP_NAMESPACE::HdrMetadataEXT21414     VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) VULKAN_HPP_NOEXCEPT
21415     {
21416       maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
21417       return *this;
21418     }
21419 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21420 
21421 
operator VkHdrMetadataEXT const&VULKAN_HPP_NAMESPACE::HdrMetadataEXT21422     operator VkHdrMetadataEXT const &() const VULKAN_HPP_NOEXCEPT
21423     {
21424       return *reinterpret_cast<const VkHdrMetadataEXT*>( this );
21425     }
21426 
operator VkHdrMetadataEXT&VULKAN_HPP_NAMESPACE::HdrMetadataEXT21427     operator VkHdrMetadataEXT &() VULKAN_HPP_NOEXCEPT
21428     {
21429       return *reinterpret_cast<VkHdrMetadataEXT*>( this );
21430     }
21431 
21432 #if defined( VULKAN_HPP_USE_REFLECT )
21433 #if 14 <= VULKAN_HPP_CPP_VERSION
21434     auto
21435 #else
21436     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::XYColorEXT const &, VULKAN_HPP_NAMESPACE::XYColorEXT const &, VULKAN_HPP_NAMESPACE::XYColorEXT const &, VULKAN_HPP_NAMESPACE::XYColorEXT const &, float const &, float const &, float const &, float const &>
21437 #endif
reflectVULKAN_HPP_NAMESPACE::HdrMetadataEXT21438       reflect() const VULKAN_HPP_NOEXCEPT
21439     {
21440       return std::tie( sType, pNext, displayPrimaryRed, displayPrimaryGreen, displayPrimaryBlue, whitePoint, maxLuminance, minLuminance, maxContentLightLevel, maxFrameAverageLightLevel );
21441     }
21442 #endif
21443 
21444 
21445 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
21446 auto operator<=>( HdrMetadataEXT const & ) const = default;
21447 #else
operator ==VULKAN_HPP_NAMESPACE::HdrMetadataEXT21448     bool operator==( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21449     {
21450 #if defined( VULKAN_HPP_USE_REFLECT )
21451       return this->reflect() == rhs.reflect();
21452 #else
21453       return ( sType == rhs.sType )
21454           && ( pNext == rhs.pNext )
21455           && ( displayPrimaryRed == rhs.displayPrimaryRed )
21456           && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
21457           && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
21458           && ( whitePoint == rhs.whitePoint )
21459           && ( maxLuminance == rhs.maxLuminance )
21460           && ( minLuminance == rhs.minLuminance )
21461           && ( maxContentLightLevel == rhs.maxContentLightLevel )
21462           && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
21463 #endif
21464     }
21465 
operator !=VULKAN_HPP_NAMESPACE::HdrMetadataEXT21466     bool operator!=( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21467     {
21468       return !operator==( rhs );
21469     }
21470 #endif
21471 
21472     public:
21473     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHdrMetadataEXT;
21474     const void * pNext = {};
21475     VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed = {};
21476     VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen = {};
21477     VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue = {};
21478     VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint = {};
21479     float maxLuminance = {};
21480     float minLuminance = {};
21481     float maxContentLightLevel = {};
21482     float maxFrameAverageLightLevel = {};
21483 
21484   };
21485 
21486   template <>
21487   struct CppType<StructureType, StructureType::eHdrMetadataEXT>
21488   {
21489     using Type = HdrMetadataEXT;
21490   };
21491 
21492   struct HeadlessSurfaceCreateInfoEXT
21493   {
21494     using NativeType = VkHeadlessSurfaceCreateInfoEXT;
21495 
21496     static const bool allowDuplicate = false;
21497     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHeadlessSurfaceCreateInfoEXT;
21498 
21499 
21500 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
HeadlessSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21501 VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT(VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
21502     : pNext( pNext_ ), flags( flags_ )
21503     {}
21504 
21505     VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21506 
HeadlessSurfaceCreateInfoEXTVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21507     HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21508       : HeadlessSurfaceCreateInfoEXT( *reinterpret_cast<HeadlessSurfaceCreateInfoEXT const *>( &rhs ) )
21509     {}
21510 
21511 
21512     HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21513 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21514 
operator =VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21515     HeadlessSurfaceCreateInfoEXT & operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21516     {
21517       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const *>( &rhs );
21518       return *this;
21519     }
21520 
21521 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21522     VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21523     {
21524       pNext = pNext_;
21525       return *this;
21526     }
21527 
setFlagsVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21528     VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
21529     {
21530       flags = flags_;
21531       return *this;
21532     }
21533 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21534 
21535 
operator VkHeadlessSurfaceCreateInfoEXT const&VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21536     operator VkHeadlessSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
21537     {
21538       return *reinterpret_cast<const VkHeadlessSurfaceCreateInfoEXT*>( this );
21539     }
21540 
operator VkHeadlessSurfaceCreateInfoEXT&VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21541     operator VkHeadlessSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
21542     {
21543       return *reinterpret_cast<VkHeadlessSurfaceCreateInfoEXT*>( this );
21544     }
21545 
21546 #if defined( VULKAN_HPP_USE_REFLECT )
21547 #if 14 <= VULKAN_HPP_CPP_VERSION
21548     auto
21549 #else
21550     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT const &>
21551 #endif
reflectVULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21552       reflect() const VULKAN_HPP_NOEXCEPT
21553     {
21554       return std::tie( sType, pNext, flags );
21555     }
21556 #endif
21557 
21558 
21559 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
21560 auto operator<=>( HeadlessSurfaceCreateInfoEXT const & ) const = default;
21561 #else
operator ==VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21562     bool operator==( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21563     {
21564 #if defined( VULKAN_HPP_USE_REFLECT )
21565       return this->reflect() == rhs.reflect();
21566 #else
21567       return ( sType == rhs.sType )
21568           && ( pNext == rhs.pNext )
21569           && ( flags == rhs.flags );
21570 #endif
21571     }
21572 
operator !=VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT21573     bool operator!=( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
21574     {
21575       return !operator==( rhs );
21576     }
21577 #endif
21578 
21579     public:
21580     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHeadlessSurfaceCreateInfoEXT;
21581     const void * pNext = {};
21582     VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags = {};
21583 
21584   };
21585 
21586   template <>
21587   struct CppType<StructureType, StructureType::eHeadlessSurfaceCreateInfoEXT>
21588   {
21589     using Type = HeadlessSurfaceCreateInfoEXT;
21590   };
21591 
21592   struct ImageBlit
21593   {
21594     using NativeType = VkImageBlit;
21595 
21596 
21597 
21598 
21599 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageBlitVULKAN_HPP_NAMESPACE::ImageBlit21600 VULKAN_HPP_CONSTEXPR_14 ImageBlit(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, std::array<VULKAN_HPP_NAMESPACE::Offset3D,2> const & srcOffsets_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, std::array<VULKAN_HPP_NAMESPACE::Offset3D,2> const & dstOffsets_ = {}) VULKAN_HPP_NOEXCEPT
21601     : srcSubresource( srcSubresource_ ), srcOffsets( srcOffsets_ ), dstSubresource( dstSubresource_ ), dstOffsets( dstOffsets_ )
21602     {}
21603 
21604     VULKAN_HPP_CONSTEXPR_14 ImageBlit( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21605 
ImageBlitVULKAN_HPP_NAMESPACE::ImageBlit21606     ImageBlit( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT
21607       : ImageBlit( *reinterpret_cast<ImageBlit const *>( &rhs ) )
21608     {}
21609 
21610 
21611     ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21612 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21613 
operator =VULKAN_HPP_NAMESPACE::ImageBlit21614     ImageBlit & operator=( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT
21615     {
21616       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageBlit const *>( &rhs );
21617       return *this;
21618     }
21619 
21620 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageBlit21621     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
21622     {
21623       srcSubresource = srcSubresource_;
21624       return *this;
21625     }
21626 
setSrcOffsetsVULKAN_HPP_NAMESPACE::ImageBlit21627     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setSrcOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D,2> const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT
21628     {
21629       srcOffsets = srcOffsets_;
21630       return *this;
21631     }
21632 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageBlit21633     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
21634     {
21635       dstSubresource = dstSubresource_;
21636       return *this;
21637     }
21638 
setDstOffsetsVULKAN_HPP_NAMESPACE::ImageBlit21639     VULKAN_HPP_CONSTEXPR_14 ImageBlit & setDstOffsets( std::array<VULKAN_HPP_NAMESPACE::Offset3D,2> const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT
21640     {
21641       dstOffsets = dstOffsets_;
21642       return *this;
21643     }
21644 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21645 
21646 
operator VkImageBlit const&VULKAN_HPP_NAMESPACE::ImageBlit21647     operator VkImageBlit const &() const VULKAN_HPP_NOEXCEPT
21648     {
21649       return *reinterpret_cast<const VkImageBlit*>( this );
21650     }
21651 
operator VkImageBlit&VULKAN_HPP_NAMESPACE::ImageBlit21652     operator VkImageBlit &() VULKAN_HPP_NOEXCEPT
21653     {
21654       return *reinterpret_cast<VkImageBlit*>( this );
21655     }
21656 
21657 #if defined( VULKAN_HPP_USE_REFLECT )
21658 #if 14 <= VULKAN_HPP_CPP_VERSION
21659     auto
21660 #else
21661     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> const &>
21662 #endif
reflectVULKAN_HPP_NAMESPACE::ImageBlit21663       reflect() const VULKAN_HPP_NOEXCEPT
21664     {
21665       return std::tie( srcSubresource, srcOffsets, dstSubresource, dstOffsets );
21666     }
21667 #endif
21668 
21669 
21670 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
21671 auto operator<=>( ImageBlit const & ) const = default;
21672 #else
operator ==VULKAN_HPP_NAMESPACE::ImageBlit21673     bool operator==( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT
21674     {
21675 #if defined( VULKAN_HPP_USE_REFLECT )
21676       return this->reflect() == rhs.reflect();
21677 #else
21678       return ( srcSubresource == rhs.srcSubresource )
21679           && ( srcOffsets == rhs.srcOffsets )
21680           && ( dstSubresource == rhs.dstSubresource )
21681           && ( dstOffsets == rhs.dstOffsets );
21682 #endif
21683     }
21684 
operator !=VULKAN_HPP_NAMESPACE::ImageBlit21685     bool operator!=( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT
21686     {
21687       return !operator==( rhs );
21688     }
21689 #endif
21690 
21691     public:
21692     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
21693     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> srcOffsets = {};
21694     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
21695     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::Offset3D, 2> dstOffsets = {};
21696 
21697   };
21698 
21699   struct ImageCopy
21700   {
21701     using NativeType = VkImageCopy;
21702 
21703 
21704 
21705 
21706 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageCopyVULKAN_HPP_NAMESPACE::ImageCopy21707 VULKAN_HPP_CONSTEXPR ImageCopy(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}) VULKAN_HPP_NOEXCEPT
21708     : srcSubresource( srcSubresource_ ), srcOffset( srcOffset_ ), dstSubresource( dstSubresource_ ), dstOffset( dstOffset_ ), extent( extent_ )
21709     {}
21710 
21711     VULKAN_HPP_CONSTEXPR ImageCopy( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21712 
ImageCopyVULKAN_HPP_NAMESPACE::ImageCopy21713     ImageCopy( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
21714       : ImageCopy( *reinterpret_cast<ImageCopy const *>( &rhs ) )
21715     {}
21716 
21717 
21718     ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21719 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21720 
operator =VULKAN_HPP_NAMESPACE::ImageCopy21721     ImageCopy & operator=( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT
21722     {
21723       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageCopy const *>( &rhs );
21724       return *this;
21725     }
21726 
21727 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageCopy21728     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
21729     {
21730       srcSubresource = srcSubresource_;
21731       return *this;
21732     }
21733 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageCopy21734     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
21735     {
21736       srcOffset = srcOffset_;
21737       return *this;
21738     }
21739 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageCopy21740     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
21741     {
21742       dstSubresource = dstSubresource_;
21743       return *this;
21744     }
21745 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageCopy21746     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
21747     {
21748       dstOffset = dstOffset_;
21749       return *this;
21750     }
21751 
setExtentVULKAN_HPP_NAMESPACE::ImageCopy21752     VULKAN_HPP_CONSTEXPR_14 ImageCopy & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
21753     {
21754       extent = extent_;
21755       return *this;
21756     }
21757 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21758 
21759 
operator VkImageCopy const&VULKAN_HPP_NAMESPACE::ImageCopy21760     operator VkImageCopy const &() const VULKAN_HPP_NOEXCEPT
21761     {
21762       return *reinterpret_cast<const VkImageCopy*>( this );
21763     }
21764 
operator VkImageCopy&VULKAN_HPP_NAMESPACE::ImageCopy21765     operator VkImageCopy &() VULKAN_HPP_NOEXCEPT
21766     {
21767       return *reinterpret_cast<VkImageCopy*>( this );
21768     }
21769 
21770 #if defined( VULKAN_HPP_USE_REFLECT )
21771 #if 14 <= VULKAN_HPP_CPP_VERSION
21772     auto
21773 #else
21774     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
21775 #endif
reflectVULKAN_HPP_NAMESPACE::ImageCopy21776       reflect() const VULKAN_HPP_NOEXCEPT
21777     {
21778       return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
21779     }
21780 #endif
21781 
21782 
21783 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
21784 auto operator<=>( ImageCopy const & ) const = default;
21785 #else
operator ==VULKAN_HPP_NAMESPACE::ImageCopy21786     bool operator==( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
21787     {
21788 #if defined( VULKAN_HPP_USE_REFLECT )
21789       return this->reflect() == rhs.reflect();
21790 #else
21791       return ( srcSubresource == rhs.srcSubresource )
21792           && ( srcOffset == rhs.srcOffset )
21793           && ( dstSubresource == rhs.dstSubresource )
21794           && ( dstOffset == rhs.dstOffset )
21795           && ( extent == rhs.extent );
21796 #endif
21797     }
21798 
operator !=VULKAN_HPP_NAMESPACE::ImageCopy21799     bool operator!=( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT
21800     {
21801       return !operator==( rhs );
21802     }
21803 #endif
21804 
21805     public:
21806     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
21807     VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {};
21808     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
21809     VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {};
21810     VULKAN_HPP_NAMESPACE::Extent3D extent = {};
21811 
21812   };
21813 
21814   struct SubresourceLayout
21815   {
21816     using NativeType = VkSubresourceLayout;
21817 
21818 
21819 
21820 
21821 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubresourceLayoutVULKAN_HPP_NAMESPACE::SubresourceLayout21822 VULKAN_HPP_CONSTEXPR SubresourceLayout(VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize depthPitch_ = {}) VULKAN_HPP_NOEXCEPT
21823     : offset( offset_ ), size( size_ ), rowPitch( rowPitch_ ), arrayPitch( arrayPitch_ ), depthPitch( depthPitch_ )
21824     {}
21825 
21826     VULKAN_HPP_CONSTEXPR SubresourceLayout( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21827 
SubresourceLayoutVULKAN_HPP_NAMESPACE::SubresourceLayout21828     SubresourceLayout( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
21829       : SubresourceLayout( *reinterpret_cast<SubresourceLayout const *>( &rhs ) )
21830     {}
21831 
21832 
21833     SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21834 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21835 
operator =VULKAN_HPP_NAMESPACE::SubresourceLayout21836     SubresourceLayout & operator=( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT
21837     {
21838       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubresourceLayout const *>( &rhs );
21839       return *this;
21840     }
21841 
21842 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::SubresourceLayout21843     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
21844     {
21845       offset = offset_;
21846       return *this;
21847     }
21848 
setSizeVULKAN_HPP_NAMESPACE::SubresourceLayout21849     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
21850     {
21851       size = size_;
21852       return *this;
21853     }
21854 
setRowPitchVULKAN_HPP_NAMESPACE::SubresourceLayout21855     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setRowPitch( VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_ ) VULKAN_HPP_NOEXCEPT
21856     {
21857       rowPitch = rowPitch_;
21858       return *this;
21859     }
21860 
setArrayPitchVULKAN_HPP_NAMESPACE::SubresourceLayout21861     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setArrayPitch( VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ ) VULKAN_HPP_NOEXCEPT
21862     {
21863       arrayPitch = arrayPitch_;
21864       return *this;
21865     }
21866 
setDepthPitchVULKAN_HPP_NAMESPACE::SubresourceLayout21867     VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setDepthPitch( VULKAN_HPP_NAMESPACE::DeviceSize depthPitch_ ) VULKAN_HPP_NOEXCEPT
21868     {
21869       depthPitch = depthPitch_;
21870       return *this;
21871     }
21872 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21873 
21874 
operator VkSubresourceLayout const&VULKAN_HPP_NAMESPACE::SubresourceLayout21875     operator VkSubresourceLayout const &() const VULKAN_HPP_NOEXCEPT
21876     {
21877       return *reinterpret_cast<const VkSubresourceLayout*>( this );
21878     }
21879 
operator VkSubresourceLayout&VULKAN_HPP_NAMESPACE::SubresourceLayout21880     operator VkSubresourceLayout &() VULKAN_HPP_NOEXCEPT
21881     {
21882       return *reinterpret_cast<VkSubresourceLayout*>( this );
21883     }
21884 
21885 #if defined( VULKAN_HPP_USE_REFLECT )
21886 #if 14 <= VULKAN_HPP_CPP_VERSION
21887     auto
21888 #else
21889     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
21890 #endif
reflectVULKAN_HPP_NAMESPACE::SubresourceLayout21891       reflect() const VULKAN_HPP_NOEXCEPT
21892     {
21893       return std::tie( offset, size, rowPitch, arrayPitch, depthPitch );
21894     }
21895 #endif
21896 
21897 
21898 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
21899 auto operator<=>( SubresourceLayout const & ) const = default;
21900 #else
operator ==VULKAN_HPP_NAMESPACE::SubresourceLayout21901     bool operator==( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
21902     {
21903 #if defined( VULKAN_HPP_USE_REFLECT )
21904       return this->reflect() == rhs.reflect();
21905 #else
21906       return ( offset == rhs.offset )
21907           && ( size == rhs.size )
21908           && ( rowPitch == rhs.rowPitch )
21909           && ( arrayPitch == rhs.arrayPitch )
21910           && ( depthPitch == rhs.depthPitch );
21911 #endif
21912     }
21913 
operator !=VULKAN_HPP_NAMESPACE::SubresourceLayout21914     bool operator!=( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT
21915     {
21916       return !operator==( rhs );
21917     }
21918 #endif
21919 
21920     public:
21921     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
21922     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
21923     VULKAN_HPP_NAMESPACE::DeviceSize rowPitch = {};
21924     VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch = {};
21925     VULKAN_HPP_NAMESPACE::DeviceSize depthPitch = {};
21926 
21927   };
21928 
21929   struct ImageDrmFormatModifierExplicitCreateInfoEXT
21930   {
21931     using NativeType = VkImageDrmFormatModifierExplicitCreateInfoEXT;
21932 
21933     static const bool allowDuplicate = false;
21934     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
21935 
21936 
21937 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21938 VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT(uint64_t drmFormatModifier_ = {}, uint32_t drmFormatModifierPlaneCount_ = {}, const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
21939     : pNext( pNext_ ), drmFormatModifier( drmFormatModifier_ ), drmFormatModifierPlaneCount( drmFormatModifierPlaneCount_ ), pPlaneLayouts( pPlaneLayouts_ )
21940     {}
21941 
21942     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21943 
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21944     ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21945       : ImageDrmFormatModifierExplicitCreateInfoEXT( *reinterpret_cast<ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs ) )
21946     {}
21947 
21948 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageDrmFormatModifierExplicitCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21949     ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t drmFormatModifier_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const & planeLayouts_, const void * pNext_ = nullptr )
21950     : pNext( pNext_ ), drmFormatModifier( drmFormatModifier_ ), drmFormatModifierPlaneCount( static_cast<uint32_t>( planeLayouts_.size() ) ), pPlaneLayouts( planeLayouts_.data() )
21951     {}
21952 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21953 
21954 
21955     ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
21956 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
21957 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21958     ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
21959     {
21960       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT const *>( &rhs );
21961       return *this;
21962     }
21963 
21964 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21965     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
21966     {
21967       pNext = pNext_;
21968       return *this;
21969     }
21970 
setDrmFormatModifierVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21971     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT
21972     {
21973       drmFormatModifier = drmFormatModifier_;
21974       return *this;
21975     }
21976 
setDrmFormatModifierPlaneCountVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21977     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) VULKAN_HPP_NOEXCEPT
21978     {
21979       drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_;
21980       return *this;
21981     }
21982 
setPPlaneLayoutsVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21983     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setPPlaneLayouts( const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts_ ) VULKAN_HPP_NOEXCEPT
21984     {
21985       pPlaneLayouts = pPlaneLayouts_;
21986       return *this;
21987     }
21988 
21989 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPlaneLayoutsVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT21990     ImageDrmFormatModifierExplicitCreateInfoEXT & setPlaneLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubresourceLayout> const & planeLayouts_ ) VULKAN_HPP_NOEXCEPT
21991     {
21992       drmFormatModifierPlaneCount = static_cast<uint32_t>( planeLayouts_.size() );
21993       pPlaneLayouts = planeLayouts_.data();
21994       return *this;
21995     }
21996 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21997 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
21998 
21999 
operator VkImageDrmFormatModifierExplicitCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT22000     operator VkImageDrmFormatModifierExplicitCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
22001     {
22002       return *reinterpret_cast<const VkImageDrmFormatModifierExplicitCreateInfoEXT*>( this );
22003     }
22004 
operator VkImageDrmFormatModifierExplicitCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT22005     operator VkImageDrmFormatModifierExplicitCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
22006     {
22007       return *reinterpret_cast<VkImageDrmFormatModifierExplicitCreateInfoEXT*>( this );
22008     }
22009 
22010 #if defined( VULKAN_HPP_USE_REFLECT )
22011 #if 14 <= VULKAN_HPP_CPP_VERSION
22012     auto
22013 #else
22014     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SubresourceLayout * const &>
22015 #endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT22016       reflect() const VULKAN_HPP_NOEXCEPT
22017     {
22018       return std::tie( sType, pNext, drmFormatModifier, drmFormatModifierPlaneCount, pPlaneLayouts );
22019     }
22020 #endif
22021 
22022 
22023 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22024 auto operator<=>( ImageDrmFormatModifierExplicitCreateInfoEXT const & ) const = default;
22025 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT22026     bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22027     {
22028 #if defined( VULKAN_HPP_USE_REFLECT )
22029       return this->reflect() == rhs.reflect();
22030 #else
22031       return ( sType == rhs.sType )
22032           && ( pNext == rhs.pNext )
22033           && ( drmFormatModifier == rhs.drmFormatModifier )
22034           && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount )
22035           && ( pPlaneLayouts == rhs.pPlaneLayouts );
22036 #endif
22037     }
22038 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT22039     bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22040     {
22041       return !operator==( rhs );
22042     }
22043 #endif
22044 
22045     public:
22046     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT;
22047     const void * pNext = {};
22048     uint64_t drmFormatModifier = {};
22049     uint32_t drmFormatModifierPlaneCount = {};
22050     const VULKAN_HPP_NAMESPACE::SubresourceLayout * pPlaneLayouts = {};
22051 
22052   };
22053 
22054   template <>
22055   struct CppType<StructureType, StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT>
22056   {
22057     using Type = ImageDrmFormatModifierExplicitCreateInfoEXT;
22058   };
22059 
22060   struct ImageDrmFormatModifierListCreateInfoEXT
22061   {
22062     using NativeType = VkImageDrmFormatModifierListCreateInfoEXT;
22063 
22064     static const bool allowDuplicate = false;
22065     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
22066 
22067 
22068 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22069 VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT(uint32_t drmFormatModifierCount_ = {}, const uint64_t * pDrmFormatModifiers_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
22070     : pNext( pNext_ ), drmFormatModifierCount( drmFormatModifierCount_ ), pDrmFormatModifiers( pDrmFormatModifiers_ )
22071     {}
22072 
22073     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22074 
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22075     ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22076       : ImageDrmFormatModifierListCreateInfoEXT( *reinterpret_cast<ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs ) )
22077     {}
22078 
22079 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageDrmFormatModifierListCreateInfoEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22080     ImageDrmFormatModifierListCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_, const void * pNext_ = nullptr )
22081     : pNext( pNext_ ), drmFormatModifierCount( static_cast<uint32_t>( drmFormatModifiers_.size() ) ), pDrmFormatModifiers( drmFormatModifiers_.data() )
22082     {}
22083 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22084 
22085 
22086     ImageDrmFormatModifierListCreateInfoEXT & operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22087 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22088 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22089     ImageDrmFormatModifierListCreateInfoEXT & operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22090     {
22091       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT const *>( &rhs );
22092       return *this;
22093     }
22094 
22095 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22096     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22097     {
22098       pNext = pNext_;
22099       return *this;
22100     }
22101 
setDrmFormatModifierCountVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22102     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) VULKAN_HPP_NOEXCEPT
22103     {
22104       drmFormatModifierCount = drmFormatModifierCount_;
22105       return *this;
22106     }
22107 
setPDrmFormatModifiersVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22108     VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setPDrmFormatModifiers( const uint64_t * pDrmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT
22109     {
22110       pDrmFormatModifiers = pDrmFormatModifiers_;
22111       return *this;
22112     }
22113 
22114 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDrmFormatModifiersVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22115     ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifiers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & drmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT
22116     {
22117       drmFormatModifierCount = static_cast<uint32_t>( drmFormatModifiers_.size() );
22118       pDrmFormatModifiers = drmFormatModifiers_.data();
22119       return *this;
22120     }
22121 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22122 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22123 
22124 
operator VkImageDrmFormatModifierListCreateInfoEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22125     operator VkImageDrmFormatModifierListCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
22126     {
22127       return *reinterpret_cast<const VkImageDrmFormatModifierListCreateInfoEXT*>( this );
22128     }
22129 
operator VkImageDrmFormatModifierListCreateInfoEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22130     operator VkImageDrmFormatModifierListCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
22131     {
22132       return *reinterpret_cast<VkImageDrmFormatModifierListCreateInfoEXT*>( this );
22133     }
22134 
22135 #if defined( VULKAN_HPP_USE_REFLECT )
22136 #if 14 <= VULKAN_HPP_CPP_VERSION
22137     auto
22138 #else
22139     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint64_t * const &>
22140 #endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22141       reflect() const VULKAN_HPP_NOEXCEPT
22142     {
22143       return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifiers );
22144     }
22145 #endif
22146 
22147 
22148 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22149 auto operator<=>( ImageDrmFormatModifierListCreateInfoEXT const & ) const = default;
22150 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22151     bool operator==( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22152     {
22153 #if defined( VULKAN_HPP_USE_REFLECT )
22154       return this->reflect() == rhs.reflect();
22155 #else
22156       return ( sType == rhs.sType )
22157           && ( pNext == rhs.pNext )
22158           && ( drmFormatModifierCount == rhs.drmFormatModifierCount )
22159           && ( pDrmFormatModifiers == rhs.pDrmFormatModifiers );
22160 #endif
22161     }
22162 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT22163     bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22164     {
22165       return !operator==( rhs );
22166     }
22167 #endif
22168 
22169     public:
22170     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT;
22171     const void * pNext = {};
22172     uint32_t drmFormatModifierCount = {};
22173     const uint64_t * pDrmFormatModifiers = {};
22174 
22175   };
22176 
22177   template <>
22178   struct CppType<StructureType, StructureType::eImageDrmFormatModifierListCreateInfoEXT>
22179   {
22180     using Type = ImageDrmFormatModifierListCreateInfoEXT;
22181   };
22182 
22183   struct ImageDrmFormatModifierPropertiesEXT
22184   {
22185     using NativeType = VkImageDrmFormatModifierPropertiesEXT;
22186 
22187     static const bool allowDuplicate = false;
22188     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierPropertiesEXT;
22189 
22190 
22191 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageDrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT22192 VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT(uint64_t drmFormatModifier_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
22193     : pNext( pNext_ ), drmFormatModifier( drmFormatModifier_ )
22194     {}
22195 
22196     VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22197 
ImageDrmFormatModifierPropertiesEXTVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT22198     ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22199       : ImageDrmFormatModifierPropertiesEXT( *reinterpret_cast<ImageDrmFormatModifierPropertiesEXT const *>( &rhs ) )
22200     {}
22201 
22202 
22203     ImageDrmFormatModifierPropertiesEXT & operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22204 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22205 
operator =VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT22206     ImageDrmFormatModifierPropertiesEXT & operator=( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
22207     {
22208       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT const *>( &rhs );
22209       return *this;
22210     }
22211 
22212 
operator VkImageDrmFormatModifierPropertiesEXT const&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT22213     operator VkImageDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
22214     {
22215       return *reinterpret_cast<const VkImageDrmFormatModifierPropertiesEXT*>( this );
22216     }
22217 
operator VkImageDrmFormatModifierPropertiesEXT&VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT22218     operator VkImageDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT
22219     {
22220       return *reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT*>( this );
22221     }
22222 
22223 #if defined( VULKAN_HPP_USE_REFLECT )
22224 #if 14 <= VULKAN_HPP_CPP_VERSION
22225     auto
22226 #else
22227     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
22228 #endif
reflectVULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT22229       reflect() const VULKAN_HPP_NOEXCEPT
22230     {
22231       return std::tie( sType, pNext, drmFormatModifier );
22232     }
22233 #endif
22234 
22235 
22236 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22237 auto operator<=>( ImageDrmFormatModifierPropertiesEXT const & ) const = default;
22238 #else
operator ==VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT22239     bool operator==( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22240     {
22241 #if defined( VULKAN_HPP_USE_REFLECT )
22242       return this->reflect() == rhs.reflect();
22243 #else
22244       return ( sType == rhs.sType )
22245           && ( pNext == rhs.pNext )
22246           && ( drmFormatModifier == rhs.drmFormatModifier );
22247 #endif
22248     }
22249 
operator !=VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT22250     bool operator!=( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
22251     {
22252       return !operator==( rhs );
22253     }
22254 #endif
22255 
22256     public:
22257     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierPropertiesEXT;
22258     void * pNext = {};
22259     uint64_t drmFormatModifier = {};
22260 
22261   };
22262 
22263   template <>
22264   struct CppType<StructureType, StructureType::eImageDrmFormatModifierPropertiesEXT>
22265   {
22266     using Type = ImageDrmFormatModifierPropertiesEXT;
22267   };
22268 
22269   struct ImageFormatListCreateInfo
22270   {
22271     using NativeType = VkImageFormatListCreateInfo;
22272 
22273     static const bool allowDuplicate = false;
22274     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatListCreateInfo;
22275 
22276 
22277 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22278 VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo(uint32_t viewFormatCount_ = {}, const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
22279     : pNext( pNext_ ), viewFormatCount( viewFormatCount_ ), pViewFormats( pViewFormats_ )
22280     {}
22281 
22282     VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22283 
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22284     ImageFormatListCreateInfo( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22285       : ImageFormatListCreateInfo( *reinterpret_cast<ImageFormatListCreateInfo const *>( &rhs ) )
22286     {}
22287 
22288 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ImageFormatListCreateInfoVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22289     ImageFormatListCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_, const void * pNext_ = nullptr )
22290     : pNext( pNext_ ), viewFormatCount( static_cast<uint32_t>( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() )
22291     {}
22292 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22293 
22294 
22295     ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22296 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22297 
operator =VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22298     ImageFormatListCreateInfo & operator=( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22299     {
22300       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo const *>( &rhs );
22301       return *this;
22302     }
22303 
22304 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22305     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22306     {
22307       pNext = pNext_;
22308       return *this;
22309     }
22310 
setViewFormatCountVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22311     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT
22312     {
22313       viewFormatCount = viewFormatCount_;
22314       return *this;
22315     }
22316 
setPViewFormatsVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22317     VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPViewFormats( const VULKAN_HPP_NAMESPACE::Format * pViewFormats_ ) VULKAN_HPP_NOEXCEPT
22318     {
22319       pViewFormats = pViewFormats_;
22320       return *this;
22321     }
22322 
22323 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewFormatsVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22324     ImageFormatListCreateInfo & setViewFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & viewFormats_ ) VULKAN_HPP_NOEXCEPT
22325     {
22326       viewFormatCount = static_cast<uint32_t>( viewFormats_.size() );
22327       pViewFormats = viewFormats_.data();
22328       return *this;
22329     }
22330 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22331 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22332 
22333 
operator VkImageFormatListCreateInfo const&VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22334     operator VkImageFormatListCreateInfo const &() const VULKAN_HPP_NOEXCEPT
22335     {
22336       return *reinterpret_cast<const VkImageFormatListCreateInfo*>( this );
22337     }
22338 
operator VkImageFormatListCreateInfo&VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22339     operator VkImageFormatListCreateInfo &() VULKAN_HPP_NOEXCEPT
22340     {
22341       return *reinterpret_cast<VkImageFormatListCreateInfo*>( this );
22342     }
22343 
22344 #if defined( VULKAN_HPP_USE_REFLECT )
22345 #if 14 <= VULKAN_HPP_CPP_VERSION
22346     auto
22347 #else
22348     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Format * const &>
22349 #endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22350       reflect() const VULKAN_HPP_NOEXCEPT
22351     {
22352       return std::tie( sType, pNext, viewFormatCount, pViewFormats );
22353     }
22354 #endif
22355 
22356 
22357 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22358 auto operator<=>( ImageFormatListCreateInfo const & ) const = default;
22359 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22360     bool operator==( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22361     {
22362 #if defined( VULKAN_HPP_USE_REFLECT )
22363       return this->reflect() == rhs.reflect();
22364 #else
22365       return ( sType == rhs.sType )
22366           && ( pNext == rhs.pNext )
22367           && ( viewFormatCount == rhs.viewFormatCount )
22368           && ( pViewFormats == rhs.pViewFormats );
22369 #endif
22370     }
22371 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo22372     bool operator!=( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22373     {
22374       return !operator==( rhs );
22375     }
22376 #endif
22377 
22378     public:
22379     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatListCreateInfo;
22380     const void * pNext = {};
22381     uint32_t viewFormatCount = {};
22382     const VULKAN_HPP_NAMESPACE::Format * pViewFormats = {};
22383 
22384   };
22385 
22386   template <>
22387   struct CppType<StructureType, StructureType::eImageFormatListCreateInfo>
22388   {
22389     using Type = ImageFormatListCreateInfo;
22390   };
22391   using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo;
22392 
22393   struct ImageFormatProperties
22394   {
22395     using NativeType = VkImageFormatProperties;
22396 
22397 
22398 
22399 
22400 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatPropertiesVULKAN_HPP_NAMESPACE::ImageFormatProperties22401 VULKAN_HPP_CONSTEXPR ImageFormatProperties(VULKAN_HPP_NAMESPACE::Extent3D maxExtent_ = {}, uint32_t maxMipLevels_ = {}, uint32_t maxArrayLayers_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize maxResourceSize_ = {}) VULKAN_HPP_NOEXCEPT
22402     : maxExtent( maxExtent_ ), maxMipLevels( maxMipLevels_ ), maxArrayLayers( maxArrayLayers_ ), sampleCounts( sampleCounts_ ), maxResourceSize( maxResourceSize_ )
22403     {}
22404 
22405     VULKAN_HPP_CONSTEXPR ImageFormatProperties( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22406 
ImageFormatPropertiesVULKAN_HPP_NAMESPACE::ImageFormatProperties22407     ImageFormatProperties( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
22408       : ImageFormatProperties( *reinterpret_cast<ImageFormatProperties const *>( &rhs ) )
22409     {}
22410 
22411 
22412     ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22413 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22414 
operator =VULKAN_HPP_NAMESPACE::ImageFormatProperties22415     ImageFormatProperties & operator=( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
22416     {
22417       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties const *>( &rhs );
22418       return *this;
22419     }
22420 
22421 
operator VkImageFormatProperties const&VULKAN_HPP_NAMESPACE::ImageFormatProperties22422     operator VkImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
22423     {
22424       return *reinterpret_cast<const VkImageFormatProperties*>( this );
22425     }
22426 
operator VkImageFormatProperties&VULKAN_HPP_NAMESPACE::ImageFormatProperties22427     operator VkImageFormatProperties &() VULKAN_HPP_NOEXCEPT
22428     {
22429       return *reinterpret_cast<VkImageFormatProperties*>( this );
22430     }
22431 
22432 #if defined( VULKAN_HPP_USE_REFLECT )
22433 #if 14 <= VULKAN_HPP_CPP_VERSION
22434     auto
22435 #else
22436     std::tuple<VULKAN_HPP_NAMESPACE::Extent3D const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
22437 #endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatProperties22438       reflect() const VULKAN_HPP_NOEXCEPT
22439     {
22440       return std::tie( maxExtent, maxMipLevels, maxArrayLayers, sampleCounts, maxResourceSize );
22441     }
22442 #endif
22443 
22444 
22445 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22446 auto operator<=>( ImageFormatProperties const & ) const = default;
22447 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatProperties22448     bool operator==( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
22449     {
22450 #if defined( VULKAN_HPP_USE_REFLECT )
22451       return this->reflect() == rhs.reflect();
22452 #else
22453       return ( maxExtent == rhs.maxExtent )
22454           && ( maxMipLevels == rhs.maxMipLevels )
22455           && ( maxArrayLayers == rhs.maxArrayLayers )
22456           && ( sampleCounts == rhs.sampleCounts )
22457           && ( maxResourceSize == rhs.maxResourceSize );
22458 #endif
22459     }
22460 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatProperties22461     bool operator!=( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
22462     {
22463       return !operator==( rhs );
22464     }
22465 #endif
22466 
22467     public:
22468     VULKAN_HPP_NAMESPACE::Extent3D maxExtent = {};
22469     uint32_t maxMipLevels = {};
22470     uint32_t maxArrayLayers = {};
22471     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {};
22472     VULKAN_HPP_NAMESPACE::DeviceSize maxResourceSize = {};
22473 
22474   };
22475 
22476   struct ImageFormatProperties2
22477   {
22478     using NativeType = VkImageFormatProperties2;
22479 
22480     static const bool allowDuplicate = false;
22481     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatProperties2;
22482 
22483 
22484 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageFormatProperties2VULKAN_HPP_NAMESPACE::ImageFormatProperties222485 VULKAN_HPP_CONSTEXPR ImageFormatProperties2(VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
22486     : pNext( pNext_ ), imageFormatProperties( imageFormatProperties_ )
22487     {}
22488 
22489     VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22490 
ImageFormatProperties2VULKAN_HPP_NAMESPACE::ImageFormatProperties222491     ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
22492       : ImageFormatProperties2( *reinterpret_cast<ImageFormatProperties2 const *>( &rhs ) )
22493     {}
22494 
22495 
22496     ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22497 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22498 
operator =VULKAN_HPP_NAMESPACE::ImageFormatProperties222499     ImageFormatProperties2 & operator=( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
22500     {
22501       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageFormatProperties2 const *>( &rhs );
22502       return *this;
22503     }
22504 
22505 
operator VkImageFormatProperties2 const&VULKAN_HPP_NAMESPACE::ImageFormatProperties222506     operator VkImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT
22507     {
22508       return *reinterpret_cast<const VkImageFormatProperties2*>( this );
22509     }
22510 
operator VkImageFormatProperties2&VULKAN_HPP_NAMESPACE::ImageFormatProperties222511     operator VkImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT
22512     {
22513       return *reinterpret_cast<VkImageFormatProperties2*>( this );
22514     }
22515 
22516 #if defined( VULKAN_HPP_USE_REFLECT )
22517 #if 14 <= VULKAN_HPP_CPP_VERSION
22518     auto
22519 #else
22520     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageFormatProperties const &>
22521 #endif
reflectVULKAN_HPP_NAMESPACE::ImageFormatProperties222522       reflect() const VULKAN_HPP_NOEXCEPT
22523     {
22524       return std::tie( sType, pNext, imageFormatProperties );
22525     }
22526 #endif
22527 
22528 
22529 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22530 auto operator<=>( ImageFormatProperties2 const & ) const = default;
22531 #else
operator ==VULKAN_HPP_NAMESPACE::ImageFormatProperties222532     bool operator==( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22533     {
22534 #if defined( VULKAN_HPP_USE_REFLECT )
22535       return this->reflect() == rhs.reflect();
22536 #else
22537       return ( sType == rhs.sType )
22538           && ( pNext == rhs.pNext )
22539           && ( imageFormatProperties == rhs.imageFormatProperties );
22540 #endif
22541     }
22542 
operator !=VULKAN_HPP_NAMESPACE::ImageFormatProperties222543     bool operator!=( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22544     {
22545       return !operator==( rhs );
22546     }
22547 #endif
22548 
22549     public:
22550     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatProperties2;
22551     void * pNext = {};
22552     VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {};
22553 
22554   };
22555 
22556   template <>
22557   struct CppType<StructureType, StructureType::eImageFormatProperties2>
22558   {
22559     using Type = ImageFormatProperties2;
22560   };
22561   using ImageFormatProperties2KHR = ImageFormatProperties2;
22562 
22563   struct ImageMemoryBarrier
22564   {
22565     using NativeType = VkImageMemoryBarrier;
22566 
22567     static const bool allowDuplicate = false;
22568     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryBarrier;
22569 
22570 
22571 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryBarrierVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22572 VULKAN_HPP_CONSTEXPR ImageMemoryBarrier(VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t srcQueueFamilyIndex_ = {}, uint32_t dstQueueFamilyIndex_ = {}, VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
22573     : pNext( pNext_ ), srcAccessMask( srcAccessMask_ ), dstAccessMask( dstAccessMask_ ), oldLayout( oldLayout_ ), newLayout( newLayout_ ), srcQueueFamilyIndex( srcQueueFamilyIndex_ ), dstQueueFamilyIndex( dstQueueFamilyIndex_ ), image( image_ ), subresourceRange( subresourceRange_ )
22574     {}
22575 
22576     VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22577 
ImageMemoryBarrierVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22578     ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
22579       : ImageMemoryBarrier( *reinterpret_cast<ImageMemoryBarrier const *>( &rhs ) )
22580     {}
22581 
22582 
22583     ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22584 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22585 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryBarrier22586     ImageMemoryBarrier & operator=( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
22587     {
22588       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier const *>( &rhs );
22589       return *this;
22590     }
22591 
22592 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22593     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22594     {
22595       pNext = pNext_;
22596       return *this;
22597     }
22598 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22599     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
22600     {
22601       srcAccessMask = srcAccessMask_;
22602       return *this;
22603     }
22604 
setDstAccessMaskVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22605     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
22606     {
22607       dstAccessMask = dstAccessMask_;
22608       return *this;
22609     }
22610 
setOldLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22611     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT
22612     {
22613       oldLayout = oldLayout_;
22614       return *this;
22615     }
22616 
setNewLayoutVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22617     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT
22618     {
22619       newLayout = newLayout_;
22620       return *this;
22621     }
22622 
setSrcQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22623     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
22624     {
22625       srcQueueFamilyIndex = srcQueueFamilyIndex_;
22626       return *this;
22627     }
22628 
setDstQueueFamilyIndexVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22629     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
22630     {
22631       dstQueueFamilyIndex = dstQueueFamilyIndex_;
22632       return *this;
22633     }
22634 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22635     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
22636     {
22637       image = image_;
22638       return *this;
22639     }
22640 
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22641     VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
22642     {
22643       subresourceRange = subresourceRange_;
22644       return *this;
22645     }
22646 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22647 
22648 
operator VkImageMemoryBarrier const&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier22649     operator VkImageMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
22650     {
22651       return *reinterpret_cast<const VkImageMemoryBarrier*>( this );
22652     }
22653 
operator VkImageMemoryBarrier&VULKAN_HPP_NAMESPACE::ImageMemoryBarrier22654     operator VkImageMemoryBarrier &() VULKAN_HPP_NOEXCEPT
22655     {
22656       return *reinterpret_cast<VkImageMemoryBarrier*>( this );
22657     }
22658 
22659 #if defined( VULKAN_HPP_USE_REFLECT )
22660 #if 14 <= VULKAN_HPP_CPP_VERSION
22661     auto
22662 #else
22663     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
22664 #endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryBarrier22665       reflect() const VULKAN_HPP_NOEXCEPT
22666     {
22667       return std::tie( sType, pNext, srcAccessMask, dstAccessMask, oldLayout, newLayout, srcQueueFamilyIndex, dstQueueFamilyIndex, image, subresourceRange );
22668     }
22669 #endif
22670 
22671 
22672 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22673 auto operator<=>( ImageMemoryBarrier const & ) const = default;
22674 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryBarrier22675     bool operator==( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
22676     {
22677 #if defined( VULKAN_HPP_USE_REFLECT )
22678       return this->reflect() == rhs.reflect();
22679 #else
22680       return ( sType == rhs.sType )
22681           && ( pNext == rhs.pNext )
22682           && ( srcAccessMask == rhs.srcAccessMask )
22683           && ( dstAccessMask == rhs.dstAccessMask )
22684           && ( oldLayout == rhs.oldLayout )
22685           && ( newLayout == rhs.newLayout )
22686           && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
22687           && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
22688           && ( image == rhs.image )
22689           && ( subresourceRange == rhs.subresourceRange );
22690 #endif
22691     }
22692 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryBarrier22693     bool operator!=( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
22694     {
22695       return !operator==( rhs );
22696     }
22697 #endif
22698 
22699     public:
22700     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryBarrier;
22701     const void * pNext = {};
22702     VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {};
22703     VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {};
22704     VULKAN_HPP_NAMESPACE::ImageLayout oldLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
22705     VULKAN_HPP_NAMESPACE::ImageLayout newLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
22706     uint32_t srcQueueFamilyIndex = {};
22707     uint32_t dstQueueFamilyIndex = {};
22708     VULKAN_HPP_NAMESPACE::Image image = {};
22709     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {};
22710 
22711   };
22712 
22713   template <>
22714   struct CppType<StructureType, StructureType::eImageMemoryBarrier>
22715   {
22716     using Type = ImageMemoryBarrier;
22717   };
22718 
22719   struct ImageMemoryRequirementsInfo2
22720   {
22721     using NativeType = VkImageMemoryRequirementsInfo2;
22722 
22723     static const bool allowDuplicate = false;
22724     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryRequirementsInfo2;
22725 
22726 
22727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222728 VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2(VULKAN_HPP_NAMESPACE::Image image_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
22729     : pNext( pNext_ ), image( image_ )
22730     {}
22731 
22732     VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22733 
ImageMemoryRequirementsInfo2VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222734     ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
22735       : ImageMemoryRequirementsInfo2( *reinterpret_cast<ImageMemoryRequirementsInfo2 const *>( &rhs ) )
22736     {}
22737 
22738 
22739     ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22740 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22741 
operator =VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222742     ImageMemoryRequirementsInfo2 & operator=( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
22743     {
22744       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 const *>( &rhs );
22745       return *this;
22746     }
22747 
22748 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222749     VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22750     {
22751       pNext = pNext_;
22752       return *this;
22753     }
22754 
setImageVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222755     VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
22756     {
22757       image = image_;
22758       return *this;
22759     }
22760 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22761 
22762 
operator VkImageMemoryRequirementsInfo2 const&VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222763     operator VkImageMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT
22764     {
22765       return *reinterpret_cast<const VkImageMemoryRequirementsInfo2*>( this );
22766     }
22767 
operator VkImageMemoryRequirementsInfo2&VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222768     operator VkImageMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT
22769     {
22770       return *reinterpret_cast<VkImageMemoryRequirementsInfo2*>( this );
22771     }
22772 
22773 #if defined( VULKAN_HPP_USE_REFLECT )
22774 #if 14 <= VULKAN_HPP_CPP_VERSION
22775     auto
22776 #else
22777     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &>
22778 #endif
reflectVULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222779       reflect() const VULKAN_HPP_NOEXCEPT
22780     {
22781       return std::tie( sType, pNext, image );
22782     }
22783 #endif
22784 
22785 
22786 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22787 auto operator<=>( ImageMemoryRequirementsInfo2 const & ) const = default;
22788 #else
operator ==VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222789     bool operator==( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22790     {
22791 #if defined( VULKAN_HPP_USE_REFLECT )
22792       return this->reflect() == rhs.reflect();
22793 #else
22794       return ( sType == rhs.sType )
22795           && ( pNext == rhs.pNext )
22796           && ( image == rhs.image );
22797 #endif
22798     }
22799 
operator !=VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo222800     bool operator!=( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
22801     {
22802       return !operator==( rhs );
22803     }
22804 #endif
22805 
22806     public:
22807     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryRequirementsInfo2;
22808     const void * pNext = {};
22809     VULKAN_HPP_NAMESPACE::Image image = {};
22810 
22811   };
22812 
22813   template <>
22814   struct CppType<StructureType, StructureType::eImageMemoryRequirementsInfo2>
22815   {
22816     using Type = ImageMemoryRequirementsInfo2;
22817   };
22818   using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2;
22819 
22820   struct ImagePlaneMemoryRequirementsInfo
22821   {
22822     using NativeType = VkImagePlaneMemoryRequirementsInfo;
22823 
22824     static const bool allowDuplicate = false;
22825     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImagePlaneMemoryRequirementsInfo;
22826 
22827 
22828 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImagePlaneMemoryRequirementsInfoVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22829 VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo(VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
22830     : pNext( pNext_ ), planeAspect( planeAspect_ )
22831     {}
22832 
22833     VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22834 
ImagePlaneMemoryRequirementsInfoVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22835     ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22836       : ImagePlaneMemoryRequirementsInfo( *reinterpret_cast<ImagePlaneMemoryRequirementsInfo const *>( &rhs ) )
22837     {}
22838 
22839 
22840     ImagePlaneMemoryRequirementsInfo & operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22841 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22842 
operator =VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22843     ImagePlaneMemoryRequirementsInfo & operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
22844     {
22845       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo const *>( &rhs );
22846       return *this;
22847     }
22848 
22849 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22850     VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
22851     {
22852       pNext = pNext_;
22853       return *this;
22854     }
22855 
setPlaneAspectVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22856     VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT
22857     {
22858       planeAspect = planeAspect_;
22859       return *this;
22860     }
22861 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22862 
22863 
operator VkImagePlaneMemoryRequirementsInfo const&VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22864     operator VkImagePlaneMemoryRequirementsInfo const &() const VULKAN_HPP_NOEXCEPT
22865     {
22866       return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfo*>( this );
22867     }
22868 
operator VkImagePlaneMemoryRequirementsInfo&VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22869     operator VkImagePlaneMemoryRequirementsInfo &() VULKAN_HPP_NOEXCEPT
22870     {
22871       return *reinterpret_cast<VkImagePlaneMemoryRequirementsInfo*>( this );
22872     }
22873 
22874 #if defined( VULKAN_HPP_USE_REFLECT )
22875 #if 14 <= VULKAN_HPP_CPP_VERSION
22876     auto
22877 #else
22878     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageAspectFlagBits const &>
22879 #endif
reflectVULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22880       reflect() const VULKAN_HPP_NOEXCEPT
22881     {
22882       return std::tie( sType, pNext, planeAspect );
22883     }
22884 #endif
22885 
22886 
22887 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
22888 auto operator<=>( ImagePlaneMemoryRequirementsInfo const & ) const = default;
22889 #else
operator ==VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22890     bool operator==( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22891     {
22892 #if defined( VULKAN_HPP_USE_REFLECT )
22893       return this->reflect() == rhs.reflect();
22894 #else
22895       return ( sType == rhs.sType )
22896           && ( pNext == rhs.pNext )
22897           && ( planeAspect == rhs.planeAspect );
22898 #endif
22899     }
22900 
operator !=VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo22901     bool operator!=( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
22902     {
22903       return !operator==( rhs );
22904     }
22905 #endif
22906 
22907     public:
22908     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo;
22909     const void * pNext = {};
22910     VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor;
22911 
22912   };
22913 
22914   template <>
22915   struct CppType<StructureType, StructureType::eImagePlaneMemoryRequirementsInfo>
22916   {
22917     using Type = ImagePlaneMemoryRequirementsInfo;
22918   };
22919   using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo;
22920 
22921   struct ImageResolve
22922   {
22923     using NativeType = VkImageResolve;
22924 
22925 
22926 
22927 
22928 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageResolveVULKAN_HPP_NAMESPACE::ImageResolve22929 VULKAN_HPP_CONSTEXPR ImageResolve(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}) VULKAN_HPP_NOEXCEPT
22930     : srcSubresource( srcSubresource_ ), srcOffset( srcOffset_ ), dstSubresource( dstSubresource_ ), dstOffset( dstOffset_ ), extent( extent_ )
22931     {}
22932 
22933     VULKAN_HPP_CONSTEXPR ImageResolve( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22934 
ImageResolveVULKAN_HPP_NAMESPACE::ImageResolve22935     ImageResolve( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
22936       : ImageResolve( *reinterpret_cast<ImageResolve const *>( &rhs ) )
22937     {}
22938 
22939 
22940     ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
22941 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
22942 
operator =VULKAN_HPP_NAMESPACE::ImageResolve22943     ImageResolve & operator=( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT
22944     {
22945       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve const *>( &rhs );
22946       return *this;
22947     }
22948 
22949 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageResolve22950     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
22951     {
22952       srcSubresource = srcSubresource_;
22953       return *this;
22954     }
22955 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageResolve22956     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
22957     {
22958       srcOffset = srcOffset_;
22959       return *this;
22960     }
22961 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageResolve22962     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
22963     {
22964       dstSubresource = dstSubresource_;
22965       return *this;
22966     }
22967 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageResolve22968     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
22969     {
22970       dstOffset = dstOffset_;
22971       return *this;
22972     }
22973 
setExtentVULKAN_HPP_NAMESPACE::ImageResolve22974     VULKAN_HPP_CONSTEXPR_14 ImageResolve & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
22975     {
22976       extent = extent_;
22977       return *this;
22978     }
22979 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
22980 
22981 
operator VkImageResolve const&VULKAN_HPP_NAMESPACE::ImageResolve22982     operator VkImageResolve const &() const VULKAN_HPP_NOEXCEPT
22983     {
22984       return *reinterpret_cast<const VkImageResolve*>( this );
22985     }
22986 
operator VkImageResolve&VULKAN_HPP_NAMESPACE::ImageResolve22987     operator VkImageResolve &() VULKAN_HPP_NOEXCEPT
22988     {
22989       return *reinterpret_cast<VkImageResolve*>( this );
22990     }
22991 
22992 #if defined( VULKAN_HPP_USE_REFLECT )
22993 #if 14 <= VULKAN_HPP_CPP_VERSION
22994     auto
22995 #else
22996     std::tuple<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
22997 #endif
reflectVULKAN_HPP_NAMESPACE::ImageResolve22998       reflect() const VULKAN_HPP_NOEXCEPT
22999     {
23000       return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
23001     }
23002 #endif
23003 
23004 
23005 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23006 auto operator<=>( ImageResolve const & ) const = default;
23007 #else
operator ==VULKAN_HPP_NAMESPACE::ImageResolve23008     bool operator==( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
23009     {
23010 #if defined( VULKAN_HPP_USE_REFLECT )
23011       return this->reflect() == rhs.reflect();
23012 #else
23013       return ( srcSubresource == rhs.srcSubresource )
23014           && ( srcOffset == rhs.srcOffset )
23015           && ( dstSubresource == rhs.dstSubresource )
23016           && ( dstOffset == rhs.dstOffset )
23017           && ( extent == rhs.extent );
23018 #endif
23019     }
23020 
operator !=VULKAN_HPP_NAMESPACE::ImageResolve23021     bool operator!=( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
23022     {
23023       return !operator==( rhs );
23024     }
23025 #endif
23026 
23027     public:
23028     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
23029     VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {};
23030     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
23031     VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {};
23032     VULKAN_HPP_NAMESPACE::Extent3D extent = {};
23033 
23034   };
23035 
23036   struct ImageResolve2
23037   {
23038     using NativeType = VkImageResolve2;
23039 
23040     static const bool allowDuplicate = false;
23041     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageResolve2;
23042 
23043 
23044 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageResolve2VULKAN_HPP_NAMESPACE::ImageResolve223045 VULKAN_HPP_CONSTEXPR ImageResolve2(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
23046     : pNext( pNext_ ), srcSubresource( srcSubresource_ ), srcOffset( srcOffset_ ), dstSubresource( dstSubresource_ ), dstOffset( dstOffset_ ), extent( extent_ )
23047     {}
23048 
23049     VULKAN_HPP_CONSTEXPR ImageResolve2( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23050 
ImageResolve2VULKAN_HPP_NAMESPACE::ImageResolve223051     ImageResolve2( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT
23052       : ImageResolve2( *reinterpret_cast<ImageResolve2 const *>( &rhs ) )
23053     {}
23054 
23055 
23056     ImageResolve2 & operator=( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23057 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23058 
operator =VULKAN_HPP_NAMESPACE::ImageResolve223059     ImageResolve2 & operator=( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT
23060     {
23061       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageResolve2 const *>( &rhs );
23062       return *this;
23063     }
23064 
23065 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageResolve223066     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23067     {
23068       pNext = pNext_;
23069       return *this;
23070     }
23071 
setSrcSubresourceVULKAN_HPP_NAMESPACE::ImageResolve223072     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT
23073     {
23074       srcSubresource = srcSubresource_;
23075       return *this;
23076     }
23077 
setSrcOffsetVULKAN_HPP_NAMESPACE::ImageResolve223078     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT
23079     {
23080       srcOffset = srcOffset_;
23081       return *this;
23082     }
23083 
setDstSubresourceVULKAN_HPP_NAMESPACE::ImageResolve223084     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT
23085     {
23086       dstSubresource = dstSubresource_;
23087       return *this;
23088     }
23089 
setDstOffsetVULKAN_HPP_NAMESPACE::ImageResolve223090     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT
23091     {
23092       dstOffset = dstOffset_;
23093       return *this;
23094     }
23095 
setExtentVULKAN_HPP_NAMESPACE::ImageResolve223096     VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT
23097     {
23098       extent = extent_;
23099       return *this;
23100     }
23101 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23102 
23103 
operator VkImageResolve2 const&VULKAN_HPP_NAMESPACE::ImageResolve223104     operator VkImageResolve2 const &() const VULKAN_HPP_NOEXCEPT
23105     {
23106       return *reinterpret_cast<const VkImageResolve2*>( this );
23107     }
23108 
operator VkImageResolve2&VULKAN_HPP_NAMESPACE::ImageResolve223109     operator VkImageResolve2 &() VULKAN_HPP_NOEXCEPT
23110     {
23111       return *reinterpret_cast<VkImageResolve2*>( this );
23112     }
23113 
23114 #if defined( VULKAN_HPP_USE_REFLECT )
23115 #if 14 <= VULKAN_HPP_CPP_VERSION
23116     auto
23117 #else
23118     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const &, VULKAN_HPP_NAMESPACE::Offset3D const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
23119 #endif
reflectVULKAN_HPP_NAMESPACE::ImageResolve223120       reflect() const VULKAN_HPP_NOEXCEPT
23121     {
23122       return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent );
23123     }
23124 #endif
23125 
23126 
23127 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23128 auto operator<=>( ImageResolve2 const & ) const = default;
23129 #else
operator ==VULKAN_HPP_NAMESPACE::ImageResolve223130     bool operator==( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT
23131     {
23132 #if defined( VULKAN_HPP_USE_REFLECT )
23133       return this->reflect() == rhs.reflect();
23134 #else
23135       return ( sType == rhs.sType )
23136           && ( pNext == rhs.pNext )
23137           && ( srcSubresource == rhs.srcSubresource )
23138           && ( srcOffset == rhs.srcOffset )
23139           && ( dstSubresource == rhs.dstSubresource )
23140           && ( dstOffset == rhs.dstOffset )
23141           && ( extent == rhs.extent );
23142 #endif
23143     }
23144 
operator !=VULKAN_HPP_NAMESPACE::ImageResolve223145     bool operator!=( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT
23146     {
23147       return !operator==( rhs );
23148     }
23149 #endif
23150 
23151     public:
23152     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageResolve2;
23153     const void * pNext = {};
23154     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {};
23155     VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {};
23156     VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {};
23157     VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {};
23158     VULKAN_HPP_NAMESPACE::Extent3D extent = {};
23159 
23160   };
23161 
23162   template <>
23163   struct CppType<StructureType, StructureType::eImageResolve2>
23164   {
23165     using Type = ImageResolve2;
23166   };
23167   using ImageResolve2KHR = ImageResolve2;
23168 
23169   struct ImageStencilUsageCreateInfo
23170   {
23171     using NativeType = VkImageStencilUsageCreateInfo;
23172 
23173     static const bool allowDuplicate = false;
23174     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageStencilUsageCreateInfo;
23175 
23176 
23177 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageStencilUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23178 VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo(VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
23179     : pNext( pNext_ ), stencilUsage( stencilUsage_ )
23180     {}
23181 
23182     VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23183 
ImageStencilUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23184     ImageStencilUsageCreateInfo( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23185       : ImageStencilUsageCreateInfo( *reinterpret_cast<ImageStencilUsageCreateInfo const *>( &rhs ) )
23186     {}
23187 
23188 
23189     ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23190 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23191 
operator =VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23192     ImageStencilUsageCreateInfo & operator=( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23193     {
23194       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo const *>( &rhs );
23195       return *this;
23196     }
23197 
23198 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23199     VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23200     {
23201       pNext = pNext_;
23202       return *this;
23203     }
23204 
setStencilUsageVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23205     VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setStencilUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ ) VULKAN_HPP_NOEXCEPT
23206     {
23207       stencilUsage = stencilUsage_;
23208       return *this;
23209     }
23210 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23211 
23212 
operator VkImageStencilUsageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23213     operator VkImageStencilUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
23214     {
23215       return *reinterpret_cast<const VkImageStencilUsageCreateInfo*>( this );
23216     }
23217 
operator VkImageStencilUsageCreateInfo&VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23218     operator VkImageStencilUsageCreateInfo &() VULKAN_HPP_NOEXCEPT
23219     {
23220       return *reinterpret_cast<VkImageStencilUsageCreateInfo*>( this );
23221     }
23222 
23223 #if defined( VULKAN_HPP_USE_REFLECT )
23224 #if 14 <= VULKAN_HPP_CPP_VERSION
23225     auto
23226 #else
23227     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
23228 #endif
reflectVULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23229       reflect() const VULKAN_HPP_NOEXCEPT
23230     {
23231       return std::tie( sType, pNext, stencilUsage );
23232     }
23233 #endif
23234 
23235 
23236 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23237 auto operator<=>( ImageStencilUsageCreateInfo const & ) const = default;
23238 #else
operator ==VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23239     bool operator==( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23240     {
23241 #if defined( VULKAN_HPP_USE_REFLECT )
23242       return this->reflect() == rhs.reflect();
23243 #else
23244       return ( sType == rhs.sType )
23245           && ( pNext == rhs.pNext )
23246           && ( stencilUsage == rhs.stencilUsage );
23247 #endif
23248     }
23249 
operator !=VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo23250     bool operator!=( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23251     {
23252       return !operator==( rhs );
23253     }
23254 #endif
23255 
23256     public:
23257     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageStencilUsageCreateInfo;
23258     const void * pNext = {};
23259     VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage = {};
23260 
23261   };
23262 
23263   template <>
23264   struct CppType<StructureType, StructureType::eImageStencilUsageCreateInfo>
23265   {
23266     using Type = ImageStencilUsageCreateInfo;
23267   };
23268   using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo;
23269 
23270   struct ImageSubresource
23271   {
23272     using NativeType = VkImageSubresource;
23273 
23274 
23275 
23276 
23277 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource23278 VULKAN_HPP_CONSTEXPR ImageSubresource(VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, uint32_t mipLevel_ = {}, uint32_t arrayLayer_ = {}) VULKAN_HPP_NOEXCEPT
23279     : aspectMask( aspectMask_ ), mipLevel( mipLevel_ ), arrayLayer( arrayLayer_ )
23280     {}
23281 
23282     VULKAN_HPP_CONSTEXPR ImageSubresource( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23283 
ImageSubresourceVULKAN_HPP_NAMESPACE::ImageSubresource23284     ImageSubresource( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
23285       : ImageSubresource( *reinterpret_cast<ImageSubresource const *>( &rhs ) )
23286     {}
23287 
23288 
23289     ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23290 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23291 
operator =VULKAN_HPP_NAMESPACE::ImageSubresource23292     ImageSubresource & operator=( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT
23293     {
23294       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSubresource const *>( &rhs );
23295       return *this;
23296     }
23297 
23298 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setAspectMaskVULKAN_HPP_NAMESPACE::ImageSubresource23299     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
23300     {
23301       aspectMask = aspectMask_;
23302       return *this;
23303     }
23304 
setMipLevelVULKAN_HPP_NAMESPACE::ImageSubresource23305     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT
23306     {
23307       mipLevel = mipLevel_;
23308       return *this;
23309     }
23310 
setArrayLayerVULKAN_HPP_NAMESPACE::ImageSubresource23311     VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setArrayLayer( uint32_t arrayLayer_ ) VULKAN_HPP_NOEXCEPT
23312     {
23313       arrayLayer = arrayLayer_;
23314       return *this;
23315     }
23316 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23317 
23318 
operator VkImageSubresource const&VULKAN_HPP_NAMESPACE::ImageSubresource23319     operator VkImageSubresource const &() const VULKAN_HPP_NOEXCEPT
23320     {
23321       return *reinterpret_cast<const VkImageSubresource*>( this );
23322     }
23323 
operator VkImageSubresource&VULKAN_HPP_NAMESPACE::ImageSubresource23324     operator VkImageSubresource &() VULKAN_HPP_NOEXCEPT
23325     {
23326       return *reinterpret_cast<VkImageSubresource*>( this );
23327     }
23328 
23329 #if defined( VULKAN_HPP_USE_REFLECT )
23330 #if 14 <= VULKAN_HPP_CPP_VERSION
23331     auto
23332 #else
23333     std::tuple<VULKAN_HPP_NAMESPACE::ImageAspectFlags const &, uint32_t const &, uint32_t const &>
23334 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSubresource23335       reflect() const VULKAN_HPP_NOEXCEPT
23336     {
23337       return std::tie( aspectMask, mipLevel, arrayLayer );
23338     }
23339 #endif
23340 
23341 
23342 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23343 auto operator<=>( ImageSubresource const & ) const = default;
23344 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSubresource23345     bool operator==( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT
23346     {
23347 #if defined( VULKAN_HPP_USE_REFLECT )
23348       return this->reflect() == rhs.reflect();
23349 #else
23350       return ( aspectMask == rhs.aspectMask )
23351           && ( mipLevel == rhs.mipLevel )
23352           && ( arrayLayer == rhs.arrayLayer );
23353 #endif
23354     }
23355 
operator !=VULKAN_HPP_NAMESPACE::ImageSubresource23356     bool operator!=( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT
23357     {
23358       return !operator==( rhs );
23359     }
23360 #endif
23361 
23362     public:
23363     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
23364     uint32_t mipLevel = {};
23365     uint32_t arrayLayer = {};
23366 
23367   };
23368 
23369   struct ImageSwapchainCreateInfoKHR
23370   {
23371     using NativeType = VkImageSwapchainCreateInfoKHR;
23372 
23373     static const bool allowDuplicate = false;
23374     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageSwapchainCreateInfoKHR;
23375 
23376 
23377 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23378 VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR(VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
23379     : pNext( pNext_ ), swapchain( swapchain_ )
23380     {}
23381 
23382     VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23383 
ImageSwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23384     ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23385       : ImageSwapchainCreateInfoKHR( *reinterpret_cast<ImageSwapchainCreateInfoKHR const *>( &rhs ) )
23386     {}
23387 
23388 
23389     ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23390 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23391 
operator =VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23392     ImageSwapchainCreateInfoKHR & operator=( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23393     {
23394       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR const *>( &rhs );
23395       return *this;
23396     }
23397 
23398 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23399     VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23400     {
23401       pNext = pNext_;
23402       return *this;
23403     }
23404 
setSwapchainVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23405     VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT
23406     {
23407       swapchain = swapchain_;
23408       return *this;
23409     }
23410 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23411 
23412 
operator VkImageSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23413     operator VkImageSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
23414     {
23415       return *reinterpret_cast<const VkImageSwapchainCreateInfoKHR*>( this );
23416     }
23417 
operator VkImageSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23418     operator VkImageSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
23419     {
23420       return *reinterpret_cast<VkImageSwapchainCreateInfoKHR*>( this );
23421     }
23422 
23423 #if defined( VULKAN_HPP_USE_REFLECT )
23424 #if 14 <= VULKAN_HPP_CPP_VERSION
23425     auto
23426 #else
23427     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SwapchainKHR const &>
23428 #endif
reflectVULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23429       reflect() const VULKAN_HPP_NOEXCEPT
23430     {
23431       return std::tie( sType, pNext, swapchain );
23432     }
23433 #endif
23434 
23435 
23436 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23437 auto operator<=>( ImageSwapchainCreateInfoKHR const & ) const = default;
23438 #else
operator ==VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23439     bool operator==( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23440     {
23441 #if defined( VULKAN_HPP_USE_REFLECT )
23442       return this->reflect() == rhs.reflect();
23443 #else
23444       return ( sType == rhs.sType )
23445           && ( pNext == rhs.pNext )
23446           && ( swapchain == rhs.swapchain );
23447 #endif
23448     }
23449 
operator !=VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR23450     bool operator!=( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23451     {
23452       return !operator==( rhs );
23453     }
23454 #endif
23455 
23456     public:
23457     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSwapchainCreateInfoKHR;
23458     const void * pNext = {};
23459     VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {};
23460 
23461   };
23462 
23463   template <>
23464   struct CppType<StructureType, StructureType::eImageSwapchainCreateInfoKHR>
23465   {
23466     using Type = ImageSwapchainCreateInfoKHR;
23467   };
23468 
23469   struct ImageViewASTCDecodeModeEXT
23470   {
23471     using NativeType = VkImageViewASTCDecodeModeEXT;
23472 
23473     static const bool allowDuplicate = false;
23474     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewAstcDecodeModeEXT;
23475 
23476 
23477 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewASTCDecodeModeEXTVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23478 VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT(VULKAN_HPP_NAMESPACE::Format decodeMode_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
23479     : pNext( pNext_ ), decodeMode( decodeMode_ )
23480     {}
23481 
23482     VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23483 
ImageViewASTCDecodeModeEXTVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23484     ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23485       : ImageViewASTCDecodeModeEXT( *reinterpret_cast<ImageViewASTCDecodeModeEXT const *>( &rhs ) )
23486     {}
23487 
23488 
23489     ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23490 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23491 
operator =VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23492     ImageViewASTCDecodeModeEXT & operator=( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT
23493     {
23494       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT const *>( &rhs );
23495       return *this;
23496     }
23497 
23498 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23499     VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23500     {
23501       pNext = pNext_;
23502       return *this;
23503     }
23504 
setDecodeModeVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23505     VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setDecodeMode( VULKAN_HPP_NAMESPACE::Format decodeMode_ ) VULKAN_HPP_NOEXCEPT
23506     {
23507       decodeMode = decodeMode_;
23508       return *this;
23509     }
23510 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23511 
23512 
operator VkImageViewASTCDecodeModeEXT const&VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23513     operator VkImageViewASTCDecodeModeEXT const &() const VULKAN_HPP_NOEXCEPT
23514     {
23515       return *reinterpret_cast<const VkImageViewASTCDecodeModeEXT*>( this );
23516     }
23517 
operator VkImageViewASTCDecodeModeEXT&VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23518     operator VkImageViewASTCDecodeModeEXT &() VULKAN_HPP_NOEXCEPT
23519     {
23520       return *reinterpret_cast<VkImageViewASTCDecodeModeEXT*>( this );
23521     }
23522 
23523 #if defined( VULKAN_HPP_USE_REFLECT )
23524 #if 14 <= VULKAN_HPP_CPP_VERSION
23525     auto
23526 #else
23527     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Format const &>
23528 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23529       reflect() const VULKAN_HPP_NOEXCEPT
23530     {
23531       return std::tie( sType, pNext, decodeMode );
23532     }
23533 #endif
23534 
23535 
23536 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23537 auto operator<=>( ImageViewASTCDecodeModeEXT const & ) const = default;
23538 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23539     bool operator==( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23540     {
23541 #if defined( VULKAN_HPP_USE_REFLECT )
23542       return this->reflect() == rhs.reflect();
23543 #else
23544       return ( sType == rhs.sType )
23545           && ( pNext == rhs.pNext )
23546           && ( decodeMode == rhs.decodeMode );
23547 #endif
23548     }
23549 
operator !=VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT23550     bool operator!=( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
23551     {
23552       return !operator==( rhs );
23553     }
23554 #endif
23555 
23556     public:
23557     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAstcDecodeModeEXT;
23558     const void * pNext = {};
23559     VULKAN_HPP_NAMESPACE::Format decodeMode = VULKAN_HPP_NAMESPACE::Format::eUndefined;
23560 
23561   };
23562 
23563   template <>
23564   struct CppType<StructureType, StructureType::eImageViewAstcDecodeModeEXT>
23565   {
23566     using Type = ImageViewASTCDecodeModeEXT;
23567   };
23568 
23569   struct ImageViewCreateInfo
23570   {
23571     using NativeType = VkImageViewCreateInfo;
23572 
23573     static const bool allowDuplicate = false;
23574     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewCreateInfo;
23575 
23576 
23577 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewCreateInfoVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23578 VULKAN_HPP_CONSTEXPR ImageViewCreateInfo(VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::ImageViewType viewType_ = VULKAN_HPP_NAMESPACE::ImageViewType::e1D, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
23579     : pNext( pNext_ ), flags( flags_ ), image( image_ ), viewType( viewType_ ), format( format_ ), components( components_ ), subresourceRange( subresourceRange_ )
23580     {}
23581 
23582     VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23583 
ImageViewCreateInfoVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23584     ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23585       : ImageViewCreateInfo( *reinterpret_cast<ImageViewCreateInfo const *>( &rhs ) )
23586     {}
23587 
23588 
23589     ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23590 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23591 
operator =VULKAN_HPP_NAMESPACE::ImageViewCreateInfo23592     ImageViewCreateInfo & operator=( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23593     {
23594       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const *>( &rhs );
23595       return *this;
23596     }
23597 
23598 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23599     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23600     {
23601       pNext = pNext_;
23602       return *this;
23603     }
23604 
setFlagsVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23605     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
23606     {
23607       flags = flags_;
23608       return *this;
23609     }
23610 
setImageVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23611     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
23612     {
23613       image = image_;
23614       return *this;
23615     }
23616 
setViewTypeVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23617     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setViewType( VULKAN_HPP_NAMESPACE::ImageViewType viewType_ ) VULKAN_HPP_NOEXCEPT
23618     {
23619       viewType = viewType_;
23620       return *this;
23621     }
23622 
setFormatVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23623     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
23624     {
23625       format = format_;
23626       return *this;
23627     }
23628 
setComponentsVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23629     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
23630     {
23631       components = components_;
23632       return *this;
23633     }
23634 
setSubresourceRangeVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23635     VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT
23636     {
23637       subresourceRange = subresourceRange_;
23638       return *this;
23639     }
23640 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23641 
23642 
operator VkImageViewCreateInfo const&VULKAN_HPP_NAMESPACE::ImageViewCreateInfo23643     operator VkImageViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
23644     {
23645       return *reinterpret_cast<const VkImageViewCreateInfo*>( this );
23646     }
23647 
operator VkImageViewCreateInfo&VULKAN_HPP_NAMESPACE::ImageViewCreateInfo23648     operator VkImageViewCreateInfo &() VULKAN_HPP_NOEXCEPT
23649     {
23650       return *reinterpret_cast<VkImageViewCreateInfo*>( this );
23651     }
23652 
23653 #if defined( VULKAN_HPP_USE_REFLECT )
23654 #if 14 <= VULKAN_HPP_CPP_VERSION
23655     auto
23656 #else
23657     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageViewCreateFlags const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageViewType const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::ComponentMapping const &, VULKAN_HPP_NAMESPACE::ImageSubresourceRange const &>
23658 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewCreateInfo23659       reflect() const VULKAN_HPP_NOEXCEPT
23660     {
23661       return std::tie( sType, pNext, flags, image, viewType, format, components, subresourceRange );
23662     }
23663 #endif
23664 
23665 
23666 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23667 auto operator<=>( ImageViewCreateInfo const & ) const = default;
23668 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewCreateInfo23669     bool operator==( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23670     {
23671 #if defined( VULKAN_HPP_USE_REFLECT )
23672       return this->reflect() == rhs.reflect();
23673 #else
23674       return ( sType == rhs.sType )
23675           && ( pNext == rhs.pNext )
23676           && ( flags == rhs.flags )
23677           && ( image == rhs.image )
23678           && ( viewType == rhs.viewType )
23679           && ( format == rhs.format )
23680           && ( components == rhs.components )
23681           && ( subresourceRange == rhs.subresourceRange );
23682 #endif
23683     }
23684 
operator !=VULKAN_HPP_NAMESPACE::ImageViewCreateInfo23685     bool operator!=( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23686     {
23687       return !operator==( rhs );
23688     }
23689 #endif
23690 
23691     public:
23692     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewCreateInfo;
23693     const void * pNext = {};
23694     VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags = {};
23695     VULKAN_HPP_NAMESPACE::Image image = {};
23696     VULKAN_HPP_NAMESPACE::ImageViewType viewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
23697     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
23698     VULKAN_HPP_NAMESPACE::ComponentMapping components = {};
23699     VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {};
23700 
23701   };
23702 
23703   template <>
23704   struct CppType<StructureType, StructureType::eImageViewCreateInfo>
23705   {
23706     using Type = ImageViewCreateInfo;
23707   };
23708 
23709   struct ImageViewUsageCreateInfo
23710   {
23711     using NativeType = VkImageViewUsageCreateInfo;
23712 
23713     static const bool allowDuplicate = false;
23714     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewUsageCreateInfo;
23715 
23716 
23717 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImageViewUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23718 VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo(VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
23719     : pNext( pNext_ ), usage( usage_ )
23720     {}
23721 
23722     VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23723 
ImageViewUsageCreateInfoVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23724     ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23725       : ImageViewUsageCreateInfo( *reinterpret_cast<ImageViewUsageCreateInfo const *>( &rhs ) )
23726     {}
23727 
23728 
23729     ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23730 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23731 
operator =VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23732     ImageViewUsageCreateInfo & operator=( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
23733     {
23734       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo const *>( &rhs );
23735       return *this;
23736     }
23737 
23738 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23739     VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23740     {
23741       pNext = pNext_;
23742       return *this;
23743     }
23744 
setUsageVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23745     VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
23746     {
23747       usage = usage_;
23748       return *this;
23749     }
23750 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23751 
23752 
operator VkImageViewUsageCreateInfo const&VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23753     operator VkImageViewUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT
23754     {
23755       return *reinterpret_cast<const VkImageViewUsageCreateInfo*>( this );
23756     }
23757 
operator VkImageViewUsageCreateInfo&VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23758     operator VkImageViewUsageCreateInfo &() VULKAN_HPP_NOEXCEPT
23759     {
23760       return *reinterpret_cast<VkImageViewUsageCreateInfo*>( this );
23761     }
23762 
23763 #if defined( VULKAN_HPP_USE_REFLECT )
23764 #if 14 <= VULKAN_HPP_CPP_VERSION
23765     auto
23766 #else
23767     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
23768 #endif
reflectVULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23769       reflect() const VULKAN_HPP_NOEXCEPT
23770     {
23771       return std::tie( sType, pNext, usage );
23772     }
23773 #endif
23774 
23775 
23776 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23777 auto operator<=>( ImageViewUsageCreateInfo const & ) const = default;
23778 #else
operator ==VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23779     bool operator==( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23780     {
23781 #if defined( VULKAN_HPP_USE_REFLECT )
23782       return this->reflect() == rhs.reflect();
23783 #else
23784       return ( sType == rhs.sType )
23785           && ( pNext == rhs.pNext )
23786           && ( usage == rhs.usage );
23787 #endif
23788     }
23789 
operator !=VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo23790     bool operator!=( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
23791     {
23792       return !operator==( rhs );
23793     }
23794 #endif
23795 
23796     public:
23797     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewUsageCreateInfo;
23798     const void * pNext = {};
23799     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
23800 
23801   };
23802 
23803   template <>
23804   struct CppType<StructureType, StructureType::eImageViewUsageCreateInfo>
23805   {
23806     using Type = ImageViewUsageCreateInfo;
23807   };
23808   using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo;
23809 
23810   struct ImportFenceFdInfoKHR
23811   {
23812     using NativeType = VkImportFenceFdInfoKHR;
23813 
23814     static const bool allowDuplicate = false;
23815     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportFenceFdInfoKHR;
23816 
23817 
23818 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportFenceFdInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23819 VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR(VULKAN_HPP_NAMESPACE::Fence fence_ = {}, VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, int fd_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
23820     : pNext( pNext_ ), fence( fence_ ), flags( flags_ ), handleType( handleType_ ), fd( fd_ )
23821     {}
23822 
23823     VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23824 
ImportFenceFdInfoKHRVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23825     ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23826       : ImportFenceFdInfoKHR( *reinterpret_cast<ImportFenceFdInfoKHR const *>( &rhs ) )
23827     {}
23828 
23829 
23830     ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23831 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23832 
operator =VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23833     ImportFenceFdInfoKHR & operator=( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
23834     {
23835       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR const *>( &rhs );
23836       return *this;
23837     }
23838 
23839 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23840     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23841     {
23842       pNext = pNext_;
23843       return *this;
23844     }
23845 
setFenceVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23846     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
23847     {
23848       fence = fence_;
23849       return *this;
23850     }
23851 
setFlagsVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23852     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
23853     {
23854       flags = flags_;
23855       return *this;
23856     }
23857 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23858     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
23859     {
23860       handleType = handleType_;
23861       return *this;
23862     }
23863 
setFdVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23864     VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
23865     {
23866       fd = fd_;
23867       return *this;
23868     }
23869 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23870 
23871 
operator VkImportFenceFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23872     operator VkImportFenceFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
23873     {
23874       return *reinterpret_cast<const VkImportFenceFdInfoKHR*>( this );
23875     }
23876 
operator VkImportFenceFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23877     operator VkImportFenceFdInfoKHR &() VULKAN_HPP_NOEXCEPT
23878     {
23879       return *reinterpret_cast<VkImportFenceFdInfoKHR*>( this );
23880     }
23881 
23882 #if defined( VULKAN_HPP_USE_REFLECT )
23883 #if 14 <= VULKAN_HPP_CPP_VERSION
23884     auto
23885 #else
23886     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Fence const &, VULKAN_HPP_NAMESPACE::FenceImportFlags const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &, int const &>
23887 #endif
reflectVULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23888       reflect() const VULKAN_HPP_NOEXCEPT
23889     {
23890       return std::tie( sType, pNext, fence, flags, handleType, fd );
23891     }
23892 #endif
23893 
23894 
23895 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
23896 auto operator<=>( ImportFenceFdInfoKHR const & ) const = default;
23897 #else
operator ==VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23898     bool operator==( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23899     {
23900 #if defined( VULKAN_HPP_USE_REFLECT )
23901       return this->reflect() == rhs.reflect();
23902 #else
23903       return ( sType == rhs.sType )
23904           && ( pNext == rhs.pNext )
23905           && ( fence == rhs.fence )
23906           && ( flags == rhs.flags )
23907           && ( handleType == rhs.handleType )
23908           && ( fd == rhs.fd );
23909 #endif
23910     }
23911 
operator !=VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR23912     bool operator!=( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
23913     {
23914       return !operator==( rhs );
23915     }
23916 #endif
23917 
23918     public:
23919     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceFdInfoKHR;
23920     const void * pNext = {};
23921     VULKAN_HPP_NAMESPACE::Fence fence = {};
23922     VULKAN_HPP_NAMESPACE::FenceImportFlags flags = {};
23923     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
23924     int fd = {};
23925 
23926   };
23927 
23928   template <>
23929   struct CppType<StructureType, StructureType::eImportFenceFdInfoKHR>
23930   {
23931     using Type = ImportFenceFdInfoKHR;
23932   };
23933 
23934 #if defined( VK_USE_PLATFORM_SCI )
23935   struct ImportFenceSciSyncInfoNV
23936   {
23937     using NativeType = VkImportFenceSciSyncInfoNV;
23938 
23939     static const bool allowDuplicate = false;
23940     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportFenceSciSyncInfoNV;
23941 
23942 
23943 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportFenceSciSyncInfoNVVULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23944 VULKAN_HPP_CONSTEXPR ImportFenceSciSyncInfoNV(VULKAN_HPP_NAMESPACE::Fence fence_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, void * handle_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
23945     : pNext( pNext_ ), fence( fence_ ), handleType( handleType_ ), handle( handle_ )
23946     {}
23947 
23948     VULKAN_HPP_CONSTEXPR ImportFenceSciSyncInfoNV( ImportFenceSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23949 
ImportFenceSciSyncInfoNVVULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23950     ImportFenceSciSyncInfoNV( VkImportFenceSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
23951       : ImportFenceSciSyncInfoNV( *reinterpret_cast<ImportFenceSciSyncInfoNV const *>( &rhs ) )
23952     {}
23953 
23954 
23955     ImportFenceSciSyncInfoNV & operator=( ImportFenceSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
23956 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
23957 
operator =VULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23958     ImportFenceSciSyncInfoNV & operator=( VkImportFenceSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
23959     {
23960       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV const *>( &rhs );
23961       return *this;
23962     }
23963 
23964 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23965     VULKAN_HPP_CONSTEXPR_14 ImportFenceSciSyncInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
23966     {
23967       pNext = pNext_;
23968       return *this;
23969     }
23970 
setFenceVULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23971     VULKAN_HPP_CONSTEXPR_14 ImportFenceSciSyncInfoNV & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT
23972     {
23973       fence = fence_;
23974       return *this;
23975     }
23976 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23977     VULKAN_HPP_CONSTEXPR_14 ImportFenceSciSyncInfoNV & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
23978     {
23979       handleType = handleType_;
23980       return *this;
23981     }
23982 
setHandleVULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23983     VULKAN_HPP_CONSTEXPR_14 ImportFenceSciSyncInfoNV & setHandle( void * handle_ ) VULKAN_HPP_NOEXCEPT
23984     {
23985       handle = handle_;
23986       return *this;
23987     }
23988 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
23989 
23990 
operator VkImportFenceSciSyncInfoNV const&VULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23991     operator VkImportFenceSciSyncInfoNV const &() const VULKAN_HPP_NOEXCEPT
23992     {
23993       return *reinterpret_cast<const VkImportFenceSciSyncInfoNV*>( this );
23994     }
23995 
operator VkImportFenceSciSyncInfoNV&VULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV23996     operator VkImportFenceSciSyncInfoNV &() VULKAN_HPP_NOEXCEPT
23997     {
23998       return *reinterpret_cast<VkImportFenceSciSyncInfoNV*>( this );
23999     }
24000 
24001 #if defined( VULKAN_HPP_USE_REFLECT )
24002 #if 14 <= VULKAN_HPP_CPP_VERSION
24003     auto
24004 #else
24005     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Fence const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &, void * const &>
24006 #endif
reflectVULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV24007       reflect() const VULKAN_HPP_NOEXCEPT
24008     {
24009       return std::tie( sType, pNext, fence, handleType, handle );
24010     }
24011 #endif
24012 
24013 
24014 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
24015 auto operator<=>( ImportFenceSciSyncInfoNV const & ) const = default;
24016 #else
operator ==VULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV24017     bool operator==( ImportFenceSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
24018     {
24019 #if defined( VULKAN_HPP_USE_REFLECT )
24020       return this->reflect() == rhs.reflect();
24021 #else
24022       return ( sType == rhs.sType )
24023           && ( pNext == rhs.pNext )
24024           && ( fence == rhs.fence )
24025           && ( handleType == rhs.handleType )
24026           && ( handle == rhs.handle );
24027 #endif
24028     }
24029 
operator !=VULKAN_HPP_NAMESPACE::ImportFenceSciSyncInfoNV24030     bool operator!=( ImportFenceSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
24031     {
24032       return !operator==( rhs );
24033     }
24034 #endif
24035 
24036     public:
24037     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceSciSyncInfoNV;
24038     const void * pNext = {};
24039     VULKAN_HPP_NAMESPACE::Fence fence = {};
24040     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
24041     void * handle = {};
24042 
24043   };
24044 
24045   template <>
24046   struct CppType<StructureType, StructureType::eImportFenceSciSyncInfoNV>
24047   {
24048     using Type = ImportFenceSciSyncInfoNV;
24049   };
24050 #endif /*VK_USE_PLATFORM_SCI*/
24051 
24052   struct ImportMemoryFdInfoKHR
24053   {
24054     using NativeType = VkImportMemoryFdInfoKHR;
24055 
24056     static const bool allowDuplicate = false;
24057     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryFdInfoKHR;
24058 
24059 
24060 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryFdInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24061 VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, int fd_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
24062     : pNext( pNext_ ), handleType( handleType_ ), fd( fd_ )
24063     {}
24064 
24065     VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24066 
ImportMemoryFdInfoKHRVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24067     ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
24068       : ImportMemoryFdInfoKHR( *reinterpret_cast<ImportMemoryFdInfoKHR const *>( &rhs ) )
24069     {}
24070 
24071 
24072     ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24073 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24074 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24075     ImportMemoryFdInfoKHR & operator=( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
24076     {
24077       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR const *>( &rhs );
24078       return *this;
24079     }
24080 
24081 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24082     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24083     {
24084       pNext = pNext_;
24085       return *this;
24086     }
24087 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24088     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
24089     {
24090       handleType = handleType_;
24091       return *this;
24092     }
24093 
setFdVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24094     VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
24095     {
24096       fd = fd_;
24097       return *this;
24098     }
24099 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24100 
24101 
operator VkImportMemoryFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24102     operator VkImportMemoryFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
24103     {
24104       return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>( this );
24105     }
24106 
operator VkImportMemoryFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24107     operator VkImportMemoryFdInfoKHR &() VULKAN_HPP_NOEXCEPT
24108     {
24109       return *reinterpret_cast<VkImportMemoryFdInfoKHR*>( this );
24110     }
24111 
24112 #if defined( VULKAN_HPP_USE_REFLECT )
24113 #if 14 <= VULKAN_HPP_CPP_VERSION
24114     auto
24115 #else
24116     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &, int const &>
24117 #endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24118       reflect() const VULKAN_HPP_NOEXCEPT
24119     {
24120       return std::tie( sType, pNext, handleType, fd );
24121     }
24122 #endif
24123 
24124 
24125 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
24126 auto operator<=>( ImportMemoryFdInfoKHR const & ) const = default;
24127 #else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24128     bool operator==( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
24129     {
24130 #if defined( VULKAN_HPP_USE_REFLECT )
24131       return this->reflect() == rhs.reflect();
24132 #else
24133       return ( sType == rhs.sType )
24134           && ( pNext == rhs.pNext )
24135           && ( handleType == rhs.handleType )
24136           && ( fd == rhs.fd );
24137 #endif
24138     }
24139 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR24140     bool operator!=( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
24141     {
24142       return !operator==( rhs );
24143     }
24144 #endif
24145 
24146     public:
24147     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryFdInfoKHR;
24148     const void * pNext = {};
24149     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
24150     int fd = {};
24151 
24152   };
24153 
24154   template <>
24155   struct CppType<StructureType, StructureType::eImportMemoryFdInfoKHR>
24156   {
24157     using Type = ImportMemoryFdInfoKHR;
24158   };
24159 
24160   struct ImportMemoryHostPointerInfoEXT
24161   {
24162     using NativeType = VkImportMemoryHostPointerInfoEXT;
24163 
24164     static const bool allowDuplicate = false;
24165     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryHostPointerInfoEXT;
24166 
24167 
24168 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemoryHostPointerInfoEXTVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24169 VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, void * pHostPointer_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
24170     : pNext( pNext_ ), handleType( handleType_ ), pHostPointer( pHostPointer_ )
24171     {}
24172 
24173     VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24174 
ImportMemoryHostPointerInfoEXTVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24175     ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24176       : ImportMemoryHostPointerInfoEXT( *reinterpret_cast<ImportMemoryHostPointerInfoEXT const *>( &rhs ) )
24177     {}
24178 
24179 
24180     ImportMemoryHostPointerInfoEXT & operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24181 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24182 
operator =VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24183     ImportMemoryHostPointerInfoEXT & operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
24184     {
24185       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT const *>( &rhs );
24186       return *this;
24187     }
24188 
24189 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24190     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24191     {
24192       pNext = pNext_;
24193       return *this;
24194     }
24195 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24196     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
24197     {
24198       handleType = handleType_;
24199       return *this;
24200     }
24201 
setPHostPointerVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24202     VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPHostPointer( void * pHostPointer_ ) VULKAN_HPP_NOEXCEPT
24203     {
24204       pHostPointer = pHostPointer_;
24205       return *this;
24206     }
24207 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24208 
24209 
operator VkImportMemoryHostPointerInfoEXT const&VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24210     operator VkImportMemoryHostPointerInfoEXT const &() const VULKAN_HPP_NOEXCEPT
24211     {
24212       return *reinterpret_cast<const VkImportMemoryHostPointerInfoEXT*>( this );
24213     }
24214 
operator VkImportMemoryHostPointerInfoEXT&VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24215     operator VkImportMemoryHostPointerInfoEXT &() VULKAN_HPP_NOEXCEPT
24216     {
24217       return *reinterpret_cast<VkImportMemoryHostPointerInfoEXT*>( this );
24218     }
24219 
24220 #if defined( VULKAN_HPP_USE_REFLECT )
24221 #if 14 <= VULKAN_HPP_CPP_VERSION
24222     auto
24223 #else
24224     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &, void * const &>
24225 #endif
reflectVULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24226       reflect() const VULKAN_HPP_NOEXCEPT
24227     {
24228       return std::tie( sType, pNext, handleType, pHostPointer );
24229     }
24230 #endif
24231 
24232 
24233 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
24234 auto operator<=>( ImportMemoryHostPointerInfoEXT const & ) const = default;
24235 #else
operator ==VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24236     bool operator==( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24237     {
24238 #if defined( VULKAN_HPP_USE_REFLECT )
24239       return this->reflect() == rhs.reflect();
24240 #else
24241       return ( sType == rhs.sType )
24242           && ( pNext == rhs.pNext )
24243           && ( handleType == rhs.handleType )
24244           && ( pHostPointer == rhs.pHostPointer );
24245 #endif
24246     }
24247 
operator !=VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT24248     bool operator!=( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
24249     {
24250       return !operator==( rhs );
24251     }
24252 #endif
24253 
24254     public:
24255     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT;
24256     const void * pNext = {};
24257     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
24258     void * pHostPointer = {};
24259 
24260   };
24261 
24262   template <>
24263   struct CppType<StructureType, StructureType::eImportMemoryHostPointerInfoEXT>
24264   {
24265     using Type = ImportMemoryHostPointerInfoEXT;
24266   };
24267 
24268 #if defined( VK_USE_PLATFORM_SCI )
24269   struct ImportMemorySciBufInfoNV
24270   {
24271     using NativeType = VkImportMemorySciBufInfoNV;
24272 
24273     static const bool allowDuplicate = false;
24274     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemorySciBufInfoNV;
24275 
24276 
24277 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportMemorySciBufInfoNVVULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24278 VULKAN_HPP_CONSTEXPR ImportMemorySciBufInfoNV(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, NvSciBufObj handle_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
24279     : pNext( pNext_ ), handleType( handleType_ ), handle( handle_ )
24280     {}
24281 
24282     VULKAN_HPP_CONSTEXPR ImportMemorySciBufInfoNV( ImportMemorySciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24283 
ImportMemorySciBufInfoNVVULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24284     ImportMemorySciBufInfoNV( VkImportMemorySciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
24285       : ImportMemorySciBufInfoNV( *reinterpret_cast<ImportMemorySciBufInfoNV const *>( &rhs ) )
24286     {}
24287 
24288 
24289     ImportMemorySciBufInfoNV & operator=( ImportMemorySciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24290 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24291 
operator =VULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24292     ImportMemorySciBufInfoNV & operator=( VkImportMemorySciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
24293     {
24294       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV const *>( &rhs );
24295       return *this;
24296     }
24297 
24298 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24299     VULKAN_HPP_CONSTEXPR_14 ImportMemorySciBufInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24300     {
24301       pNext = pNext_;
24302       return *this;
24303     }
24304 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24305     VULKAN_HPP_CONSTEXPR_14 ImportMemorySciBufInfoNV & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
24306     {
24307       handleType = handleType_;
24308       return *this;
24309     }
24310 
setHandleVULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24311     VULKAN_HPP_CONSTEXPR_14 ImportMemorySciBufInfoNV & setHandle( NvSciBufObj handle_ ) VULKAN_HPP_NOEXCEPT
24312     {
24313       handle = handle_;
24314       return *this;
24315     }
24316 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24317 
24318 
operator VkImportMemorySciBufInfoNV const&VULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24319     operator VkImportMemorySciBufInfoNV const &() const VULKAN_HPP_NOEXCEPT
24320     {
24321       return *reinterpret_cast<const VkImportMemorySciBufInfoNV*>( this );
24322     }
24323 
operator VkImportMemorySciBufInfoNV&VULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24324     operator VkImportMemorySciBufInfoNV &() VULKAN_HPP_NOEXCEPT
24325     {
24326       return *reinterpret_cast<VkImportMemorySciBufInfoNV*>( this );
24327     }
24328 
24329 #if defined( VULKAN_HPP_USE_REFLECT )
24330 #if 14 <= VULKAN_HPP_CPP_VERSION
24331     auto
24332 #else
24333     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &, NvSciBufObj const &>
24334 #endif
reflectVULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24335       reflect() const VULKAN_HPP_NOEXCEPT
24336     {
24337       return std::tie( sType, pNext, handleType, handle );
24338     }
24339 #endif
24340 
24341 
24342 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24343     std::strong_ordering operator<=>( ImportMemorySciBufInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
24344     {
24345       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
24346       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
24347       if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 ) return cmp;
24348       if ( auto cmp = memcmp( &handle, &rhs.handle, sizeof( NvSciBufObj ) ); cmp != 0 )
24349         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
24350 
24351       return std::strong_ordering::equivalent;
24352     }
24353 #endif
24354 
operator ==VULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24355     bool operator==( ImportMemorySciBufInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
24356     {
24357       return ( sType == rhs.sType )
24358           && ( pNext == rhs.pNext )
24359           && ( handleType == rhs.handleType )
24360           && ( memcmp( &handle, &rhs.handle, sizeof( NvSciBufObj ) ) == 0 );
24361     }
24362 
operator !=VULKAN_HPP_NAMESPACE::ImportMemorySciBufInfoNV24363     bool operator!=( ImportMemorySciBufInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
24364     {
24365       return !operator==( rhs );
24366     }
24367 
24368     public:
24369     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemorySciBufInfoNV;
24370     const void * pNext = {};
24371     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
24372     NvSciBufObj handle = {};
24373 
24374   };
24375 
24376   template <>
24377   struct CppType<StructureType, StructureType::eImportMemorySciBufInfoNV>
24378   {
24379     using Type = ImportMemorySciBufInfoNV;
24380   };
24381 #endif /*VK_USE_PLATFORM_SCI*/
24382 
24383 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
24384   struct ImportScreenBufferInfoQNX
24385   {
24386     using NativeType = VkImportScreenBufferInfoQNX;
24387 
24388     static const bool allowDuplicate = false;
24389     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportScreenBufferInfoQNX;
24390 
24391 
24392 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportScreenBufferInfoQNXVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24393 VULKAN_HPP_CONSTEXPR ImportScreenBufferInfoQNX(struct _screen_buffer * buffer_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
24394     : pNext( pNext_ ), buffer( buffer_ )
24395     {}
24396 
24397     VULKAN_HPP_CONSTEXPR ImportScreenBufferInfoQNX( ImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24398 
ImportScreenBufferInfoQNXVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24399     ImportScreenBufferInfoQNX( VkImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
24400       : ImportScreenBufferInfoQNX( *reinterpret_cast<ImportScreenBufferInfoQNX const *>( &rhs ) )
24401     {}
24402 
24403 
24404     ImportScreenBufferInfoQNX & operator=( ImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24405 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24406 
operator =VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24407     ImportScreenBufferInfoQNX & operator=( VkImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT
24408     {
24409       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX const *>( &rhs );
24410       return *this;
24411     }
24412 
24413 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24414     VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24415     {
24416       pNext = pNext_;
24417       return *this;
24418     }
24419 
setBufferVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24420     VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX & setBuffer( struct _screen_buffer * buffer_ ) VULKAN_HPP_NOEXCEPT
24421     {
24422       buffer = buffer_;
24423       return *this;
24424     }
24425 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24426 
24427 
operator VkImportScreenBufferInfoQNX const&VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24428     operator VkImportScreenBufferInfoQNX const &() const VULKAN_HPP_NOEXCEPT
24429     {
24430       return *reinterpret_cast<const VkImportScreenBufferInfoQNX*>( this );
24431     }
24432 
operator VkImportScreenBufferInfoQNX&VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24433     operator VkImportScreenBufferInfoQNX &() VULKAN_HPP_NOEXCEPT
24434     {
24435       return *reinterpret_cast<VkImportScreenBufferInfoQNX*>( this );
24436     }
24437 
24438 #if defined( VULKAN_HPP_USE_REFLECT )
24439 #if 14 <= VULKAN_HPP_CPP_VERSION
24440     auto
24441 #else
24442     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, struct _screen_buffer * const &>
24443 #endif
reflectVULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24444       reflect() const VULKAN_HPP_NOEXCEPT
24445     {
24446       return std::tie( sType, pNext, buffer );
24447     }
24448 #endif
24449 
24450 
24451 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
24452 auto operator<=>( ImportScreenBufferInfoQNX const & ) const = default;
24453 #else
operator ==VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24454     bool operator==( ImportScreenBufferInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
24455     {
24456 #if defined( VULKAN_HPP_USE_REFLECT )
24457       return this->reflect() == rhs.reflect();
24458 #else
24459       return ( sType == rhs.sType )
24460           && ( pNext == rhs.pNext )
24461           && ( buffer == rhs.buffer );
24462 #endif
24463     }
24464 
operator !=VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX24465     bool operator!=( ImportScreenBufferInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
24466     {
24467       return !operator==( rhs );
24468     }
24469 #endif
24470 
24471     public:
24472     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportScreenBufferInfoQNX;
24473     const void * pNext = {};
24474     struct _screen_buffer * buffer = {};
24475 
24476   };
24477 
24478   template <>
24479   struct CppType<StructureType, StructureType::eImportScreenBufferInfoQNX>
24480   {
24481     using Type = ImportScreenBufferInfoQNX;
24482   };
24483 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
24484 
24485   struct ImportSemaphoreFdInfoKHR
24486   {
24487     using NativeType = VkImportSemaphoreFdInfoKHR;
24488 
24489     static const bool allowDuplicate = false;
24490     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportSemaphoreFdInfoKHR;
24491 
24492 
24493 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportSemaphoreFdInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24494 VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, int fd_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
24495     : pNext( pNext_ ), semaphore( semaphore_ ), flags( flags_ ), handleType( handleType_ ), fd( fd_ )
24496     {}
24497 
24498     VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24499 
ImportSemaphoreFdInfoKHRVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24500     ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
24501       : ImportSemaphoreFdInfoKHR( *reinterpret_cast<ImportSemaphoreFdInfoKHR const *>( &rhs ) )
24502     {}
24503 
24504 
24505     ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24506 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24507 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24508     ImportSemaphoreFdInfoKHR & operator=( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
24509     {
24510       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR const *>( &rhs );
24511       return *this;
24512     }
24513 
24514 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24515     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24516     {
24517       pNext = pNext_;
24518       return *this;
24519     }
24520 
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24521     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
24522     {
24523       semaphore = semaphore_;
24524       return *this;
24525     }
24526 
setFlagsVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24527     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT
24528     {
24529       flags = flags_;
24530       return *this;
24531     }
24532 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24533     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
24534     {
24535       handleType = handleType_;
24536       return *this;
24537     }
24538 
setFdVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24539     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT
24540     {
24541       fd = fd_;
24542       return *this;
24543     }
24544 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24545 
24546 
operator VkImportSemaphoreFdInfoKHR const&VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24547     operator VkImportSemaphoreFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
24548     {
24549       return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( this );
24550     }
24551 
operator VkImportSemaphoreFdInfoKHR&VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24552     operator VkImportSemaphoreFdInfoKHR &() VULKAN_HPP_NOEXCEPT
24553     {
24554       return *reinterpret_cast<VkImportSemaphoreFdInfoKHR*>( this );
24555     }
24556 
24557 #if defined( VULKAN_HPP_USE_REFLECT )
24558 #if 14 <= VULKAN_HPP_CPP_VERSION
24559     auto
24560 #else
24561     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, VULKAN_HPP_NAMESPACE::SemaphoreImportFlags const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &, int const &>
24562 #endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24563       reflect() const VULKAN_HPP_NOEXCEPT
24564     {
24565       return std::tie( sType, pNext, semaphore, flags, handleType, fd );
24566     }
24567 #endif
24568 
24569 
24570 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
24571 auto operator<=>( ImportSemaphoreFdInfoKHR const & ) const = default;
24572 #else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24573     bool operator==( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
24574     {
24575 #if defined( VULKAN_HPP_USE_REFLECT )
24576       return this->reflect() == rhs.reflect();
24577 #else
24578       return ( sType == rhs.sType )
24579           && ( pNext == rhs.pNext )
24580           && ( semaphore == rhs.semaphore )
24581           && ( flags == rhs.flags )
24582           && ( handleType == rhs.handleType )
24583           && ( fd == rhs.fd );
24584 #endif
24585     }
24586 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR24587     bool operator!=( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
24588     {
24589       return !operator==( rhs );
24590     }
24591 #endif
24592 
24593     public:
24594     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreFdInfoKHR;
24595     const void * pNext = {};
24596     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
24597     VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags = {};
24598     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
24599     int fd = {};
24600 
24601   };
24602 
24603   template <>
24604   struct CppType<StructureType, StructureType::eImportSemaphoreFdInfoKHR>
24605   {
24606     using Type = ImportSemaphoreFdInfoKHR;
24607   };
24608 
24609 #if defined( VK_USE_PLATFORM_SCI )
24610   struct ImportSemaphoreSciSyncInfoNV
24611   {
24612     using NativeType = VkImportSemaphoreSciSyncInfoNV;
24613 
24614     static const bool allowDuplicate = false;
24615     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportSemaphoreSciSyncInfoNV;
24616 
24617 
24618 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ImportSemaphoreSciSyncInfoNVVULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24619 VULKAN_HPP_CONSTEXPR ImportSemaphoreSciSyncInfoNV(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, void * handle_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
24620     : pNext( pNext_ ), semaphore( semaphore_ ), handleType( handleType_ ), handle( handle_ )
24621     {}
24622 
24623     VULKAN_HPP_CONSTEXPR ImportSemaphoreSciSyncInfoNV( ImportSemaphoreSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24624 
ImportSemaphoreSciSyncInfoNVVULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24625     ImportSemaphoreSciSyncInfoNV( VkImportSemaphoreSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
24626       : ImportSemaphoreSciSyncInfoNV( *reinterpret_cast<ImportSemaphoreSciSyncInfoNV const *>( &rhs ) )
24627     {}
24628 
24629 
24630     ImportSemaphoreSciSyncInfoNV & operator=( ImportSemaphoreSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24631 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24632 
operator =VULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24633     ImportSemaphoreSciSyncInfoNV & operator=( VkImportSemaphoreSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
24634     {
24635       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV const *>( &rhs );
24636       return *this;
24637     }
24638 
24639 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24640     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreSciSyncInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24641     {
24642       pNext = pNext_;
24643       return *this;
24644     }
24645 
setSemaphoreVULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24646     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreSciSyncInfoNV & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
24647     {
24648       semaphore = semaphore_;
24649       return *this;
24650     }
24651 
setHandleTypeVULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24652     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreSciSyncInfoNV & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
24653     {
24654       handleType = handleType_;
24655       return *this;
24656     }
24657 
setHandleVULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24658     VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreSciSyncInfoNV & setHandle( void * handle_ ) VULKAN_HPP_NOEXCEPT
24659     {
24660       handle = handle_;
24661       return *this;
24662     }
24663 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24664 
24665 
operator VkImportSemaphoreSciSyncInfoNV const&VULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24666     operator VkImportSemaphoreSciSyncInfoNV const &() const VULKAN_HPP_NOEXCEPT
24667     {
24668       return *reinterpret_cast<const VkImportSemaphoreSciSyncInfoNV*>( this );
24669     }
24670 
operator VkImportSemaphoreSciSyncInfoNV&VULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24671     operator VkImportSemaphoreSciSyncInfoNV &() VULKAN_HPP_NOEXCEPT
24672     {
24673       return *reinterpret_cast<VkImportSemaphoreSciSyncInfoNV*>( this );
24674     }
24675 
24676 #if defined( VULKAN_HPP_USE_REFLECT )
24677 #if 14 <= VULKAN_HPP_CPP_VERSION
24678     auto
24679 #else
24680     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &, void * const &>
24681 #endif
reflectVULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24682       reflect() const VULKAN_HPP_NOEXCEPT
24683     {
24684       return std::tie( sType, pNext, semaphore, handleType, handle );
24685     }
24686 #endif
24687 
24688 
24689 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
24690 auto operator<=>( ImportSemaphoreSciSyncInfoNV const & ) const = default;
24691 #else
operator ==VULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24692     bool operator==( ImportSemaphoreSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
24693     {
24694 #if defined( VULKAN_HPP_USE_REFLECT )
24695       return this->reflect() == rhs.reflect();
24696 #else
24697       return ( sType == rhs.sType )
24698           && ( pNext == rhs.pNext )
24699           && ( semaphore == rhs.semaphore )
24700           && ( handleType == rhs.handleType )
24701           && ( handle == rhs.handle );
24702 #endif
24703     }
24704 
operator !=VULKAN_HPP_NAMESPACE::ImportSemaphoreSciSyncInfoNV24705     bool operator!=( ImportSemaphoreSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
24706     {
24707       return !operator==( rhs );
24708     }
24709 #endif
24710 
24711     public:
24712     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreSciSyncInfoNV;
24713     const void * pNext = {};
24714     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
24715     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
24716     void * handle = {};
24717 
24718   };
24719 
24720   template <>
24721   struct CppType<StructureType, StructureType::eImportSemaphoreSciSyncInfoNV>
24722   {
24723     using Type = ImportSemaphoreSciSyncInfoNV;
24724   };
24725 #endif /*VK_USE_PLATFORM_SCI*/
24726 
24727   struct InputAttachmentAspectReference
24728   {
24729     using NativeType = VkInputAttachmentAspectReference;
24730 
24731 
24732 
24733 
24734 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InputAttachmentAspectReferenceVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24735 VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference(uint32_t subpass_ = {}, uint32_t inputAttachmentIndex_ = {}, VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}) VULKAN_HPP_NOEXCEPT
24736     : subpass( subpass_ ), inputAttachmentIndex( inputAttachmentIndex_ ), aspectMask( aspectMask_ )
24737     {}
24738 
24739     VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24740 
InputAttachmentAspectReferenceVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24741     InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
24742       : InputAttachmentAspectReference( *reinterpret_cast<InputAttachmentAspectReference const *>( &rhs ) )
24743     {}
24744 
24745 
24746     InputAttachmentAspectReference & operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24747 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24748 
operator =VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24749     InputAttachmentAspectReference & operator=( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT
24750     {
24751       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference const *>( &rhs );
24752       return *this;
24753     }
24754 
24755 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubpassVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24756     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT
24757     {
24758       subpass = subpass_;
24759       return *this;
24760     }
24761 
setInputAttachmentIndexVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24762     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT
24763     {
24764       inputAttachmentIndex = inputAttachmentIndex_;
24765       return *this;
24766     }
24767 
setAspectMaskVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24768     VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT
24769     {
24770       aspectMask = aspectMask_;
24771       return *this;
24772     }
24773 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24774 
24775 
operator VkInputAttachmentAspectReference const&VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24776     operator VkInputAttachmentAspectReference const &() const VULKAN_HPP_NOEXCEPT
24777     {
24778       return *reinterpret_cast<const VkInputAttachmentAspectReference*>( this );
24779     }
24780 
operator VkInputAttachmentAspectReference&VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24781     operator VkInputAttachmentAspectReference &() VULKAN_HPP_NOEXCEPT
24782     {
24783       return *reinterpret_cast<VkInputAttachmentAspectReference*>( this );
24784     }
24785 
24786 #if defined( VULKAN_HPP_USE_REFLECT )
24787 #if 14 <= VULKAN_HPP_CPP_VERSION
24788     auto
24789 #else
24790     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ImageAspectFlags const &>
24791 #endif
reflectVULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24792       reflect() const VULKAN_HPP_NOEXCEPT
24793     {
24794       return std::tie( subpass, inputAttachmentIndex, aspectMask );
24795     }
24796 #endif
24797 
24798 
24799 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
24800 auto operator<=>( InputAttachmentAspectReference const & ) const = default;
24801 #else
operator ==VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24802     bool operator==( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT
24803     {
24804 #if defined( VULKAN_HPP_USE_REFLECT )
24805       return this->reflect() == rhs.reflect();
24806 #else
24807       return ( subpass == rhs.subpass )
24808           && ( inputAttachmentIndex == rhs.inputAttachmentIndex )
24809           && ( aspectMask == rhs.aspectMask );
24810 #endif
24811     }
24812 
operator !=VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference24813     bool operator!=( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT
24814     {
24815       return !operator==( rhs );
24816     }
24817 #endif
24818 
24819     public:
24820     uint32_t subpass = {};
24821     uint32_t inputAttachmentIndex = {};
24822     VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {};
24823 
24824   };
24825   using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference;
24826 
24827   struct InstanceCreateInfo
24828   {
24829     using NativeType = VkInstanceCreateInfo;
24830 
24831     static const bool allowDuplicate = false;
24832     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eInstanceCreateInfo;
24833 
24834 
24835 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo24836 VULKAN_HPP_CONSTEXPR InstanceCreateInfo(VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ = {}, const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_ = {}, uint32_t enabledLayerCount_ = {}, const char * const * ppEnabledLayerNames_ = {}, uint32_t enabledExtensionCount_ = {}, const char * const * ppEnabledExtensionNames_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
24837     : pNext( pNext_ ), flags( flags_ ), pApplicationInfo( pApplicationInfo_ ), enabledLayerCount( enabledLayerCount_ ), ppEnabledLayerNames( ppEnabledLayerNames_ ), enabledExtensionCount( enabledExtensionCount_ ), ppEnabledExtensionNames( ppEnabledExtensionNames_ )
24838     {}
24839 
24840     VULKAN_HPP_CONSTEXPR InstanceCreateInfo( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24841 
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo24842     InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24843       : InstanceCreateInfo( *reinterpret_cast<InstanceCreateInfo const *>( &rhs ) )
24844     {}
24845 
24846 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
InstanceCreateInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo24847     InstanceCreateInfo( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_, const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ = {}, const void * pNext_ = nullptr )
24848     : pNext( pNext_ ), flags( flags_ ), pApplicationInfo( pApplicationInfo_ ), enabledLayerCount( static_cast<uint32_t>( pEnabledLayerNames_.size() ) ), ppEnabledLayerNames( pEnabledLayerNames_.data() ), enabledExtensionCount( static_cast<uint32_t>( pEnabledExtensionNames_.size() ) ), ppEnabledExtensionNames( pEnabledExtensionNames_.data() )
24849     {}
24850 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24851 
24852 
24853     InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
24854 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
24855 
operator =VULKAN_HPP_NAMESPACE::InstanceCreateInfo24856     InstanceCreateInfo & operator=( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
24857     {
24858       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::InstanceCreateInfo const *>( &rhs );
24859       return *this;
24860     }
24861 
24862 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::InstanceCreateInfo24863     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
24864     {
24865       pNext = pNext_;
24866       return *this;
24867     }
24868 
setFlagsVULKAN_HPP_NAMESPACE::InstanceCreateInfo24869     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
24870     {
24871       flags = flags_;
24872       return *this;
24873     }
24874 
setPApplicationInfoVULKAN_HPP_NAMESPACE::InstanceCreateInfo24875     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPApplicationInfo( const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo_ ) VULKAN_HPP_NOEXCEPT
24876     {
24877       pApplicationInfo = pApplicationInfo_;
24878       return *this;
24879     }
24880 
setEnabledLayerCountVULKAN_HPP_NAMESPACE::InstanceCreateInfo24881     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT
24882     {
24883       enabledLayerCount = enabledLayerCount_;
24884       return *this;
24885     }
24886 
setPpEnabledLayerNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo24887     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPpEnabledLayerNames( const char * const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
24888     {
24889       ppEnabledLayerNames = ppEnabledLayerNames_;
24890       return *this;
24891     }
24892 
24893 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPEnabledLayerNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo24894     InstanceCreateInfo & setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT
24895     {
24896       enabledLayerCount = static_cast<uint32_t>( pEnabledLayerNames_.size() );
24897       ppEnabledLayerNames = pEnabledLayerNames_.data();
24898       return *this;
24899     }
24900 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24901 
setEnabledExtensionCountVULKAN_HPP_NAMESPACE::InstanceCreateInfo24902     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT
24903     {
24904       enabledExtensionCount = enabledExtensionCount_;
24905       return *this;
24906     }
24907 
setPpEnabledExtensionNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo24908     VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPpEnabledExtensionNames( const char * const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
24909     {
24910       ppEnabledExtensionNames = ppEnabledExtensionNames_;
24911       return *this;
24912     }
24913 
24914 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPEnabledExtensionNamesVULKAN_HPP_NAMESPACE::InstanceCreateInfo24915     InstanceCreateInfo & setPEnabledExtensionNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const char * const> const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT
24916     {
24917       enabledExtensionCount = static_cast<uint32_t>( pEnabledExtensionNames_.size() );
24918       ppEnabledExtensionNames = pEnabledExtensionNames_.data();
24919       return *this;
24920     }
24921 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24922 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
24923 
24924 
operator VkInstanceCreateInfo const&VULKAN_HPP_NAMESPACE::InstanceCreateInfo24925     operator VkInstanceCreateInfo const &() const VULKAN_HPP_NOEXCEPT
24926     {
24927       return *reinterpret_cast<const VkInstanceCreateInfo*>( this );
24928     }
24929 
operator VkInstanceCreateInfo&VULKAN_HPP_NAMESPACE::InstanceCreateInfo24930     operator VkInstanceCreateInfo &() VULKAN_HPP_NOEXCEPT
24931     {
24932       return *reinterpret_cast<VkInstanceCreateInfo*>( this );
24933     }
24934 
24935 #if defined( VULKAN_HPP_USE_REFLECT )
24936 #if 14 <= VULKAN_HPP_CPP_VERSION
24937     auto
24938 #else
24939     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::InstanceCreateFlags const &, const VULKAN_HPP_NAMESPACE::ApplicationInfo * const &, uint32_t const &, const char * const * const &, uint32_t const &, const char * const * const &>
24940 #endif
reflectVULKAN_HPP_NAMESPACE::InstanceCreateInfo24941       reflect() const VULKAN_HPP_NOEXCEPT
24942     {
24943       return std::tie( sType, pNext, flags, pApplicationInfo, enabledLayerCount, ppEnabledLayerNames, enabledExtensionCount, ppEnabledExtensionNames );
24944     }
24945 #endif
24946 
24947 
24948 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::InstanceCreateInfo24949     std::strong_ordering operator<=>( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24950     {
24951       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
24952       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
24953       if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) return cmp;
24954       if ( auto cmp = pApplicationInfo <=> rhs.pApplicationInfo; cmp != 0 ) return cmp;
24955       if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 ) return cmp;
24956       for ( size_t i = 0; i < enabledLayerCount; ++i )
24957       {
24958         if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] )
24959           if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 )
24960             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
24961       }
24962       if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 ) return cmp;
24963       for ( size_t i = 0; i < enabledExtensionCount; ++i )
24964       {
24965         if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] )
24966           if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 )
24967             return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater;
24968       }
24969 
24970       return std::strong_ordering::equivalent;
24971     }
24972 #endif
24973 
operator ==VULKAN_HPP_NAMESPACE::InstanceCreateInfo24974     bool operator==( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24975     {
24976       return ( sType == rhs.sType )
24977           && ( pNext == rhs.pNext )
24978           && ( flags == rhs.flags )
24979           && ( pApplicationInfo == rhs.pApplicationInfo )
24980           && ( enabledLayerCount == rhs.enabledLayerCount )
24981           && std::equal( ppEnabledLayerNames, ppEnabledLayerNames + enabledLayerCount, rhs.ppEnabledLayerNames, []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } )
24982           && ( enabledExtensionCount == rhs.enabledExtensionCount )
24983           && std::equal( ppEnabledExtensionNames, ppEnabledExtensionNames + enabledExtensionCount, rhs.ppEnabledExtensionNames, []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } );
24984     }
24985 
operator !=VULKAN_HPP_NAMESPACE::InstanceCreateInfo24986     bool operator!=( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
24987     {
24988       return !operator==( rhs );
24989     }
24990 
24991     public:
24992     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInstanceCreateInfo;
24993     const void * pNext = {};
24994     VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags = {};
24995     const VULKAN_HPP_NAMESPACE::ApplicationInfo * pApplicationInfo = {};
24996     uint32_t enabledLayerCount = {};
24997     const char * const * ppEnabledLayerNames = {};
24998     uint32_t enabledExtensionCount = {};
24999     const char * const * ppEnabledExtensionNames = {};
25000 
25001   };
25002 
25003   template <>
25004   struct CppType<StructureType, StructureType::eInstanceCreateInfo>
25005   {
25006     using Type = InstanceCreateInfo;
25007   };
25008 
25009   struct LayerProperties
25010   {
25011     using NativeType = VkLayerProperties;
25012 
25013 
25014 
25015 
25016 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties25017 VULKAN_HPP_CONSTEXPR_14 LayerProperties(std::array<char,VK_MAX_EXTENSION_NAME_SIZE> const & layerName_ = {}, uint32_t specVersion_ = {}, uint32_t implementationVersion_ = {}, std::array<char,VK_MAX_DESCRIPTION_SIZE> const & description_ = {}) VULKAN_HPP_NOEXCEPT
25018     : layerName( layerName_ ), specVersion( specVersion_ ), implementationVersion( implementationVersion_ ), description( description_ )
25019     {}
25020 
25021     VULKAN_HPP_CONSTEXPR_14 LayerProperties( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25022 
LayerPropertiesVULKAN_HPP_NAMESPACE::LayerProperties25023     LayerProperties( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
25024       : LayerProperties( *reinterpret_cast<LayerProperties const *>( &rhs ) )
25025     {}
25026 
25027 
25028     LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25029 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25030 
operator =VULKAN_HPP_NAMESPACE::LayerProperties25031     LayerProperties & operator=( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT
25032     {
25033       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::LayerProperties const *>( &rhs );
25034       return *this;
25035     }
25036 
25037 
operator VkLayerProperties const&VULKAN_HPP_NAMESPACE::LayerProperties25038     operator VkLayerProperties const &() const VULKAN_HPP_NOEXCEPT
25039     {
25040       return *reinterpret_cast<const VkLayerProperties*>( this );
25041     }
25042 
operator VkLayerProperties&VULKAN_HPP_NAMESPACE::LayerProperties25043     operator VkLayerProperties &() VULKAN_HPP_NOEXCEPT
25044     {
25045       return *reinterpret_cast<VkLayerProperties*>( this );
25046     }
25047 
25048 #if defined( VULKAN_HPP_USE_REFLECT )
25049 #if 14 <= VULKAN_HPP_CPP_VERSION
25050     auto
25051 #else
25052     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &>
25053 #endif
reflectVULKAN_HPP_NAMESPACE::LayerProperties25054       reflect() const VULKAN_HPP_NOEXCEPT
25055     {
25056       return std::tie( layerName, specVersion, implementationVersion, description );
25057     }
25058 #endif
25059 
25060 
25061 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25062 auto operator<=>( LayerProperties const & ) const = default;
25063 #else
operator ==VULKAN_HPP_NAMESPACE::LayerProperties25064     bool operator==( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
25065     {
25066 #if defined( VULKAN_HPP_USE_REFLECT )
25067       return this->reflect() == rhs.reflect();
25068 #else
25069       return ( layerName == rhs.layerName )
25070           && ( specVersion == rhs.specVersion )
25071           && ( implementationVersion == rhs.implementationVersion )
25072           && ( description == rhs.description );
25073 #endif
25074     }
25075 
operator !=VULKAN_HPP_NAMESPACE::LayerProperties25076     bool operator!=( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
25077     {
25078       return !operator==( rhs );
25079     }
25080 #endif
25081 
25082     public:
25083     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> layerName = {};
25084     uint32_t specVersion = {};
25085     uint32_t implementationVersion = {};
25086     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
25087 
25088   };
25089 
25090   struct MappedMemoryRange
25091   {
25092     using NativeType = VkMappedMemoryRange;
25093 
25094     static const bool allowDuplicate = false;
25095     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMappedMemoryRange;
25096 
25097 
25098 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MappedMemoryRangeVULKAN_HPP_NAMESPACE::MappedMemoryRange25099 VULKAN_HPP_CONSTEXPR MappedMemoryRange(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25100     : pNext( pNext_ ), memory( memory_ ), offset( offset_ ), size( size_ )
25101     {}
25102 
25103     VULKAN_HPP_CONSTEXPR MappedMemoryRange( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25104 
MappedMemoryRangeVULKAN_HPP_NAMESPACE::MappedMemoryRange25105     MappedMemoryRange( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
25106       : MappedMemoryRange( *reinterpret_cast<MappedMemoryRange const *>( &rhs ) )
25107     {}
25108 
25109 
25110     MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25111 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25112 
operator =VULKAN_HPP_NAMESPACE::MappedMemoryRange25113     MappedMemoryRange & operator=( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT
25114     {
25115       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MappedMemoryRange const *>( &rhs );
25116       return *this;
25117     }
25118 
25119 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MappedMemoryRange25120     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25121     {
25122       pNext = pNext_;
25123       return *this;
25124     }
25125 
setMemoryVULKAN_HPP_NAMESPACE::MappedMemoryRange25126     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
25127     {
25128       memory = memory_;
25129       return *this;
25130     }
25131 
setOffsetVULKAN_HPP_NAMESPACE::MappedMemoryRange25132     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT
25133     {
25134       offset = offset_;
25135       return *this;
25136     }
25137 
setSizeVULKAN_HPP_NAMESPACE::MappedMemoryRange25138     VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT
25139     {
25140       size = size_;
25141       return *this;
25142     }
25143 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25144 
25145 
operator VkMappedMemoryRange const&VULKAN_HPP_NAMESPACE::MappedMemoryRange25146     operator VkMappedMemoryRange const &() const VULKAN_HPP_NOEXCEPT
25147     {
25148       return *reinterpret_cast<const VkMappedMemoryRange*>( this );
25149     }
25150 
operator VkMappedMemoryRange&VULKAN_HPP_NAMESPACE::MappedMemoryRange25151     operator VkMappedMemoryRange &() VULKAN_HPP_NOEXCEPT
25152     {
25153       return *reinterpret_cast<VkMappedMemoryRange*>( this );
25154     }
25155 
25156 #if defined( VULKAN_HPP_USE_REFLECT )
25157 #if 14 <= VULKAN_HPP_CPP_VERSION
25158     auto
25159 #else
25160     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
25161 #endif
reflectVULKAN_HPP_NAMESPACE::MappedMemoryRange25162       reflect() const VULKAN_HPP_NOEXCEPT
25163     {
25164       return std::tie( sType, pNext, memory, offset, size );
25165     }
25166 #endif
25167 
25168 
25169 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25170 auto operator<=>( MappedMemoryRange const & ) const = default;
25171 #else
operator ==VULKAN_HPP_NAMESPACE::MappedMemoryRange25172     bool operator==( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT
25173     {
25174 #if defined( VULKAN_HPP_USE_REFLECT )
25175       return this->reflect() == rhs.reflect();
25176 #else
25177       return ( sType == rhs.sType )
25178           && ( pNext == rhs.pNext )
25179           && ( memory == rhs.memory )
25180           && ( offset == rhs.offset )
25181           && ( size == rhs.size );
25182 #endif
25183     }
25184 
operator !=VULKAN_HPP_NAMESPACE::MappedMemoryRange25185     bool operator!=( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT
25186     {
25187       return !operator==( rhs );
25188     }
25189 #endif
25190 
25191     public:
25192     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMappedMemoryRange;
25193     const void * pNext = {};
25194     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
25195     VULKAN_HPP_NAMESPACE::DeviceSize offset = {};
25196     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
25197 
25198   };
25199 
25200   template <>
25201   struct CppType<StructureType, StructureType::eMappedMemoryRange>
25202   {
25203     using Type = MappedMemoryRange;
25204   };
25205 
25206   struct MemoryAllocateFlagsInfo
25207   {
25208     using NativeType = VkMemoryAllocateFlagsInfo;
25209 
25210     static const bool allowDuplicate = false;
25211     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryAllocateFlagsInfo;
25212 
25213 
25214 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryAllocateFlagsInfoVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25215 VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo(VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ = {}, uint32_t deviceMask_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25216     : pNext( pNext_ ), flags( flags_ ), deviceMask( deviceMask_ )
25217     {}
25218 
25219     VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25220 
MemoryAllocateFlagsInfoVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25221     MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25222       : MemoryAllocateFlagsInfo( *reinterpret_cast<MemoryAllocateFlagsInfo const *>( &rhs ) )
25223     {}
25224 
25225 
25226     MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25227 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25228 
operator =VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25229     MemoryAllocateFlagsInfo & operator=( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25230     {
25231       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo const *>( &rhs );
25232       return *this;
25233     }
25234 
25235 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25236     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25237     {
25238       pNext = pNext_;
25239       return *this;
25240     }
25241 
setFlagsVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25242     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setFlags( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ ) VULKAN_HPP_NOEXCEPT
25243     {
25244       flags = flags_;
25245       return *this;
25246     }
25247 
setDeviceMaskVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25248     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT
25249     {
25250       deviceMask = deviceMask_;
25251       return *this;
25252     }
25253 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25254 
25255 
operator VkMemoryAllocateFlagsInfo const&VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25256     operator VkMemoryAllocateFlagsInfo const &() const VULKAN_HPP_NOEXCEPT
25257     {
25258       return *reinterpret_cast<const VkMemoryAllocateFlagsInfo*>( this );
25259     }
25260 
operator VkMemoryAllocateFlagsInfo&VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25261     operator VkMemoryAllocateFlagsInfo &() VULKAN_HPP_NOEXCEPT
25262     {
25263       return *reinterpret_cast<VkMemoryAllocateFlagsInfo*>( this );
25264     }
25265 
25266 #if defined( VULKAN_HPP_USE_REFLECT )
25267 #if 14 <= VULKAN_HPP_CPP_VERSION
25268     auto
25269 #else
25270     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::MemoryAllocateFlags const &, uint32_t const &>
25271 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25272       reflect() const VULKAN_HPP_NOEXCEPT
25273     {
25274       return std::tie( sType, pNext, flags, deviceMask );
25275     }
25276 #endif
25277 
25278 
25279 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25280 auto operator<=>( MemoryAllocateFlagsInfo const & ) const = default;
25281 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25282     bool operator==( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25283     {
25284 #if defined( VULKAN_HPP_USE_REFLECT )
25285       return this->reflect() == rhs.reflect();
25286 #else
25287       return ( sType == rhs.sType )
25288           && ( pNext == rhs.pNext )
25289           && ( flags == rhs.flags )
25290           && ( deviceMask == rhs.deviceMask );
25291 #endif
25292     }
25293 
operator !=VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo25294     bool operator!=( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25295     {
25296       return !operator==( rhs );
25297     }
25298 #endif
25299 
25300     public:
25301     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateFlagsInfo;
25302     const void * pNext = {};
25303     VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags = {};
25304     uint32_t deviceMask = {};
25305 
25306   };
25307 
25308   template <>
25309   struct CppType<StructureType, StructureType::eMemoryAllocateFlagsInfo>
25310   {
25311     using Type = MemoryAllocateFlagsInfo;
25312   };
25313   using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo;
25314 
25315   struct MemoryAllocateInfo
25316   {
25317     using NativeType = VkMemoryAllocateInfo;
25318 
25319     static const bool allowDuplicate = false;
25320     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryAllocateInfo;
25321 
25322 
25323 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryAllocateInfoVULKAN_HPP_NAMESPACE::MemoryAllocateInfo25324 VULKAN_HPP_CONSTEXPR MemoryAllocateInfo(VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {}, uint32_t memoryTypeIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25325     : pNext( pNext_ ), allocationSize( allocationSize_ ), memoryTypeIndex( memoryTypeIndex_ )
25326     {}
25327 
25328     VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25329 
MemoryAllocateInfoVULKAN_HPP_NAMESPACE::MemoryAllocateInfo25330     MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25331       : MemoryAllocateInfo( *reinterpret_cast<MemoryAllocateInfo const *>( &rhs ) )
25332     {}
25333 
25334 
25335     MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25336 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25337 
operator =VULKAN_HPP_NAMESPACE::MemoryAllocateInfo25338     MemoryAllocateInfo & operator=( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25339     {
25340       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const *>( &rhs );
25341       return *this;
25342     }
25343 
25344 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryAllocateInfo25345     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25346     {
25347       pNext = pNext_;
25348       return *this;
25349     }
25350 
setAllocationSizeVULKAN_HPP_NAMESPACE::MemoryAllocateInfo25351     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setAllocationSize( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ ) VULKAN_HPP_NOEXCEPT
25352     {
25353       allocationSize = allocationSize_;
25354       return *this;
25355     }
25356 
setMemoryTypeIndexVULKAN_HPP_NAMESPACE::MemoryAllocateInfo25357     VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) VULKAN_HPP_NOEXCEPT
25358     {
25359       memoryTypeIndex = memoryTypeIndex_;
25360       return *this;
25361     }
25362 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25363 
25364 
operator VkMemoryAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryAllocateInfo25365     operator VkMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
25366     {
25367       return *reinterpret_cast<const VkMemoryAllocateInfo*>( this );
25368     }
25369 
operator VkMemoryAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryAllocateInfo25370     operator VkMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT
25371     {
25372       return *reinterpret_cast<VkMemoryAllocateInfo*>( this );
25373     }
25374 
25375 #if defined( VULKAN_HPP_USE_REFLECT )
25376 #if 14 <= VULKAN_HPP_CPP_VERSION
25377     auto
25378 #else
25379     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
25380 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryAllocateInfo25381       reflect() const VULKAN_HPP_NOEXCEPT
25382     {
25383       return std::tie( sType, pNext, allocationSize, memoryTypeIndex );
25384     }
25385 #endif
25386 
25387 
25388 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25389 auto operator<=>( MemoryAllocateInfo const & ) const = default;
25390 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryAllocateInfo25391     bool operator==( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25392     {
25393 #if defined( VULKAN_HPP_USE_REFLECT )
25394       return this->reflect() == rhs.reflect();
25395 #else
25396       return ( sType == rhs.sType )
25397           && ( pNext == rhs.pNext )
25398           && ( allocationSize == rhs.allocationSize )
25399           && ( memoryTypeIndex == rhs.memoryTypeIndex );
25400 #endif
25401     }
25402 
operator !=VULKAN_HPP_NAMESPACE::MemoryAllocateInfo25403     bool operator!=( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25404     {
25405       return !operator==( rhs );
25406     }
25407 #endif
25408 
25409     public:
25410     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateInfo;
25411     const void * pNext = {};
25412     VULKAN_HPP_NAMESPACE::DeviceSize allocationSize = {};
25413     uint32_t memoryTypeIndex = {};
25414 
25415   };
25416 
25417   template <>
25418   struct CppType<StructureType, StructureType::eMemoryAllocateInfo>
25419   {
25420     using Type = MemoryAllocateInfo;
25421   };
25422 
25423   struct MemoryBarrier
25424   {
25425     using NativeType = VkMemoryBarrier;
25426 
25427     static const bool allowDuplicate = false;
25428     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrier;
25429 
25430 
25431 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryBarrierVULKAN_HPP_NAMESPACE::MemoryBarrier25432 VULKAN_HPP_CONSTEXPR MemoryBarrier(VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25433     : pNext( pNext_ ), srcAccessMask( srcAccessMask_ ), dstAccessMask( dstAccessMask_ )
25434     {}
25435 
25436     VULKAN_HPP_CONSTEXPR MemoryBarrier( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25437 
MemoryBarrierVULKAN_HPP_NAMESPACE::MemoryBarrier25438     MemoryBarrier( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
25439       : MemoryBarrier( *reinterpret_cast<MemoryBarrier const *>( &rhs ) )
25440     {}
25441 
25442 
25443     MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25444 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25445 
operator =VULKAN_HPP_NAMESPACE::MemoryBarrier25446     MemoryBarrier & operator=( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT
25447     {
25448       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryBarrier const *>( &rhs );
25449       return *this;
25450     }
25451 
25452 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryBarrier25453     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25454     {
25455       pNext = pNext_;
25456       return *this;
25457     }
25458 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier25459     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
25460     {
25461       srcAccessMask = srcAccessMask_;
25462       return *this;
25463     }
25464 
setDstAccessMaskVULKAN_HPP_NAMESPACE::MemoryBarrier25465     VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
25466     {
25467       dstAccessMask = dstAccessMask_;
25468       return *this;
25469     }
25470 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25471 
25472 
operator VkMemoryBarrier const&VULKAN_HPP_NAMESPACE::MemoryBarrier25473     operator VkMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT
25474     {
25475       return *reinterpret_cast<const VkMemoryBarrier*>( this );
25476     }
25477 
operator VkMemoryBarrier&VULKAN_HPP_NAMESPACE::MemoryBarrier25478     operator VkMemoryBarrier &() VULKAN_HPP_NOEXCEPT
25479     {
25480       return *reinterpret_cast<VkMemoryBarrier*>( this );
25481     }
25482 
25483 #if defined( VULKAN_HPP_USE_REFLECT )
25484 #if 14 <= VULKAN_HPP_CPP_VERSION
25485     auto
25486 #else
25487     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, VULKAN_HPP_NAMESPACE::AccessFlags const &>
25488 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryBarrier25489       reflect() const VULKAN_HPP_NOEXCEPT
25490     {
25491       return std::tie( sType, pNext, srcAccessMask, dstAccessMask );
25492     }
25493 #endif
25494 
25495 
25496 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25497 auto operator<=>( MemoryBarrier const & ) const = default;
25498 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryBarrier25499     bool operator==( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
25500     {
25501 #if defined( VULKAN_HPP_USE_REFLECT )
25502       return this->reflect() == rhs.reflect();
25503 #else
25504       return ( sType == rhs.sType )
25505           && ( pNext == rhs.pNext )
25506           && ( srcAccessMask == rhs.srcAccessMask )
25507           && ( dstAccessMask == rhs.dstAccessMask );
25508 #endif
25509     }
25510 
operator !=VULKAN_HPP_NAMESPACE::MemoryBarrier25511     bool operator!=( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT
25512     {
25513       return !operator==( rhs );
25514     }
25515 #endif
25516 
25517     public:
25518     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryBarrier;
25519     const void * pNext = {};
25520     VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {};
25521     VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {};
25522 
25523   };
25524 
25525   template <>
25526   struct CppType<StructureType, StructureType::eMemoryBarrier>
25527   {
25528     using Type = MemoryBarrier;
25529   };
25530 
25531   struct MemoryDedicatedAllocateInfo
25532   {
25533     using NativeType = VkMemoryDedicatedAllocateInfo;
25534 
25535     static const bool allowDuplicate = false;
25536     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedAllocateInfo;
25537 
25538 
25539 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryDedicatedAllocateInfoVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25540 VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo(VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25541     : pNext( pNext_ ), image( image_ ), buffer( buffer_ )
25542     {}
25543 
25544     VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25545 
MemoryDedicatedAllocateInfoVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25546     MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25547       : MemoryDedicatedAllocateInfo( *reinterpret_cast<MemoryDedicatedAllocateInfo const *>( &rhs ) )
25548     {}
25549 
25550 
25551     MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25552 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25553 
operator =VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25554     MemoryDedicatedAllocateInfo & operator=( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
25555     {
25556       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo const *>( &rhs );
25557       return *this;
25558     }
25559 
25560 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25561     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25562     {
25563       pNext = pNext_;
25564       return *this;
25565     }
25566 
setImageVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25567     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT
25568     {
25569       image = image_;
25570       return *this;
25571     }
25572 
setBufferVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25573     VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT
25574     {
25575       buffer = buffer_;
25576       return *this;
25577     }
25578 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25579 
25580 
operator VkMemoryDedicatedAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25581     operator VkMemoryDedicatedAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
25582     {
25583       return *reinterpret_cast<const VkMemoryDedicatedAllocateInfo*>( this );
25584     }
25585 
operator VkMemoryDedicatedAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25586     operator VkMemoryDedicatedAllocateInfo &() VULKAN_HPP_NOEXCEPT
25587     {
25588       return *reinterpret_cast<VkMemoryDedicatedAllocateInfo*>( this );
25589     }
25590 
25591 #if defined( VULKAN_HPP_USE_REFLECT )
25592 #if 14 <= VULKAN_HPP_CPP_VERSION
25593     auto
25594 #else
25595     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::Buffer const &>
25596 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25597       reflect() const VULKAN_HPP_NOEXCEPT
25598     {
25599       return std::tie( sType, pNext, image, buffer );
25600     }
25601 #endif
25602 
25603 
25604 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25605 auto operator<=>( MemoryDedicatedAllocateInfo const & ) const = default;
25606 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25607     bool operator==( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25608     {
25609 #if defined( VULKAN_HPP_USE_REFLECT )
25610       return this->reflect() == rhs.reflect();
25611 #else
25612       return ( sType == rhs.sType )
25613           && ( pNext == rhs.pNext )
25614           && ( image == rhs.image )
25615           && ( buffer == rhs.buffer );
25616 #endif
25617     }
25618 
operator !=VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo25619     bool operator!=( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
25620     {
25621       return !operator==( rhs );
25622     }
25623 #endif
25624 
25625     public:
25626     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedAllocateInfo;
25627     const void * pNext = {};
25628     VULKAN_HPP_NAMESPACE::Image image = {};
25629     VULKAN_HPP_NAMESPACE::Buffer buffer = {};
25630 
25631   };
25632 
25633   template <>
25634   struct CppType<StructureType, StructureType::eMemoryDedicatedAllocateInfo>
25635   {
25636     using Type = MemoryDedicatedAllocateInfo;
25637   };
25638   using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo;
25639 
25640   struct MemoryDedicatedRequirements
25641   {
25642     using NativeType = VkMemoryDedicatedRequirements;
25643 
25644     static const bool allowDuplicate = false;
25645     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedRequirements;
25646 
25647 
25648 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryDedicatedRequirementsVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements25649 VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements(VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation_ = {}, VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25650     : pNext( pNext_ ), prefersDedicatedAllocation( prefersDedicatedAllocation_ ), requiresDedicatedAllocation( requiresDedicatedAllocation_ )
25651     {}
25652 
25653     VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25654 
MemoryDedicatedRequirementsVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements25655     MemoryDedicatedRequirements( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
25656       : MemoryDedicatedRequirements( *reinterpret_cast<MemoryDedicatedRequirements const *>( &rhs ) )
25657     {}
25658 
25659 
25660     MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25661 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25662 
operator =VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements25663     MemoryDedicatedRequirements & operator=( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
25664     {
25665       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements const *>( &rhs );
25666       return *this;
25667     }
25668 
25669 
operator VkMemoryDedicatedRequirements const&VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements25670     operator VkMemoryDedicatedRequirements const &() const VULKAN_HPP_NOEXCEPT
25671     {
25672       return *reinterpret_cast<const VkMemoryDedicatedRequirements*>( this );
25673     }
25674 
operator VkMemoryDedicatedRequirements&VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements25675     operator VkMemoryDedicatedRequirements &() VULKAN_HPP_NOEXCEPT
25676     {
25677       return *reinterpret_cast<VkMemoryDedicatedRequirements*>( this );
25678     }
25679 
25680 #if defined( VULKAN_HPP_USE_REFLECT )
25681 #if 14 <= VULKAN_HPP_CPP_VERSION
25682     auto
25683 #else
25684     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
25685 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements25686       reflect() const VULKAN_HPP_NOEXCEPT
25687     {
25688       return std::tie( sType, pNext, prefersDedicatedAllocation, requiresDedicatedAllocation );
25689     }
25690 #endif
25691 
25692 
25693 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25694 auto operator<=>( MemoryDedicatedRequirements const & ) const = default;
25695 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements25696     bool operator==( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
25697     {
25698 #if defined( VULKAN_HPP_USE_REFLECT )
25699       return this->reflect() == rhs.reflect();
25700 #else
25701       return ( sType == rhs.sType )
25702           && ( pNext == rhs.pNext )
25703           && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
25704           && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
25705 #endif
25706     }
25707 
operator !=VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements25708     bool operator!=( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
25709     {
25710       return !operator==( rhs );
25711     }
25712 #endif
25713 
25714     public:
25715     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedRequirements;
25716     void * pNext = {};
25717     VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation = {};
25718     VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation = {};
25719 
25720   };
25721 
25722   template <>
25723   struct CppType<StructureType, StructureType::eMemoryDedicatedRequirements>
25724   {
25725     using Type = MemoryDedicatedRequirements;
25726   };
25727   using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements;
25728 
25729   struct MemoryFdPropertiesKHR
25730   {
25731     using NativeType = VkMemoryFdPropertiesKHR;
25732 
25733     static const bool allowDuplicate = false;
25734     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryFdPropertiesKHR;
25735 
25736 
25737 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryFdPropertiesKHRVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR25738 VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR(uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25739     : pNext( pNext_ ), memoryTypeBits( memoryTypeBits_ )
25740     {}
25741 
25742     VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25743 
MemoryFdPropertiesKHRVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR25744     MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25745       : MemoryFdPropertiesKHR( *reinterpret_cast<MemoryFdPropertiesKHR const *>( &rhs ) )
25746     {}
25747 
25748 
25749     MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25750 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25751 
operator =VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR25752     MemoryFdPropertiesKHR & operator=( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25753     {
25754       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR const *>( &rhs );
25755       return *this;
25756     }
25757 
25758 
operator VkMemoryFdPropertiesKHR const&VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR25759     operator VkMemoryFdPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
25760     {
25761       return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>( this );
25762     }
25763 
operator VkMemoryFdPropertiesKHR&VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR25764     operator VkMemoryFdPropertiesKHR &() VULKAN_HPP_NOEXCEPT
25765     {
25766       return *reinterpret_cast<VkMemoryFdPropertiesKHR*>( this );
25767     }
25768 
25769 #if defined( VULKAN_HPP_USE_REFLECT )
25770 #if 14 <= VULKAN_HPP_CPP_VERSION
25771     auto
25772 #else
25773     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
25774 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR25775       reflect() const VULKAN_HPP_NOEXCEPT
25776     {
25777       return std::tie( sType, pNext, memoryTypeBits );
25778     }
25779 #endif
25780 
25781 
25782 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25783 auto operator<=>( MemoryFdPropertiesKHR const & ) const = default;
25784 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR25785     bool operator==( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25786     {
25787 #if defined( VULKAN_HPP_USE_REFLECT )
25788       return this->reflect() == rhs.reflect();
25789 #else
25790       return ( sType == rhs.sType )
25791           && ( pNext == rhs.pNext )
25792           && ( memoryTypeBits == rhs.memoryTypeBits );
25793 #endif
25794     }
25795 
operator !=VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR25796     bool operator!=( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25797     {
25798       return !operator==( rhs );
25799     }
25800 #endif
25801 
25802     public:
25803     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryFdPropertiesKHR;
25804     void * pNext = {};
25805     uint32_t memoryTypeBits = {};
25806 
25807   };
25808 
25809   template <>
25810   struct CppType<StructureType, StructureType::eMemoryFdPropertiesKHR>
25811   {
25812     using Type = MemoryFdPropertiesKHR;
25813   };
25814 
25815   struct MemoryGetFdInfoKHR
25816   {
25817     using NativeType = VkMemoryGetFdInfoKHR;
25818 
25819     static const bool allowDuplicate = false;
25820     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetFdInfoKHR;
25821 
25822 
25823 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetFdInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25824 VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25825     : pNext( pNext_ ), memory( memory_ ), handleType( handleType_ )
25826     {}
25827 
25828     VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25829 
MemoryGetFdInfoKHRVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25830     MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25831       : MemoryGetFdInfoKHR( *reinterpret_cast<MemoryGetFdInfoKHR const *>( &rhs ) )
25832     {}
25833 
25834 
25835     MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25836 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25837 
operator =VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25838     MemoryGetFdInfoKHR & operator=( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
25839     {
25840       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR const *>( &rhs );
25841       return *this;
25842     }
25843 
25844 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25845     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25846     {
25847       pNext = pNext_;
25848       return *this;
25849     }
25850 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25851     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
25852     {
25853       memory = memory_;
25854       return *this;
25855     }
25856 
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25857     VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
25858     {
25859       handleType = handleType_;
25860       return *this;
25861     }
25862 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25863 
25864 
operator VkMemoryGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25865     operator VkMemoryGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
25866     {
25867       return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>( this );
25868     }
25869 
operator VkMemoryGetFdInfoKHR&VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25870     operator VkMemoryGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
25871     {
25872       return *reinterpret_cast<VkMemoryGetFdInfoKHR*>( this );
25873     }
25874 
25875 #if defined( VULKAN_HPP_USE_REFLECT )
25876 #if 14 <= VULKAN_HPP_CPP_VERSION
25877     auto
25878 #else
25879     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
25880 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25881       reflect() const VULKAN_HPP_NOEXCEPT
25882     {
25883       return std::tie( sType, pNext, memory, handleType );
25884     }
25885 #endif
25886 
25887 
25888 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25889 auto operator<=>( MemoryGetFdInfoKHR const & ) const = default;
25890 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25891     bool operator==( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25892     {
25893 #if defined( VULKAN_HPP_USE_REFLECT )
25894       return this->reflect() == rhs.reflect();
25895 #else
25896       return ( sType == rhs.sType )
25897           && ( pNext == rhs.pNext )
25898           && ( memory == rhs.memory )
25899           && ( handleType == rhs.handleType );
25900 #endif
25901     }
25902 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR25903     bool operator!=( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
25904     {
25905       return !operator==( rhs );
25906     }
25907 #endif
25908 
25909     public:
25910     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetFdInfoKHR;
25911     const void * pNext = {};
25912     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
25913     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
25914 
25915   };
25916 
25917   template <>
25918   struct CppType<StructureType, StructureType::eMemoryGetFdInfoKHR>
25919   {
25920     using Type = MemoryGetFdInfoKHR;
25921   };
25922 
25923 #if defined( VK_USE_PLATFORM_SCI )
25924   struct MemoryGetSciBufInfoNV
25925   {
25926     using NativeType = VkMemoryGetSciBufInfoNV;
25927 
25928     static const bool allowDuplicate = false;
25929     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetSciBufInfoNV;
25930 
25931 
25932 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryGetSciBufInfoNVVULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25933 VULKAN_HPP_CONSTEXPR MemoryGetSciBufInfoNV(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
25934     : pNext( pNext_ ), memory( memory_ ), handleType( handleType_ )
25935     {}
25936 
25937     VULKAN_HPP_CONSTEXPR MemoryGetSciBufInfoNV( MemoryGetSciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25938 
MemoryGetSciBufInfoNVVULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25939     MemoryGetSciBufInfoNV( VkMemoryGetSciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
25940       : MemoryGetSciBufInfoNV( *reinterpret_cast<MemoryGetSciBufInfoNV const *>( &rhs ) )
25941     {}
25942 
25943 
25944     MemoryGetSciBufInfoNV & operator=( MemoryGetSciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
25945 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
25946 
operator =VULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25947     MemoryGetSciBufInfoNV & operator=( VkMemoryGetSciBufInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
25948     {
25949       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV const *>( &rhs );
25950       return *this;
25951     }
25952 
25953 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25954     VULKAN_HPP_CONSTEXPR_14 MemoryGetSciBufInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
25955     {
25956       pNext = pNext_;
25957       return *this;
25958     }
25959 
setMemoryVULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25960     VULKAN_HPP_CONSTEXPR_14 MemoryGetSciBufInfoNV & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT
25961     {
25962       memory = memory_;
25963       return *this;
25964     }
25965 
setHandleTypeVULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25966     VULKAN_HPP_CONSTEXPR_14 MemoryGetSciBufInfoNV & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
25967     {
25968       handleType = handleType_;
25969       return *this;
25970     }
25971 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
25972 
25973 
operator VkMemoryGetSciBufInfoNV const&VULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25974     operator VkMemoryGetSciBufInfoNV const &() const VULKAN_HPP_NOEXCEPT
25975     {
25976       return *reinterpret_cast<const VkMemoryGetSciBufInfoNV*>( this );
25977     }
25978 
operator VkMemoryGetSciBufInfoNV&VULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25979     operator VkMemoryGetSciBufInfoNV &() VULKAN_HPP_NOEXCEPT
25980     {
25981       return *reinterpret_cast<VkMemoryGetSciBufInfoNV*>( this );
25982     }
25983 
25984 #if defined( VULKAN_HPP_USE_REFLECT )
25985 #if 14 <= VULKAN_HPP_CPP_VERSION
25986     auto
25987 #else
25988     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DeviceMemory const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
25989 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV25990       reflect() const VULKAN_HPP_NOEXCEPT
25991     {
25992       return std::tie( sType, pNext, memory, handleType );
25993     }
25994 #endif
25995 
25996 
25997 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
25998 auto operator<=>( MemoryGetSciBufInfoNV const & ) const = default;
25999 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV26000     bool operator==( MemoryGetSciBufInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
26001     {
26002 #if defined( VULKAN_HPP_USE_REFLECT )
26003       return this->reflect() == rhs.reflect();
26004 #else
26005       return ( sType == rhs.sType )
26006           && ( pNext == rhs.pNext )
26007           && ( memory == rhs.memory )
26008           && ( handleType == rhs.handleType );
26009 #endif
26010     }
26011 
operator !=VULKAN_HPP_NAMESPACE::MemoryGetSciBufInfoNV26012     bool operator!=( MemoryGetSciBufInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
26013     {
26014       return !operator==( rhs );
26015     }
26016 #endif
26017 
26018     public:
26019     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetSciBufInfoNV;
26020     const void * pNext = {};
26021     VULKAN_HPP_NAMESPACE::DeviceMemory memory = {};
26022     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
26023 
26024   };
26025 
26026   template <>
26027   struct CppType<StructureType, StructureType::eMemoryGetSciBufInfoNV>
26028   {
26029     using Type = MemoryGetSciBufInfoNV;
26030   };
26031 #endif /*VK_USE_PLATFORM_SCI*/
26032 
26033   struct MemoryHeap
26034   {
26035     using NativeType = VkMemoryHeap;
26036 
26037 
26038 
26039 
26040 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryHeapVULKAN_HPP_NAMESPACE::MemoryHeap26041 VULKAN_HPP_CONSTEXPR MemoryHeap(VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags_ = {}) VULKAN_HPP_NOEXCEPT
26042     : size( size_ ), flags( flags_ )
26043     {}
26044 
26045     VULKAN_HPP_CONSTEXPR MemoryHeap( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26046 
MemoryHeapVULKAN_HPP_NAMESPACE::MemoryHeap26047     MemoryHeap( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
26048       : MemoryHeap( *reinterpret_cast<MemoryHeap const *>( &rhs ) )
26049     {}
26050 
26051 
26052     MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26053 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26054 
operator =VULKAN_HPP_NAMESPACE::MemoryHeap26055     MemoryHeap & operator=( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT
26056     {
26057       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHeap const *>( &rhs );
26058       return *this;
26059     }
26060 
26061 
operator VkMemoryHeap const&VULKAN_HPP_NAMESPACE::MemoryHeap26062     operator VkMemoryHeap const &() const VULKAN_HPP_NOEXCEPT
26063     {
26064       return *reinterpret_cast<const VkMemoryHeap*>( this );
26065     }
26066 
operator VkMemoryHeap&VULKAN_HPP_NAMESPACE::MemoryHeap26067     operator VkMemoryHeap &() VULKAN_HPP_NOEXCEPT
26068     {
26069       return *reinterpret_cast<VkMemoryHeap*>( this );
26070     }
26071 
26072 #if defined( VULKAN_HPP_USE_REFLECT )
26073 #if 14 <= VULKAN_HPP_CPP_VERSION
26074     auto
26075 #else
26076     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::MemoryHeapFlags const &>
26077 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryHeap26078       reflect() const VULKAN_HPP_NOEXCEPT
26079     {
26080       return std::tie( size, flags );
26081     }
26082 #endif
26083 
26084 
26085 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26086 auto operator<=>( MemoryHeap const & ) const = default;
26087 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryHeap26088     bool operator==( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT
26089     {
26090 #if defined( VULKAN_HPP_USE_REFLECT )
26091       return this->reflect() == rhs.reflect();
26092 #else
26093       return ( size == rhs.size )
26094           && ( flags == rhs.flags );
26095 #endif
26096     }
26097 
operator !=VULKAN_HPP_NAMESPACE::MemoryHeap26098     bool operator!=( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT
26099     {
26100       return !operator==( rhs );
26101     }
26102 #endif
26103 
26104     public:
26105     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
26106     VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags = {};
26107 
26108   };
26109 
26110   struct MemoryHostPointerPropertiesEXT
26111   {
26112     using NativeType = VkMemoryHostPointerPropertiesEXT;
26113 
26114     static const bool allowDuplicate = false;
26115     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryHostPointerPropertiesEXT;
26116 
26117 
26118 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryHostPointerPropertiesEXTVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT26119 VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT(uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
26120     : pNext( pNext_ ), memoryTypeBits( memoryTypeBits_ )
26121     {}
26122 
26123     VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26124 
MemoryHostPointerPropertiesEXTVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT26125     MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
26126       : MemoryHostPointerPropertiesEXT( *reinterpret_cast<MemoryHostPointerPropertiesEXT const *>( &rhs ) )
26127     {}
26128 
26129 
26130     MemoryHostPointerPropertiesEXT & operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26131 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26132 
operator =VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT26133     MemoryHostPointerPropertiesEXT & operator=( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
26134     {
26135       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT const *>( &rhs );
26136       return *this;
26137     }
26138 
26139 
operator VkMemoryHostPointerPropertiesEXT const&VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT26140     operator VkMemoryHostPointerPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
26141     {
26142       return *reinterpret_cast<const VkMemoryHostPointerPropertiesEXT*>( this );
26143     }
26144 
operator VkMemoryHostPointerPropertiesEXT&VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT26145     operator VkMemoryHostPointerPropertiesEXT &() VULKAN_HPP_NOEXCEPT
26146     {
26147       return *reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( this );
26148     }
26149 
26150 #if defined( VULKAN_HPP_USE_REFLECT )
26151 #if 14 <= VULKAN_HPP_CPP_VERSION
26152     auto
26153 #else
26154     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
26155 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT26156       reflect() const VULKAN_HPP_NOEXCEPT
26157     {
26158       return std::tie( sType, pNext, memoryTypeBits );
26159     }
26160 #endif
26161 
26162 
26163 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26164 auto operator<=>( MemoryHostPointerPropertiesEXT const & ) const = default;
26165 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT26166     bool operator==( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26167     {
26168 #if defined( VULKAN_HPP_USE_REFLECT )
26169       return this->reflect() == rhs.reflect();
26170 #else
26171       return ( sType == rhs.sType )
26172           && ( pNext == rhs.pNext )
26173           && ( memoryTypeBits == rhs.memoryTypeBits );
26174 #endif
26175     }
26176 
operator !=VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT26177     bool operator!=( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26178     {
26179       return !operator==( rhs );
26180     }
26181 #endif
26182 
26183     public:
26184     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT;
26185     void * pNext = {};
26186     uint32_t memoryTypeBits = {};
26187 
26188   };
26189 
26190   template <>
26191   struct CppType<StructureType, StructureType::eMemoryHostPointerPropertiesEXT>
26192   {
26193     using Type = MemoryHostPointerPropertiesEXT;
26194   };
26195 
26196   struct MemoryOpaqueCaptureAddressAllocateInfo
26197   {
26198     using NativeType = VkMemoryOpaqueCaptureAddressAllocateInfo;
26199 
26200     static const bool allowDuplicate = false;
26201     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
26202 
26203 
26204 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryOpaqueCaptureAddressAllocateInfoVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26205 VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo(uint64_t opaqueCaptureAddress_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
26206     : pNext( pNext_ ), opaqueCaptureAddress( opaqueCaptureAddress_ )
26207     {}
26208 
26209     VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26210 
MemoryOpaqueCaptureAddressAllocateInfoVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26211     MemoryOpaqueCaptureAddressAllocateInfo( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
26212       : MemoryOpaqueCaptureAddressAllocateInfo( *reinterpret_cast<MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs ) )
26213     {}
26214 
26215 
26216     MemoryOpaqueCaptureAddressAllocateInfo & operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26217 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26218 
operator =VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26219     MemoryOpaqueCaptureAddressAllocateInfo & operator=( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
26220     {
26221       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo const *>( &rhs );
26222       return *this;
26223     }
26224 
26225 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26226     VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
26227     {
26228       pNext = pNext_;
26229       return *this;
26230     }
26231 
setOpaqueCaptureAddressVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26232     VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT
26233     {
26234       opaqueCaptureAddress = opaqueCaptureAddress_;
26235       return *this;
26236     }
26237 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26238 
26239 
operator VkMemoryOpaqueCaptureAddressAllocateInfo const&VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26240     operator VkMemoryOpaqueCaptureAddressAllocateInfo const &() const VULKAN_HPP_NOEXCEPT
26241     {
26242       return *reinterpret_cast<const VkMemoryOpaqueCaptureAddressAllocateInfo*>( this );
26243     }
26244 
operator VkMemoryOpaqueCaptureAddressAllocateInfo&VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26245     operator VkMemoryOpaqueCaptureAddressAllocateInfo &() VULKAN_HPP_NOEXCEPT
26246     {
26247       return *reinterpret_cast<VkMemoryOpaqueCaptureAddressAllocateInfo*>( this );
26248     }
26249 
26250 #if defined( VULKAN_HPP_USE_REFLECT )
26251 #if 14 <= VULKAN_HPP_CPP_VERSION
26252     auto
26253 #else
26254     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &>
26255 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26256       reflect() const VULKAN_HPP_NOEXCEPT
26257     {
26258       return std::tie( sType, pNext, opaqueCaptureAddress );
26259     }
26260 #endif
26261 
26262 
26263 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26264 auto operator<=>( MemoryOpaqueCaptureAddressAllocateInfo const & ) const = default;
26265 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26266     bool operator==( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
26267     {
26268 #if defined( VULKAN_HPP_USE_REFLECT )
26269       return this->reflect() == rhs.reflect();
26270 #else
26271       return ( sType == rhs.sType )
26272           && ( pNext == rhs.pNext )
26273           && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress );
26274 #endif
26275     }
26276 
operator !=VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo26277     bool operator!=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
26278     {
26279       return !operator==( rhs );
26280     }
26281 #endif
26282 
26283     public:
26284     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo;
26285     const void * pNext = {};
26286     uint64_t opaqueCaptureAddress = {};
26287 
26288   };
26289 
26290   template <>
26291   struct CppType<StructureType, StructureType::eMemoryOpaqueCaptureAddressAllocateInfo>
26292   {
26293     using Type = MemoryOpaqueCaptureAddressAllocateInfo;
26294   };
26295   using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo;
26296 
26297   struct MemoryRequirements
26298   {
26299     using NativeType = VkMemoryRequirements;
26300 
26301 
26302 
26303 
26304 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryRequirementsVULKAN_HPP_NAMESPACE::MemoryRequirements26305 VULKAN_HPP_CONSTEXPR MemoryRequirements(VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize alignment_ = {}, uint32_t memoryTypeBits_ = {}) VULKAN_HPP_NOEXCEPT
26306     : size( size_ ), alignment( alignment_ ), memoryTypeBits( memoryTypeBits_ )
26307     {}
26308 
26309     VULKAN_HPP_CONSTEXPR MemoryRequirements( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26310 
MemoryRequirementsVULKAN_HPP_NAMESPACE::MemoryRequirements26311     MemoryRequirements( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
26312       : MemoryRequirements( *reinterpret_cast<MemoryRequirements const *>( &rhs ) )
26313     {}
26314 
26315 
26316     MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26317 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26318 
operator =VULKAN_HPP_NAMESPACE::MemoryRequirements26319     MemoryRequirements & operator=( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT
26320     {
26321       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements const *>( &rhs );
26322       return *this;
26323     }
26324 
26325 
operator VkMemoryRequirements const&VULKAN_HPP_NAMESPACE::MemoryRequirements26326     operator VkMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT
26327     {
26328       return *reinterpret_cast<const VkMemoryRequirements*>( this );
26329     }
26330 
operator VkMemoryRequirements&VULKAN_HPP_NAMESPACE::MemoryRequirements26331     operator VkMemoryRequirements &() VULKAN_HPP_NOEXCEPT
26332     {
26333       return *reinterpret_cast<VkMemoryRequirements*>( this );
26334     }
26335 
26336 #if defined( VULKAN_HPP_USE_REFLECT )
26337 #if 14 <= VULKAN_HPP_CPP_VERSION
26338     auto
26339 #else
26340     std::tuple<VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
26341 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryRequirements26342       reflect() const VULKAN_HPP_NOEXCEPT
26343     {
26344       return std::tie( size, alignment, memoryTypeBits );
26345     }
26346 #endif
26347 
26348 
26349 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26350 auto operator<=>( MemoryRequirements const & ) const = default;
26351 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryRequirements26352     bool operator==( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
26353     {
26354 #if defined( VULKAN_HPP_USE_REFLECT )
26355       return this->reflect() == rhs.reflect();
26356 #else
26357       return ( size == rhs.size )
26358           && ( alignment == rhs.alignment )
26359           && ( memoryTypeBits == rhs.memoryTypeBits );
26360 #endif
26361     }
26362 
operator !=VULKAN_HPP_NAMESPACE::MemoryRequirements26363     bool operator!=( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT
26364     {
26365       return !operator==( rhs );
26366     }
26367 #endif
26368 
26369     public:
26370     VULKAN_HPP_NAMESPACE::DeviceSize size = {};
26371     VULKAN_HPP_NAMESPACE::DeviceSize alignment = {};
26372     uint32_t memoryTypeBits = {};
26373 
26374   };
26375 
26376   struct MemoryRequirements2
26377   {
26378     using NativeType = VkMemoryRequirements2;
26379 
26380     static const bool allowDuplicate = false;
26381     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryRequirements2;
26382 
26383 
26384 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryRequirements2VULKAN_HPP_NAMESPACE::MemoryRequirements226385 VULKAN_HPP_CONSTEXPR MemoryRequirements2(VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
26386     : pNext( pNext_ ), memoryRequirements( memoryRequirements_ )
26387     {}
26388 
26389     VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26390 
MemoryRequirements2VULKAN_HPP_NAMESPACE::MemoryRequirements226391     MemoryRequirements2( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
26392       : MemoryRequirements2( *reinterpret_cast<MemoryRequirements2 const *>( &rhs ) )
26393     {}
26394 
26395 
26396     MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26397 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26398 
operator =VULKAN_HPP_NAMESPACE::MemoryRequirements226399     MemoryRequirements2 & operator=( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT
26400     {
26401       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryRequirements2 const *>( &rhs );
26402       return *this;
26403     }
26404 
26405 
operator VkMemoryRequirements2 const&VULKAN_HPP_NAMESPACE::MemoryRequirements226406     operator VkMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT
26407     {
26408       return *reinterpret_cast<const VkMemoryRequirements2*>( this );
26409     }
26410 
operator VkMemoryRequirements2&VULKAN_HPP_NAMESPACE::MemoryRequirements226411     operator VkMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT
26412     {
26413       return *reinterpret_cast<VkMemoryRequirements2*>( this );
26414     }
26415 
26416 #if defined( VULKAN_HPP_USE_REFLECT )
26417 #if 14 <= VULKAN_HPP_CPP_VERSION
26418     auto
26419 #else
26420     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::MemoryRequirements const &>
26421 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryRequirements226422       reflect() const VULKAN_HPP_NOEXCEPT
26423     {
26424       return std::tie( sType, pNext, memoryRequirements );
26425     }
26426 #endif
26427 
26428 
26429 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26430 auto operator<=>( MemoryRequirements2 const & ) const = default;
26431 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryRequirements226432     bool operator==( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
26433     {
26434 #if defined( VULKAN_HPP_USE_REFLECT )
26435       return this->reflect() == rhs.reflect();
26436 #else
26437       return ( sType == rhs.sType )
26438           && ( pNext == rhs.pNext )
26439           && ( memoryRequirements == rhs.memoryRequirements );
26440 #endif
26441     }
26442 
operator !=VULKAN_HPP_NAMESPACE::MemoryRequirements226443     bool operator!=( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT
26444     {
26445       return !operator==( rhs );
26446     }
26447 #endif
26448 
26449     public:
26450     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryRequirements2;
26451     void * pNext = {};
26452     VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {};
26453 
26454   };
26455 
26456   template <>
26457   struct CppType<StructureType, StructureType::eMemoryRequirements2>
26458   {
26459     using Type = MemoryRequirements2;
26460   };
26461   using MemoryRequirements2KHR = MemoryRequirements2;
26462 
26463 #if defined( VK_USE_PLATFORM_SCI )
26464   struct MemorySciBufPropertiesNV
26465   {
26466     using NativeType = VkMemorySciBufPropertiesNV;
26467 
26468     static const bool allowDuplicate = false;
26469     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemorySciBufPropertiesNV;
26470 
26471 
26472 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemorySciBufPropertiesNVVULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26473 VULKAN_HPP_CONSTEXPR MemorySciBufPropertiesNV(uint32_t memoryTypeBits_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
26474     : pNext( pNext_ ), memoryTypeBits( memoryTypeBits_ )
26475     {}
26476 
26477     VULKAN_HPP_CONSTEXPR MemorySciBufPropertiesNV( MemorySciBufPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26478 
MemorySciBufPropertiesNVVULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26479     MemorySciBufPropertiesNV( VkMemorySciBufPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
26480       : MemorySciBufPropertiesNV( *reinterpret_cast<MemorySciBufPropertiesNV const *>( &rhs ) )
26481     {}
26482 
26483 
26484     MemorySciBufPropertiesNV & operator=( MemorySciBufPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26485 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26486 
operator =VULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26487     MemorySciBufPropertiesNV & operator=( VkMemorySciBufPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT
26488     {
26489       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV const *>( &rhs );
26490       return *this;
26491     }
26492 
26493 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26494     VULKAN_HPP_CONSTEXPR_14 MemorySciBufPropertiesNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
26495     {
26496       pNext = pNext_;
26497       return *this;
26498     }
26499 
setMemoryTypeBitsVULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26500     VULKAN_HPP_CONSTEXPR_14 MemorySciBufPropertiesNV & setMemoryTypeBits( uint32_t memoryTypeBits_ ) VULKAN_HPP_NOEXCEPT
26501     {
26502       memoryTypeBits = memoryTypeBits_;
26503       return *this;
26504     }
26505 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
26506 
26507 
operator VkMemorySciBufPropertiesNV const&VULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26508     operator VkMemorySciBufPropertiesNV const &() const VULKAN_HPP_NOEXCEPT
26509     {
26510       return *reinterpret_cast<const VkMemorySciBufPropertiesNV*>( this );
26511     }
26512 
operator VkMemorySciBufPropertiesNV&VULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26513     operator VkMemorySciBufPropertiesNV &() VULKAN_HPP_NOEXCEPT
26514     {
26515       return *reinterpret_cast<VkMemorySciBufPropertiesNV*>( this );
26516     }
26517 
26518 #if defined( VULKAN_HPP_USE_REFLECT )
26519 #if 14 <= VULKAN_HPP_CPP_VERSION
26520     auto
26521 #else
26522     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
26523 #endif
reflectVULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26524       reflect() const VULKAN_HPP_NOEXCEPT
26525     {
26526       return std::tie( sType, pNext, memoryTypeBits );
26527     }
26528 #endif
26529 
26530 
26531 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26532 auto operator<=>( MemorySciBufPropertiesNV const & ) const = default;
26533 #else
operator ==VULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26534     bool operator==( MemorySciBufPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
26535     {
26536 #if defined( VULKAN_HPP_USE_REFLECT )
26537       return this->reflect() == rhs.reflect();
26538 #else
26539       return ( sType == rhs.sType )
26540           && ( pNext == rhs.pNext )
26541           && ( memoryTypeBits == rhs.memoryTypeBits );
26542 #endif
26543     }
26544 
operator !=VULKAN_HPP_NAMESPACE::MemorySciBufPropertiesNV26545     bool operator!=( MemorySciBufPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
26546     {
26547       return !operator==( rhs );
26548     }
26549 #endif
26550 
26551     public:
26552     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemorySciBufPropertiesNV;
26553     const void * pNext = {};
26554     uint32_t memoryTypeBits = {};
26555 
26556   };
26557 
26558   template <>
26559   struct CppType<StructureType, StructureType::eMemorySciBufPropertiesNV>
26560   {
26561     using Type = MemorySciBufPropertiesNV;
26562   };
26563 #endif /*VK_USE_PLATFORM_SCI*/
26564 
26565   struct MemoryType
26566   {
26567     using NativeType = VkMemoryType;
26568 
26569 
26570 
26571 
26572 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MemoryTypeVULKAN_HPP_NAMESPACE::MemoryType26573 VULKAN_HPP_CONSTEXPR MemoryType(VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags_ = {}, uint32_t heapIndex_ = {}) VULKAN_HPP_NOEXCEPT
26574     : propertyFlags( propertyFlags_ ), heapIndex( heapIndex_ )
26575     {}
26576 
26577     VULKAN_HPP_CONSTEXPR MemoryType( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26578 
MemoryTypeVULKAN_HPP_NAMESPACE::MemoryType26579     MemoryType( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
26580       : MemoryType( *reinterpret_cast<MemoryType const *>( &rhs ) )
26581     {}
26582 
26583 
26584     MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26585 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26586 
operator =VULKAN_HPP_NAMESPACE::MemoryType26587     MemoryType & operator=( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT
26588     {
26589       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MemoryType const *>( &rhs );
26590       return *this;
26591     }
26592 
26593 
operator VkMemoryType const&VULKAN_HPP_NAMESPACE::MemoryType26594     operator VkMemoryType const &() const VULKAN_HPP_NOEXCEPT
26595     {
26596       return *reinterpret_cast<const VkMemoryType*>( this );
26597     }
26598 
operator VkMemoryType&VULKAN_HPP_NAMESPACE::MemoryType26599     operator VkMemoryType &() VULKAN_HPP_NOEXCEPT
26600     {
26601       return *reinterpret_cast<VkMemoryType*>( this );
26602     }
26603 
26604 #if defined( VULKAN_HPP_USE_REFLECT )
26605 #if 14 <= VULKAN_HPP_CPP_VERSION
26606     auto
26607 #else
26608     std::tuple<VULKAN_HPP_NAMESPACE::MemoryPropertyFlags const &, uint32_t const &>
26609 #endif
reflectVULKAN_HPP_NAMESPACE::MemoryType26610       reflect() const VULKAN_HPP_NOEXCEPT
26611     {
26612       return std::tie( propertyFlags, heapIndex );
26613     }
26614 #endif
26615 
26616 
26617 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26618 auto operator<=>( MemoryType const & ) const = default;
26619 #else
operator ==VULKAN_HPP_NAMESPACE::MemoryType26620     bool operator==( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT
26621     {
26622 #if defined( VULKAN_HPP_USE_REFLECT )
26623       return this->reflect() == rhs.reflect();
26624 #else
26625       return ( propertyFlags == rhs.propertyFlags )
26626           && ( heapIndex == rhs.heapIndex );
26627 #endif
26628     }
26629 
operator !=VULKAN_HPP_NAMESPACE::MemoryType26630     bool operator!=( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT
26631     {
26632       return !operator==( rhs );
26633     }
26634 #endif
26635 
26636     public:
26637     VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags = {};
26638     uint32_t heapIndex = {};
26639 
26640   };
26641 
26642   struct MultisamplePropertiesEXT
26643   {
26644     using NativeType = VkMultisamplePropertiesEXT;
26645 
26646     static const bool allowDuplicate = false;
26647     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMultisamplePropertiesEXT;
26648 
26649 
26650 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
MultisamplePropertiesEXTVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT26651 VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT(VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
26652     : pNext( pNext_ ), maxSampleLocationGridSize( maxSampleLocationGridSize_ )
26653     {}
26654 
26655     VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26656 
MultisamplePropertiesEXTVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT26657     MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
26658       : MultisamplePropertiesEXT( *reinterpret_cast<MultisamplePropertiesEXT const *>( &rhs ) )
26659     {}
26660 
26661 
26662     MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26663 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26664 
operator =VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT26665     MultisamplePropertiesEXT & operator=( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
26666     {
26667       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT const *>( &rhs );
26668       return *this;
26669     }
26670 
26671 
operator VkMultisamplePropertiesEXT const&VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT26672     operator VkMultisamplePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
26673     {
26674       return *reinterpret_cast<const VkMultisamplePropertiesEXT*>( this );
26675     }
26676 
operator VkMultisamplePropertiesEXT&VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT26677     operator VkMultisamplePropertiesEXT &() VULKAN_HPP_NOEXCEPT
26678     {
26679       return *reinterpret_cast<VkMultisamplePropertiesEXT*>( this );
26680     }
26681 
26682 #if defined( VULKAN_HPP_USE_REFLECT )
26683 #if 14 <= VULKAN_HPP_CPP_VERSION
26684     auto
26685 #else
26686     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
26687 #endif
reflectVULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT26688       reflect() const VULKAN_HPP_NOEXCEPT
26689     {
26690       return std::tie( sType, pNext, maxSampleLocationGridSize );
26691     }
26692 #endif
26693 
26694 
26695 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26696 auto operator<=>( MultisamplePropertiesEXT const & ) const = default;
26697 #else
operator ==VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT26698     bool operator==( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26699     {
26700 #if defined( VULKAN_HPP_USE_REFLECT )
26701       return this->reflect() == rhs.reflect();
26702 #else
26703       return ( sType == rhs.sType )
26704           && ( pNext == rhs.pNext )
26705           && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
26706 #endif
26707     }
26708 
operator !=VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT26709     bool operator!=( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
26710     {
26711       return !operator==( rhs );
26712     }
26713 #endif
26714 
26715     public:
26716     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMultisamplePropertiesEXT;
26717     void * pNext = {};
26718     VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize = {};
26719 
26720   };
26721 
26722   template <>
26723   struct CppType<StructureType, StructureType::eMultisamplePropertiesEXT>
26724   {
26725     using Type = MultisamplePropertiesEXT;
26726   };
26727 
26728   struct PerformanceCounterDescriptionKHR
26729   {
26730     using NativeType = VkPerformanceCounterDescriptionKHR;
26731 
26732     static const bool allowDuplicate = false;
26733     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterDescriptionKHR;
26734 
26735 
26736 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR26737 VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR(VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags_ = {}, std::array<char,VK_MAX_DESCRIPTION_SIZE> const & name_ = {}, std::array<char,VK_MAX_DESCRIPTION_SIZE> const & category_ = {}, std::array<char,VK_MAX_DESCRIPTION_SIZE> const & description_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
26738     : pNext( pNext_ ), flags( flags_ ), name( name_ ), category( category_ ), description( description_ )
26739     {}
26740 
26741     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26742 
PerformanceCounterDescriptionKHRVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR26743     PerformanceCounterDescriptionKHR( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26744       : PerformanceCounterDescriptionKHR( *reinterpret_cast<PerformanceCounterDescriptionKHR const *>( &rhs ) )
26745     {}
26746 
26747 
26748     PerformanceCounterDescriptionKHR & operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26749 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26750 
operator =VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR26751     PerformanceCounterDescriptionKHR & operator=( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26752     {
26753       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR const *>( &rhs );
26754       return *this;
26755     }
26756 
26757 
operator VkPerformanceCounterDescriptionKHR const&VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR26758     operator VkPerformanceCounterDescriptionKHR const &() const VULKAN_HPP_NOEXCEPT
26759     {
26760       return *reinterpret_cast<const VkPerformanceCounterDescriptionKHR*>( this );
26761     }
26762 
operator VkPerformanceCounterDescriptionKHR&VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR26763     operator VkPerformanceCounterDescriptionKHR &() VULKAN_HPP_NOEXCEPT
26764     {
26765       return *reinterpret_cast<VkPerformanceCounterDescriptionKHR*>( this );
26766     }
26767 
26768 #if defined( VULKAN_HPP_USE_REFLECT )
26769 #if 14 <= VULKAN_HPP_CPP_VERSION
26770     auto
26771 #else
26772     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &>
26773 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR26774       reflect() const VULKAN_HPP_NOEXCEPT
26775     {
26776       return std::tie( sType, pNext, flags, name, category, description );
26777     }
26778 #endif
26779 
26780 
26781 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26782 auto operator<=>( PerformanceCounterDescriptionKHR const & ) const = default;
26783 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR26784     bool operator==( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26785     {
26786 #if defined( VULKAN_HPP_USE_REFLECT )
26787       return this->reflect() == rhs.reflect();
26788 #else
26789       return ( sType == rhs.sType )
26790           && ( pNext == rhs.pNext )
26791           && ( flags == rhs.flags )
26792           && ( name == rhs.name )
26793           && ( category == rhs.category )
26794           && ( description == rhs.description );
26795 #endif
26796     }
26797 
operator !=VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR26798     bool operator!=( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26799     {
26800       return !operator==( rhs );
26801     }
26802 #endif
26803 
26804     public:
26805     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterDescriptionKHR;
26806     void * pNext = {};
26807     VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags = {};
26808     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> name = {};
26809     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> category = {};
26810     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
26811 
26812   };
26813 
26814   template <>
26815   struct CppType<StructureType, StructureType::ePerformanceCounterDescriptionKHR>
26816   {
26817     using Type = PerformanceCounterDescriptionKHR;
26818   };
26819 
26820   struct PerformanceCounterKHR
26821   {
26822     using NativeType = VkPerformanceCounterKHR;
26823 
26824     static const bool allowDuplicate = false;
26825     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterKHR;
26826 
26827 
26828 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceCounterKHRVULKAN_HPP_NAMESPACE::PerformanceCounterKHR26829 VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR(VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR unit_ = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric, VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope_ = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer, VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage_ = VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32, std::array<uint8_t,VK_UUID_SIZE> const & uuid_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
26830     : pNext( pNext_ ), unit( unit_ ), scope( scope_ ), storage( storage_ ), uuid( uuid_ )
26831     {}
26832 
26833     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26834 
PerformanceCounterKHRVULKAN_HPP_NAMESPACE::PerformanceCounterKHR26835     PerformanceCounterKHR( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26836       : PerformanceCounterKHR( *reinterpret_cast<PerformanceCounterKHR const *>( &rhs ) )
26837     {}
26838 
26839 
26840     PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
26841 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
26842 
operator =VULKAN_HPP_NAMESPACE::PerformanceCounterKHR26843     PerformanceCounterKHR & operator=( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT
26844     {
26845       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR const *>( &rhs );
26846       return *this;
26847     }
26848 
26849 
operator VkPerformanceCounterKHR const&VULKAN_HPP_NAMESPACE::PerformanceCounterKHR26850     operator VkPerformanceCounterKHR const &() const VULKAN_HPP_NOEXCEPT
26851     {
26852       return *reinterpret_cast<const VkPerformanceCounterKHR*>( this );
26853     }
26854 
operator VkPerformanceCounterKHR&VULKAN_HPP_NAMESPACE::PerformanceCounterKHR26855     operator VkPerformanceCounterKHR &() VULKAN_HPP_NOEXCEPT
26856     {
26857       return *reinterpret_cast<VkPerformanceCounterKHR*>( this );
26858     }
26859 
26860 #if defined( VULKAN_HPP_USE_REFLECT )
26861 #if 14 <= VULKAN_HPP_CPP_VERSION
26862     auto
26863 #else
26864     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR const &, VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR const &, VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
26865 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceCounterKHR26866       reflect() const VULKAN_HPP_NOEXCEPT
26867     {
26868       return std::tie( sType, pNext, unit, scope, storage, uuid );
26869     }
26870 #endif
26871 
26872 
26873 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
26874 auto operator<=>( PerformanceCounterKHR const & ) const = default;
26875 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceCounterKHR26876     bool operator==( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26877     {
26878 #if defined( VULKAN_HPP_USE_REFLECT )
26879       return this->reflect() == rhs.reflect();
26880 #else
26881       return ( sType == rhs.sType )
26882           && ( pNext == rhs.pNext )
26883           && ( unit == rhs.unit )
26884           && ( scope == rhs.scope )
26885           && ( storage == rhs.storage )
26886           && ( uuid == rhs.uuid );
26887 #endif
26888     }
26889 
operator !=VULKAN_HPP_NAMESPACE::PerformanceCounterKHR26890     bool operator!=( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
26891     {
26892       return !operator==( rhs );
26893     }
26894 #endif
26895 
26896     public:
26897     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterKHR;
26898     void * pNext = {};
26899     VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR unit = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric;
26900     VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer;
26901     VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage = VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32;
26902     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> uuid = {};
26903 
26904   };
26905 
26906   template <>
26907   struct CppType<StructureType, StructureType::ePerformanceCounterKHR>
26908   {
26909     using Type = PerformanceCounterKHR;
26910   };
26911 
26912   union PerformanceCounterResultKHR
26913   {
26914     using NativeType = VkPerformanceCounterResultKHR;
26915 #if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS )
26916 
PerformanceCounterResultKHR(int32_t int32_={} )26917     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int32_t int32_ = {} )
26918       : int32( int32_ )
26919     {}
26920 
PerformanceCounterResultKHR(int64_t int64_)26921     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int64_t int64_ )
26922       : int64( int64_ )
26923     {}
26924 
PerformanceCounterResultKHR(uint32_t uint32_)26925     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint32_t uint32_ )
26926       : uint32( uint32_ )
26927     {}
26928 
PerformanceCounterResultKHR(uint64_t uint64_)26929     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint64_t uint64_ )
26930       : uint64( uint64_ )
26931     {}
26932 
PerformanceCounterResultKHR(float float32_)26933     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( float float32_ )
26934       : float32( float32_ )
26935     {}
26936 
PerformanceCounterResultKHR(double float64_)26937     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( double float64_ )
26938       : float64( float64_ )
26939     {}
26940 #endif /*VULKAN_HPP_NO_UNION_CONSTRUCTORS*/
26941 
26942 #if !defined( VULKAN_HPP_NO_UNION_SETTERS )
setInt32(int32_t int32_)26943     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt32( int32_t int32_ ) VULKAN_HPP_NOEXCEPT
26944     {
26945       int32 = int32_;
26946       return *this;
26947     }
26948 
setInt64(int64_t int64_)26949     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt64( int64_t int64_ ) VULKAN_HPP_NOEXCEPT
26950     {
26951       int64 = int64_;
26952       return *this;
26953     }
26954 
setUint32(uint32_t uint32_)26955     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint32( uint32_t uint32_ ) VULKAN_HPP_NOEXCEPT
26956     {
26957       uint32 = uint32_;
26958       return *this;
26959     }
26960 
setUint64(uint64_t uint64_)26961     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint64( uint64_t uint64_ ) VULKAN_HPP_NOEXCEPT
26962     {
26963       uint64 = uint64_;
26964       return *this;
26965     }
26966 
setFloat32(float float32_)26967     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat32( float float32_ ) VULKAN_HPP_NOEXCEPT
26968     {
26969       float32 = float32_;
26970       return *this;
26971     }
26972 
setFloat64(double float64_)26973     VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat64( double float64_ ) VULKAN_HPP_NOEXCEPT
26974     {
26975       float64 = float64_;
26976       return *this;
26977     }
26978 #endif /*VULKAN_HPP_NO_UNION_SETTERS*/
26979 
operator VkPerformanceCounterResultKHR const&() const26980     operator VkPerformanceCounterResultKHR const &() const
26981     {
26982       return *reinterpret_cast<const VkPerformanceCounterResultKHR*>( this );
26983     }
26984 
operator VkPerformanceCounterResultKHR&()26985     operator VkPerformanceCounterResultKHR &()
26986     {
26987       return *reinterpret_cast<VkPerformanceCounterResultKHR*>( this );
26988     }
26989 
26990     int32_t int32;
26991     int64_t int64;
26992     uint32_t uint32;
26993     uint64_t uint64;
26994     float float32;
26995     double float64;
26996 
26997   };
26998 
26999   struct PerformanceQueryReservationInfoKHR
27000   {
27001     using NativeType = VkPerformanceQueryReservationInfoKHR;
27002 
27003     static const bool allowDuplicate = true;
27004     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceQueryReservationInfoKHR;
27005 
27006 
27007 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceQueryReservationInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27008 VULKAN_HPP_CONSTEXPR PerformanceQueryReservationInfoKHR(uint32_t maxPerformanceQueriesPerPool_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27009     : pNext( pNext_ ), maxPerformanceQueriesPerPool( maxPerformanceQueriesPerPool_ )
27010     {}
27011 
27012     VULKAN_HPP_CONSTEXPR PerformanceQueryReservationInfoKHR( PerformanceQueryReservationInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27013 
PerformanceQueryReservationInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27014     PerformanceQueryReservationInfoKHR( VkPerformanceQueryReservationInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
27015       : PerformanceQueryReservationInfoKHR( *reinterpret_cast<PerformanceQueryReservationInfoKHR const *>( &rhs ) )
27016     {}
27017 
27018 
27019     PerformanceQueryReservationInfoKHR & operator=( PerformanceQueryReservationInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27020 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27021 
operator =VULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27022     PerformanceQueryReservationInfoKHR & operator=( VkPerformanceQueryReservationInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
27023     {
27024       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR const *>( &rhs );
27025       return *this;
27026     }
27027 
27028 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27029     VULKAN_HPP_CONSTEXPR_14 PerformanceQueryReservationInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27030     {
27031       pNext = pNext_;
27032       return *this;
27033     }
27034 
setMaxPerformanceQueriesPerPoolVULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27035     VULKAN_HPP_CONSTEXPR_14 PerformanceQueryReservationInfoKHR & setMaxPerformanceQueriesPerPool( uint32_t maxPerformanceQueriesPerPool_ ) VULKAN_HPP_NOEXCEPT
27036     {
27037       maxPerformanceQueriesPerPool = maxPerformanceQueriesPerPool_;
27038       return *this;
27039     }
27040 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27041 
27042 
operator VkPerformanceQueryReservationInfoKHR const&VULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27043     operator VkPerformanceQueryReservationInfoKHR const &() const VULKAN_HPP_NOEXCEPT
27044     {
27045       return *reinterpret_cast<const VkPerformanceQueryReservationInfoKHR*>( this );
27046     }
27047 
operator VkPerformanceQueryReservationInfoKHR&VULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27048     operator VkPerformanceQueryReservationInfoKHR &() VULKAN_HPP_NOEXCEPT
27049     {
27050       return *reinterpret_cast<VkPerformanceQueryReservationInfoKHR*>( this );
27051     }
27052 
27053 #if defined( VULKAN_HPP_USE_REFLECT )
27054 #if 14 <= VULKAN_HPP_CPP_VERSION
27055     auto
27056 #else
27057     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
27058 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27059       reflect() const VULKAN_HPP_NOEXCEPT
27060     {
27061       return std::tie( sType, pNext, maxPerformanceQueriesPerPool );
27062     }
27063 #endif
27064 
27065 
27066 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27067 auto operator<=>( PerformanceQueryReservationInfoKHR const & ) const = default;
27068 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27069     bool operator==( PerformanceQueryReservationInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
27070     {
27071 #if defined( VULKAN_HPP_USE_REFLECT )
27072       return this->reflect() == rhs.reflect();
27073 #else
27074       return ( sType == rhs.sType )
27075           && ( pNext == rhs.pNext )
27076           && ( maxPerformanceQueriesPerPool == rhs.maxPerformanceQueriesPerPool );
27077 #endif
27078     }
27079 
operator !=VULKAN_HPP_NAMESPACE::PerformanceQueryReservationInfoKHR27080     bool operator!=( PerformanceQueryReservationInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
27081     {
27082       return !operator==( rhs );
27083     }
27084 #endif
27085 
27086     public:
27087     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceQueryReservationInfoKHR;
27088     const void * pNext = {};
27089     uint32_t maxPerformanceQueriesPerPool = {};
27090 
27091   };
27092 
27093   template <>
27094   struct CppType<StructureType, StructureType::ePerformanceQueryReservationInfoKHR>
27095   {
27096     using Type = PerformanceQueryReservationInfoKHR;
27097   };
27098 
27099   struct PerformanceQuerySubmitInfoKHR
27100   {
27101     using NativeType = VkPerformanceQuerySubmitInfoKHR;
27102 
27103     static const bool allowDuplicate = false;
27104     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceQuerySubmitInfoKHR;
27105 
27106 
27107 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PerformanceQuerySubmitInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27108 VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR(uint32_t counterPassIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27109     : pNext( pNext_ ), counterPassIndex( counterPassIndex_ )
27110     {}
27111 
27112     VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27113 
PerformanceQuerySubmitInfoKHRVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27114     PerformanceQuerySubmitInfoKHR( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
27115       : PerformanceQuerySubmitInfoKHR( *reinterpret_cast<PerformanceQuerySubmitInfoKHR const *>( &rhs ) )
27116     {}
27117 
27118 
27119     PerformanceQuerySubmitInfoKHR & operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27120 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27121 
operator =VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27122     PerformanceQuerySubmitInfoKHR & operator=( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
27123     {
27124       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR const *>( &rhs );
27125       return *this;
27126     }
27127 
27128 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27129     VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
27130     {
27131       pNext = pNext_;
27132       return *this;
27133     }
27134 
setCounterPassIndexVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27135     VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setCounterPassIndex( uint32_t counterPassIndex_ ) VULKAN_HPP_NOEXCEPT
27136     {
27137       counterPassIndex = counterPassIndex_;
27138       return *this;
27139     }
27140 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27141 
27142 
operator VkPerformanceQuerySubmitInfoKHR const&VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27143     operator VkPerformanceQuerySubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT
27144     {
27145       return *reinterpret_cast<const VkPerformanceQuerySubmitInfoKHR*>( this );
27146     }
27147 
operator VkPerformanceQuerySubmitInfoKHR&VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27148     operator VkPerformanceQuerySubmitInfoKHR &() VULKAN_HPP_NOEXCEPT
27149     {
27150       return *reinterpret_cast<VkPerformanceQuerySubmitInfoKHR*>( this );
27151     }
27152 
27153 #if defined( VULKAN_HPP_USE_REFLECT )
27154 #if 14 <= VULKAN_HPP_CPP_VERSION
27155     auto
27156 #else
27157     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &>
27158 #endif
reflectVULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27159       reflect() const VULKAN_HPP_NOEXCEPT
27160     {
27161       return std::tie( sType, pNext, counterPassIndex );
27162     }
27163 #endif
27164 
27165 
27166 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27167 auto operator<=>( PerformanceQuerySubmitInfoKHR const & ) const = default;
27168 #else
operator ==VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27169     bool operator==( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
27170     {
27171 #if defined( VULKAN_HPP_USE_REFLECT )
27172       return this->reflect() == rhs.reflect();
27173 #else
27174       return ( sType == rhs.sType )
27175           && ( pNext == rhs.pNext )
27176           && ( counterPassIndex == rhs.counterPassIndex );
27177 #endif
27178     }
27179 
operator !=VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR27180     bool operator!=( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
27181     {
27182       return !operator==( rhs );
27183     }
27184 #endif
27185 
27186     public:
27187     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceQuerySubmitInfoKHR;
27188     const void * pNext = {};
27189     uint32_t counterPassIndex = {};
27190 
27191   };
27192 
27193   template <>
27194   struct CppType<StructureType, StructureType::ePerformanceQuerySubmitInfoKHR>
27195   {
27196     using Type = PerformanceQuerySubmitInfoKHR;
27197   };
27198 
27199   struct PhysicalDevice16BitStorageFeatures
27200   {
27201     using NativeType = VkPhysicalDevice16BitStorageFeatures;
27202 
27203     static const bool allowDuplicate = false;
27204     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice16BitStorageFeatures;
27205 
27206 
27207 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice16BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27208 VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures(VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27209     : pNext( pNext_ ), storageBuffer16BitAccess( storageBuffer16BitAccess_ ), uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ ), storagePushConstant16( storagePushConstant16_ ), storageInputOutput16( storageInputOutput16_ )
27210     {}
27211 
27212     VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27213 
PhysicalDevice16BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27214     PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
27215       : PhysicalDevice16BitStorageFeatures( *reinterpret_cast<PhysicalDevice16BitStorageFeatures const *>( &rhs ) )
27216     {}
27217 
27218 
27219     PhysicalDevice16BitStorageFeatures & operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27220 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27221 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27222     PhysicalDevice16BitStorageFeatures & operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
27223     {
27224       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures const *>( &rhs );
27225       return *this;
27226     }
27227 
27228 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27229     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27230     {
27231       pNext = pNext_;
27232       return *this;
27233     }
27234 
setStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27235     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
27236     {
27237       storageBuffer16BitAccess = storageBuffer16BitAccess_;
27238       return *this;
27239     }
27240 
setUniformAndStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27241     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setUniformAndStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
27242     {
27243       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
27244       return *this;
27245     }
27246 
setStoragePushConstant16VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27247     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT
27248     {
27249       storagePushConstant16 = storagePushConstant16_;
27250       return *this;
27251     }
27252 
setStorageInputOutput16VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27253     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT
27254     {
27255       storageInputOutput16 = storageInputOutput16_;
27256       return *this;
27257     }
27258 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27259 
27260 
operator VkPhysicalDevice16BitStorageFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27261     operator VkPhysicalDevice16BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT
27262     {
27263       return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeatures*>( this );
27264     }
27265 
operator VkPhysicalDevice16BitStorageFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27266     operator VkPhysicalDevice16BitStorageFeatures &() VULKAN_HPP_NOEXCEPT
27267     {
27268       return *reinterpret_cast<VkPhysicalDevice16BitStorageFeatures*>( this );
27269     }
27270 
27271 #if defined( VULKAN_HPP_USE_REFLECT )
27272 #if 14 <= VULKAN_HPP_CPP_VERSION
27273     auto
27274 #else
27275     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
27276 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27277       reflect() const VULKAN_HPP_NOEXCEPT
27278     {
27279       return std::tie( sType, pNext, storageBuffer16BitAccess, uniformAndStorageBuffer16BitAccess, storagePushConstant16, storageInputOutput16 );
27280     }
27281 #endif
27282 
27283 
27284 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27285 auto operator<=>( PhysicalDevice16BitStorageFeatures const & ) const = default;
27286 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27287     bool operator==( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
27288     {
27289 #if defined( VULKAN_HPP_USE_REFLECT )
27290       return this->reflect() == rhs.reflect();
27291 #else
27292       return ( sType == rhs.sType )
27293           && ( pNext == rhs.pNext )
27294           && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
27295           && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
27296           && ( storagePushConstant16 == rhs.storagePushConstant16 )
27297           && ( storageInputOutput16 == rhs.storageInputOutput16 );
27298 #endif
27299     }
27300 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures27301     bool operator!=( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
27302     {
27303       return !operator==( rhs );
27304     }
27305 #endif
27306 
27307     public:
27308     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures;
27309     void * pNext = {};
27310     VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess = {};
27311     VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess = {};
27312     VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16 = {};
27313     VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16 = {};
27314 
27315   };
27316 
27317   template <>
27318   struct CppType<StructureType, StructureType::ePhysicalDevice16BitStorageFeatures>
27319   {
27320     using Type = PhysicalDevice16BitStorageFeatures;
27321   };
27322   using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures;
27323 
27324   struct PhysicalDevice4444FormatsFeaturesEXT
27325   {
27326     using NativeType = VkPhysicalDevice4444FormatsFeaturesEXT;
27327 
27328     static const bool allowDuplicate = false;
27329     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
27330 
27331 
27332 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice4444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27333 VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ = {}, VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27334     : pNext( pNext_ ), formatA4R4G4B4( formatA4R4G4B4_ ), formatA4B4G4R4( formatA4B4G4R4_ )
27335     {}
27336 
27337     VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27338 
PhysicalDevice4444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27339     PhysicalDevice4444FormatsFeaturesEXT( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27340       : PhysicalDevice4444FormatsFeaturesEXT( *reinterpret_cast<PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs ) )
27341     {}
27342 
27343 
27344     PhysicalDevice4444FormatsFeaturesEXT & operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27345 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27346 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27347     PhysicalDevice4444FormatsFeaturesEXT & operator=( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27348     {
27349       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT const *>( &rhs );
27350       return *this;
27351     }
27352 
27353 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27354     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27355     {
27356       pNext = pNext_;
27357       return *this;
27358     }
27359 
setFormatA4R4G4B4VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27360     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setFormatA4R4G4B4( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ ) VULKAN_HPP_NOEXCEPT
27361     {
27362       formatA4R4G4B4 = formatA4R4G4B4_;
27363       return *this;
27364     }
27365 
setFormatA4B4G4R4VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27366     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setFormatA4B4G4R4( VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ ) VULKAN_HPP_NOEXCEPT
27367     {
27368       formatA4B4G4R4 = formatA4B4G4R4_;
27369       return *this;
27370     }
27371 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27372 
27373 
operator VkPhysicalDevice4444FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27374     operator VkPhysicalDevice4444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
27375     {
27376       return *reinterpret_cast<const VkPhysicalDevice4444FormatsFeaturesEXT*>( this );
27377     }
27378 
operator VkPhysicalDevice4444FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27379     operator VkPhysicalDevice4444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
27380     {
27381       return *reinterpret_cast<VkPhysicalDevice4444FormatsFeaturesEXT*>( this );
27382     }
27383 
27384 #if defined( VULKAN_HPP_USE_REFLECT )
27385 #if 14 <= VULKAN_HPP_CPP_VERSION
27386     auto
27387 #else
27388     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
27389 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27390       reflect() const VULKAN_HPP_NOEXCEPT
27391     {
27392       return std::tie( sType, pNext, formatA4R4G4B4, formatA4B4G4R4 );
27393     }
27394 #endif
27395 
27396 
27397 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27398 auto operator<=>( PhysicalDevice4444FormatsFeaturesEXT const & ) const = default;
27399 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27400     bool operator==( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27401     {
27402 #if defined( VULKAN_HPP_USE_REFLECT )
27403       return this->reflect() == rhs.reflect();
27404 #else
27405       return ( sType == rhs.sType )
27406           && ( pNext == rhs.pNext )
27407           && ( formatA4R4G4B4 == rhs.formatA4R4G4B4 )
27408           && ( formatA4B4G4R4 == rhs.formatA4B4G4R4 );
27409 #endif
27410     }
27411 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT27412     bool operator!=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27413     {
27414       return !operator==( rhs );
27415     }
27416 #endif
27417 
27418     public:
27419     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT;
27420     void * pNext = {};
27421     VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4 = {};
27422     VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4 = {};
27423 
27424   };
27425 
27426   template <>
27427   struct CppType<StructureType, StructureType::ePhysicalDevice4444FormatsFeaturesEXT>
27428   {
27429     using Type = PhysicalDevice4444FormatsFeaturesEXT;
27430   };
27431 
27432   struct PhysicalDevice8BitStorageFeatures
27433   {
27434     using NativeType = VkPhysicalDevice8BitStorageFeatures;
27435 
27436     static const bool allowDuplicate = false;
27437     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice8BitStorageFeatures;
27438 
27439 
27440 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevice8BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27441 VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures(VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27442     : pNext( pNext_ ), storageBuffer8BitAccess( storageBuffer8BitAccess_ ), uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ ), storagePushConstant8( storagePushConstant8_ )
27443     {}
27444 
27445     VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27446 
PhysicalDevice8BitStorageFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27447     PhysicalDevice8BitStorageFeatures( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
27448       : PhysicalDevice8BitStorageFeatures( *reinterpret_cast<PhysicalDevice8BitStorageFeatures const *>( &rhs ) )
27449     {}
27450 
27451 
27452     PhysicalDevice8BitStorageFeatures & operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27453 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27454 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27455     PhysicalDevice8BitStorageFeatures & operator=( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
27456     {
27457       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures const *>( &rhs );
27458       return *this;
27459     }
27460 
27461 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27462     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27463     {
27464       pNext = pNext_;
27465       return *this;
27466     }
27467 
setStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27468     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
27469     {
27470       storageBuffer8BitAccess = storageBuffer8BitAccess_;
27471       return *this;
27472     }
27473 
setUniformAndStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27474     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setUniformAndStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
27475     {
27476       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
27477       return *this;
27478     }
27479 
setStoragePushConstant8VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27480     VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT
27481     {
27482       storagePushConstant8 = storagePushConstant8_;
27483       return *this;
27484     }
27485 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27486 
27487 
operator VkPhysicalDevice8BitStorageFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27488     operator VkPhysicalDevice8BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT
27489     {
27490       return *reinterpret_cast<const VkPhysicalDevice8BitStorageFeatures*>( this );
27491     }
27492 
operator VkPhysicalDevice8BitStorageFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27493     operator VkPhysicalDevice8BitStorageFeatures &() VULKAN_HPP_NOEXCEPT
27494     {
27495       return *reinterpret_cast<VkPhysicalDevice8BitStorageFeatures*>( this );
27496     }
27497 
27498 #if defined( VULKAN_HPP_USE_REFLECT )
27499 #if 14 <= VULKAN_HPP_CPP_VERSION
27500     auto
27501 #else
27502     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
27503 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27504       reflect() const VULKAN_HPP_NOEXCEPT
27505     {
27506       return std::tie( sType, pNext, storageBuffer8BitAccess, uniformAndStorageBuffer8BitAccess, storagePushConstant8 );
27507     }
27508 #endif
27509 
27510 
27511 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27512 auto operator<=>( PhysicalDevice8BitStorageFeatures const & ) const = default;
27513 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27514     bool operator==( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
27515     {
27516 #if defined( VULKAN_HPP_USE_REFLECT )
27517       return this->reflect() == rhs.reflect();
27518 #else
27519       return ( sType == rhs.sType )
27520           && ( pNext == rhs.pNext )
27521           && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess )
27522           && ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess )
27523           && ( storagePushConstant8 == rhs.storagePushConstant8 );
27524 #endif
27525     }
27526 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures27527     bool operator!=( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
27528     {
27529       return !operator==( rhs );
27530     }
27531 #endif
27532 
27533     public:
27534     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice8BitStorageFeatures;
27535     void * pNext = {};
27536     VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess = {};
27537     VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess = {};
27538     VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8 = {};
27539 
27540   };
27541 
27542   template <>
27543   struct CppType<StructureType, StructureType::ePhysicalDevice8BitStorageFeatures>
27544   {
27545     using Type = PhysicalDevice8BitStorageFeatures;
27546   };
27547   using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures;
27548 
27549   struct PhysicalDeviceASTCDecodeFeaturesEXT
27550   {
27551     using NativeType = VkPhysicalDeviceASTCDecodeFeaturesEXT;
27552 
27553     static const bool allowDuplicate = false;
27554     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
27555 
27556 
27557 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceASTCDecodeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27558 VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27559     : pNext( pNext_ ), decodeModeSharedExponent( decodeModeSharedExponent_ )
27560     {}
27561 
27562     VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27563 
PhysicalDeviceASTCDecodeFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27564     PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27565       : PhysicalDeviceASTCDecodeFeaturesEXT( *reinterpret_cast<PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs ) )
27566     {}
27567 
27568 
27569     PhysicalDeviceASTCDecodeFeaturesEXT & operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27570 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27571 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27572     PhysicalDeviceASTCDecodeFeaturesEXT & operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27573     {
27574       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT const *>( &rhs );
27575       return *this;
27576     }
27577 
27578 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27579     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27580     {
27581       pNext = pNext_;
27582       return *this;
27583     }
27584 
setDecodeModeSharedExponentVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27585     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & setDecodeModeSharedExponent( VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ ) VULKAN_HPP_NOEXCEPT
27586     {
27587       decodeModeSharedExponent = decodeModeSharedExponent_;
27588       return *this;
27589     }
27590 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27591 
27592 
operator VkPhysicalDeviceASTCDecodeFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27593     operator VkPhysicalDeviceASTCDecodeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
27594     {
27595       return *reinterpret_cast<const VkPhysicalDeviceASTCDecodeFeaturesEXT*>( this );
27596     }
27597 
operator VkPhysicalDeviceASTCDecodeFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27598     operator VkPhysicalDeviceASTCDecodeFeaturesEXT &() VULKAN_HPP_NOEXCEPT
27599     {
27600       return *reinterpret_cast<VkPhysicalDeviceASTCDecodeFeaturesEXT*>( this );
27601     }
27602 
27603 #if defined( VULKAN_HPP_USE_REFLECT )
27604 #if 14 <= VULKAN_HPP_CPP_VERSION
27605     auto
27606 #else
27607     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
27608 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27609       reflect() const VULKAN_HPP_NOEXCEPT
27610     {
27611       return std::tie( sType, pNext, decodeModeSharedExponent );
27612     }
27613 #endif
27614 
27615 
27616 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27617 auto operator<=>( PhysicalDeviceASTCDecodeFeaturesEXT const & ) const = default;
27618 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27619     bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27620     {
27621 #if defined( VULKAN_HPP_USE_REFLECT )
27622       return this->reflect() == rhs.reflect();
27623 #else
27624       return ( sType == rhs.sType )
27625           && ( pNext == rhs.pNext )
27626           && ( decodeModeSharedExponent == rhs.decodeModeSharedExponent );
27627 #endif
27628     }
27629 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT27630     bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27631     {
27632       return !operator==( rhs );
27633     }
27634 #endif
27635 
27636     public:
27637     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT;
27638     void * pNext = {};
27639     VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent = {};
27640 
27641   };
27642 
27643   template <>
27644   struct CppType<StructureType, StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT>
27645   {
27646     using Type = PhysicalDeviceASTCDecodeFeaturesEXT;
27647   };
27648 
27649   struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
27650   {
27651     using NativeType = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
27652 
27653     static const bool allowDuplicate = false;
27654     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
27655 
27656 
27657 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBlendOperationAdvancedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27658 VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27659     : pNext( pNext_ ), advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
27660     {}
27661 
27662     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27663 
PhysicalDeviceBlendOperationAdvancedFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27664     PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27665       : PhysicalDeviceBlendOperationAdvancedFeaturesEXT( *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs ) )
27666     {}
27667 
27668 
27669     PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27670 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27671 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27672     PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27673     {
27674       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT const *>( &rhs );
27675       return *this;
27676     }
27677 
27678 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27679     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27680     {
27681       pNext = pNext_;
27682       return *this;
27683     }
27684 
setAdvancedBlendCoherentOperationsVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27685     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setAdvancedBlendCoherentOperations( VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ ) VULKAN_HPP_NOEXCEPT
27686     {
27687       advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
27688       return *this;
27689     }
27690 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27691 
27692 
operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27693     operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
27694     {
27695       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>( this );
27696     }
27697 
operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27698     operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &() VULKAN_HPP_NOEXCEPT
27699     {
27700       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>( this );
27701     }
27702 
27703 #if defined( VULKAN_HPP_USE_REFLECT )
27704 #if 14 <= VULKAN_HPP_CPP_VERSION
27705     auto
27706 #else
27707     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
27708 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27709       reflect() const VULKAN_HPP_NOEXCEPT
27710     {
27711       return std::tie( sType, pNext, advancedBlendCoherentOperations );
27712     }
27713 #endif
27714 
27715 
27716 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27717 auto operator<=>( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & ) const = default;
27718 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27719     bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27720     {
27721 #if defined( VULKAN_HPP_USE_REFLECT )
27722       return this->reflect() == rhs.reflect();
27723 #else
27724       return ( sType == rhs.sType )
27725           && ( pNext == rhs.pNext )
27726           && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
27727 #endif
27728     }
27729 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT27730     bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27731     {
27732       return !operator==( rhs );
27733     }
27734 #endif
27735 
27736     public:
27737     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
27738     void * pNext = {};
27739     VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations = {};
27740 
27741   };
27742 
27743   template <>
27744   struct CppType<StructureType, StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT>
27745   {
27746     using Type = PhysicalDeviceBlendOperationAdvancedFeaturesEXT;
27747   };
27748 
27749   struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
27750   {
27751     using NativeType = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
27752 
27753     static const bool allowDuplicate = false;
27754     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
27755 
27756 
27757 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBlendOperationAdvancedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT27758 VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT(uint32_t advancedBlendMaxColorAttachments_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27759     : pNext( pNext_ ), advancedBlendMaxColorAttachments( advancedBlendMaxColorAttachments_ ), advancedBlendIndependentBlend( advancedBlendIndependentBlend_ ), advancedBlendNonPremultipliedSrcColor( advancedBlendNonPremultipliedSrcColor_ ), advancedBlendNonPremultipliedDstColor( advancedBlendNonPremultipliedDstColor_ ), advancedBlendCorrelatedOverlap( advancedBlendCorrelatedOverlap_ ), advancedBlendAllOperations( advancedBlendAllOperations_ )
27760     {}
27761 
27762     VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27763 
PhysicalDeviceBlendOperationAdvancedPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT27764     PhysicalDeviceBlendOperationAdvancedPropertiesEXT( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27765       : PhysicalDeviceBlendOperationAdvancedPropertiesEXT( *reinterpret_cast<PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs ) )
27766     {}
27767 
27768 
27769     PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27770 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27771 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT27772     PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27773     {
27774       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT const *>( &rhs );
27775       return *this;
27776     }
27777 
27778 
operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT27779     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
27780     {
27781       return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>( this );
27782     }
27783 
operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT27784     operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &() VULKAN_HPP_NOEXCEPT
27785     {
27786       return *reinterpret_cast<VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>( this );
27787     }
27788 
27789 #if defined( VULKAN_HPP_USE_REFLECT )
27790 #if 14 <= VULKAN_HPP_CPP_VERSION
27791     auto
27792 #else
27793     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
27794 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT27795       reflect() const VULKAN_HPP_NOEXCEPT
27796     {
27797       return std::tie( sType, pNext, advancedBlendMaxColorAttachments, advancedBlendIndependentBlend, advancedBlendNonPremultipliedSrcColor, advancedBlendNonPremultipliedDstColor, advancedBlendCorrelatedOverlap, advancedBlendAllOperations );
27798     }
27799 #endif
27800 
27801 
27802 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27803 auto operator<=>( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & ) const = default;
27804 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT27805     bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27806     {
27807 #if defined( VULKAN_HPP_USE_REFLECT )
27808       return this->reflect() == rhs.reflect();
27809 #else
27810       return ( sType == rhs.sType )
27811           && ( pNext == rhs.pNext )
27812           && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
27813           && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
27814           && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
27815           && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
27816           && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
27817           && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
27818 #endif
27819     }
27820 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT27821     bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
27822     {
27823       return !operator==( rhs );
27824     }
27825 #endif
27826 
27827     public:
27828     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
27829     void * pNext = {};
27830     uint32_t advancedBlendMaxColorAttachments = {};
27831     VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend = {};
27832     VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor = {};
27833     VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor = {};
27834     VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap = {};
27835     VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations = {};
27836 
27837   };
27838 
27839   template <>
27840   struct CppType<StructureType, StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT>
27841   {
27842     using Type = PhysicalDeviceBlendOperationAdvancedPropertiesEXT;
27843   };
27844 
27845   struct PhysicalDeviceBufferDeviceAddressFeatures
27846   {
27847     using NativeType = VkPhysicalDeviceBufferDeviceAddressFeatures;
27848 
27849     static const bool allowDuplicate = false;
27850     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
27851 
27852 
27853 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceBufferDeviceAddressFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27854 VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures(VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27855     : pNext( pNext_ ), bufferDeviceAddress( bufferDeviceAddress_ ), bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ ), bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ )
27856     {}
27857 
27858     VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27859 
PhysicalDeviceBufferDeviceAddressFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27860     PhysicalDeviceBufferDeviceAddressFeatures( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
27861       : PhysicalDeviceBufferDeviceAddressFeatures( *reinterpret_cast<PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs ) )
27862     {}
27863 
27864 
27865     PhysicalDeviceBufferDeviceAddressFeatures & operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27866 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27867 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27868     PhysicalDeviceBufferDeviceAddressFeatures & operator=( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
27869     {
27870       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures const *>( &rhs );
27871       return *this;
27872     }
27873 
27874 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27875     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27876     {
27877       pNext = pNext_;
27878       return *this;
27879     }
27880 
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27881     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
27882     {
27883       bufferDeviceAddress = bufferDeviceAddress_;
27884       return *this;
27885     }
27886 
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27887     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
27888     {
27889       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
27890       return *this;
27891     }
27892 
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27893     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
27894     {
27895       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
27896       return *this;
27897     }
27898 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
27899 
27900 
operator VkPhysicalDeviceBufferDeviceAddressFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27901     operator VkPhysicalDeviceBufferDeviceAddressFeatures const &() const VULKAN_HPP_NOEXCEPT
27902     {
27903       return *reinterpret_cast<const VkPhysicalDeviceBufferDeviceAddressFeatures*>( this );
27904     }
27905 
operator VkPhysicalDeviceBufferDeviceAddressFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27906     operator VkPhysicalDeviceBufferDeviceAddressFeatures &() VULKAN_HPP_NOEXCEPT
27907     {
27908       return *reinterpret_cast<VkPhysicalDeviceBufferDeviceAddressFeatures*>( this );
27909     }
27910 
27911 #if defined( VULKAN_HPP_USE_REFLECT )
27912 #if 14 <= VULKAN_HPP_CPP_VERSION
27913     auto
27914 #else
27915     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
27916 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27917       reflect() const VULKAN_HPP_NOEXCEPT
27918     {
27919       return std::tie( sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice );
27920     }
27921 #endif
27922 
27923 
27924 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
27925 auto operator<=>( PhysicalDeviceBufferDeviceAddressFeatures const & ) const = default;
27926 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27927     bool operator==( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
27928     {
27929 #if defined( VULKAN_HPP_USE_REFLECT )
27930       return this->reflect() == rhs.reflect();
27931 #else
27932       return ( sType == rhs.sType )
27933           && ( pNext == rhs.pNext )
27934           && ( bufferDeviceAddress == rhs.bufferDeviceAddress )
27935           && ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay )
27936           && ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice );
27937 #endif
27938     }
27939 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures27940     bool operator!=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
27941     {
27942       return !operator==( rhs );
27943     }
27944 #endif
27945 
27946     public:
27947     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures;
27948     void * pNext = {};
27949     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {};
27950     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {};
27951     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice = {};
27952 
27953   };
27954 
27955   template <>
27956   struct CppType<StructureType, StructureType::ePhysicalDeviceBufferDeviceAddressFeatures>
27957   {
27958     using Type = PhysicalDeviceBufferDeviceAddressFeatures;
27959   };
27960   using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures;
27961 
27962   struct PhysicalDeviceColorWriteEnableFeaturesEXT
27963   {
27964     using NativeType = VkPhysicalDeviceColorWriteEnableFeaturesEXT;
27965 
27966     static const bool allowDuplicate = false;
27967     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT;
27968 
27969 
27970 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceColorWriteEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT27971 VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
27972     : pNext( pNext_ ), colorWriteEnable( colorWriteEnable_ )
27973     {}
27974 
27975     VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27976 
PhysicalDeviceColorWriteEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT27977     PhysicalDeviceColorWriteEnableFeaturesEXT( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27978       : PhysicalDeviceColorWriteEnableFeaturesEXT( *reinterpret_cast<PhysicalDeviceColorWriteEnableFeaturesEXT const *>( &rhs ) )
27979     {}
27980 
27981 
27982     PhysicalDeviceColorWriteEnableFeaturesEXT & operator=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
27983 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
27984 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT27985     PhysicalDeviceColorWriteEnableFeaturesEXT & operator=( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
27986     {
27987       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT const *>( &rhs );
27988       return *this;
27989     }
27990 
27991 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT27992     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
27993     {
27994       pNext = pNext_;
27995       return *this;
27996     }
27997 
setColorWriteEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT27998     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & setColorWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable_ ) VULKAN_HPP_NOEXCEPT
27999     {
28000       colorWriteEnable = colorWriteEnable_;
28001       return *this;
28002     }
28003 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28004 
28005 
operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT28006     operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
28007     {
28008       return *reinterpret_cast<const VkPhysicalDeviceColorWriteEnableFeaturesEXT*>( this );
28009     }
28010 
operator VkPhysicalDeviceColorWriteEnableFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT28011     operator VkPhysicalDeviceColorWriteEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT
28012     {
28013       return *reinterpret_cast<VkPhysicalDeviceColorWriteEnableFeaturesEXT*>( this );
28014     }
28015 
28016 #if defined( VULKAN_HPP_USE_REFLECT )
28017 #if 14 <= VULKAN_HPP_CPP_VERSION
28018     auto
28019 #else
28020     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
28021 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT28022       reflect() const VULKAN_HPP_NOEXCEPT
28023     {
28024       return std::tie( sType, pNext, colorWriteEnable );
28025     }
28026 #endif
28027 
28028 
28029 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28030 auto operator<=>( PhysicalDeviceColorWriteEnableFeaturesEXT const & ) const = default;
28031 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT28032     bool operator==( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28033     {
28034 #if defined( VULKAN_HPP_USE_REFLECT )
28035       return this->reflect() == rhs.reflect();
28036 #else
28037       return ( sType == rhs.sType )
28038           && ( pNext == rhs.pNext )
28039           && ( colorWriteEnable == rhs.colorWriteEnable );
28040 #endif
28041     }
28042 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT28043     bool operator!=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28044     {
28045       return !operator==( rhs );
28046     }
28047 #endif
28048 
28049     public:
28050     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT;
28051     void * pNext = {};
28052     VULKAN_HPP_NAMESPACE::Bool32 colorWriteEnable = {};
28053 
28054   };
28055 
28056   template <>
28057   struct CppType<StructureType, StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT>
28058   {
28059     using Type = PhysicalDeviceColorWriteEnableFeaturesEXT;
28060   };
28061 
28062   struct PhysicalDeviceConservativeRasterizationPropertiesEXT
28063   {
28064     using NativeType = VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
28065 
28066     static const bool allowDuplicate = false;
28067     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
28068 
28069 
28070 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceConservativeRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT28071 VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT(float primitiveOverestimationSize_ = {}, float maxExtraPrimitiveOverestimationSize_ = {}, float extraPrimitiveOverestimationSizeGranularity_ = {}, VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation_ = {}, VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization_ = {}, VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized_ = {}, VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
28072     : pNext( pNext_ ), primitiveOverestimationSize( primitiveOverestimationSize_ ), maxExtraPrimitiveOverestimationSize( maxExtraPrimitiveOverestimationSize_ ), extraPrimitiveOverestimationSizeGranularity( extraPrimitiveOverestimationSizeGranularity_ ), primitiveUnderestimation( primitiveUnderestimation_ ), conservativePointAndLineRasterization( conservativePointAndLineRasterization_ ), degenerateTrianglesRasterized( degenerateTrianglesRasterized_ ), degenerateLinesRasterized( degenerateLinesRasterized_ ), fullyCoveredFragmentShaderInputVariable( fullyCoveredFragmentShaderInputVariable_ ), conservativeRasterizationPostDepthCoverage( conservativeRasterizationPostDepthCoverage_ )
28073     {}
28074 
28075     VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28076 
PhysicalDeviceConservativeRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT28077     PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28078       : PhysicalDeviceConservativeRasterizationPropertiesEXT( *reinterpret_cast<PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs ) )
28079     {}
28080 
28081 
28082     PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28083 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28084 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT28085     PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28086     {
28087       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT const *>( &rhs );
28088       return *this;
28089     }
28090 
28091 
operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT28092     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
28093     {
28094       return *reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>( this );
28095     }
28096 
operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT28097     operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT
28098     {
28099       return *reinterpret_cast<VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>( this );
28100     }
28101 
28102 #if defined( VULKAN_HPP_USE_REFLECT )
28103 #if 14 <= VULKAN_HPP_CPP_VERSION
28104     auto
28105 #else
28106     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, float const &, float const &, float const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
28107 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT28108       reflect() const VULKAN_HPP_NOEXCEPT
28109     {
28110       return std::tie( sType, pNext, primitiveOverestimationSize, maxExtraPrimitiveOverestimationSize, extraPrimitiveOverestimationSizeGranularity, primitiveUnderestimation, conservativePointAndLineRasterization, degenerateTrianglesRasterized, degenerateLinesRasterized, fullyCoveredFragmentShaderInputVariable, conservativeRasterizationPostDepthCoverage );
28111     }
28112 #endif
28113 
28114 
28115 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28116 auto operator<=>( PhysicalDeviceConservativeRasterizationPropertiesEXT const & ) const = default;
28117 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT28118     bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28119     {
28120 #if defined( VULKAN_HPP_USE_REFLECT )
28121       return this->reflect() == rhs.reflect();
28122 #else
28123       return ( sType == rhs.sType )
28124           && ( pNext == rhs.pNext )
28125           && ( primitiveOverestimationSize == rhs.primitiveOverestimationSize )
28126           && ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize )
28127           && ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity )
28128           && ( primitiveUnderestimation == rhs.primitiveUnderestimation )
28129           && ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization )
28130           && ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized )
28131           && ( degenerateLinesRasterized == rhs.degenerateLinesRasterized )
28132           && ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable )
28133           && ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage );
28134 #endif
28135     }
28136 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT28137     bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28138     {
28139       return !operator==( rhs );
28140     }
28141 #endif
28142 
28143     public:
28144     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
28145     void * pNext = {};
28146     float primitiveOverestimationSize = {};
28147     float maxExtraPrimitiveOverestimationSize = {};
28148     float extraPrimitiveOverestimationSizeGranularity = {};
28149     VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation = {};
28150     VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization = {};
28151     VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized = {};
28152     VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized = {};
28153     VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable = {};
28154     VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage = {};
28155 
28156   };
28157 
28158   template <>
28159   struct CppType<StructureType, StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT>
28160   {
28161     using Type = PhysicalDeviceConservativeRasterizationPropertiesEXT;
28162   };
28163 
28164   struct PhysicalDeviceCustomBorderColorFeaturesEXT
28165   {
28166     using NativeType = VkPhysicalDeviceCustomBorderColorFeaturesEXT;
28167 
28168     static const bool allowDuplicate = false;
28169     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
28170 
28171 
28172 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCustomBorderColorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28173 VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ = {}, VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
28174     : pNext( pNext_ ), customBorderColors( customBorderColors_ ), customBorderColorWithoutFormat( customBorderColorWithoutFormat_ )
28175     {}
28176 
28177     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28178 
PhysicalDeviceCustomBorderColorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28179     PhysicalDeviceCustomBorderColorFeaturesEXT( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28180       : PhysicalDeviceCustomBorderColorFeaturesEXT( *reinterpret_cast<PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs ) )
28181     {}
28182 
28183 
28184     PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28185 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28186 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28187     PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28188     {
28189       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT const *>( &rhs );
28190       return *this;
28191     }
28192 
28193 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28194     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
28195     {
28196       pNext = pNext_;
28197       return *this;
28198     }
28199 
setCustomBorderColorsVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28200     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setCustomBorderColors( VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ ) VULKAN_HPP_NOEXCEPT
28201     {
28202       customBorderColors = customBorderColors_;
28203       return *this;
28204     }
28205 
setCustomBorderColorWithoutFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28206     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setCustomBorderColorWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ ) VULKAN_HPP_NOEXCEPT
28207     {
28208       customBorderColorWithoutFormat = customBorderColorWithoutFormat_;
28209       return *this;
28210     }
28211 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28212 
28213 
operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28214     operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
28215     {
28216       return *reinterpret_cast<const VkPhysicalDeviceCustomBorderColorFeaturesEXT*>( this );
28217     }
28218 
operator VkPhysicalDeviceCustomBorderColorFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28219     operator VkPhysicalDeviceCustomBorderColorFeaturesEXT &() VULKAN_HPP_NOEXCEPT
28220     {
28221       return *reinterpret_cast<VkPhysicalDeviceCustomBorderColorFeaturesEXT*>( this );
28222     }
28223 
28224 #if defined( VULKAN_HPP_USE_REFLECT )
28225 #if 14 <= VULKAN_HPP_CPP_VERSION
28226     auto
28227 #else
28228     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
28229 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28230       reflect() const VULKAN_HPP_NOEXCEPT
28231     {
28232       return std::tie( sType, pNext, customBorderColors, customBorderColorWithoutFormat );
28233     }
28234 #endif
28235 
28236 
28237 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28238 auto operator<=>( PhysicalDeviceCustomBorderColorFeaturesEXT const & ) const = default;
28239 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28240     bool operator==( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28241     {
28242 #if defined( VULKAN_HPP_USE_REFLECT )
28243       return this->reflect() == rhs.reflect();
28244 #else
28245       return ( sType == rhs.sType )
28246           && ( pNext == rhs.pNext )
28247           && ( customBorderColors == rhs.customBorderColors )
28248           && ( customBorderColorWithoutFormat == rhs.customBorderColorWithoutFormat );
28249 #endif
28250     }
28251 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT28252     bool operator!=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28253     {
28254       return !operator==( rhs );
28255     }
28256 #endif
28257 
28258     public:
28259     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT;
28260     void * pNext = {};
28261     VULKAN_HPP_NAMESPACE::Bool32 customBorderColors = {};
28262     VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat = {};
28263 
28264   };
28265 
28266   template <>
28267   struct CppType<StructureType, StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT>
28268   {
28269     using Type = PhysicalDeviceCustomBorderColorFeaturesEXT;
28270   };
28271 
28272   struct PhysicalDeviceCustomBorderColorPropertiesEXT
28273   {
28274     using NativeType = VkPhysicalDeviceCustomBorderColorPropertiesEXT;
28275 
28276     static const bool allowDuplicate = false;
28277     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
28278 
28279 
28280 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceCustomBorderColorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT28281 VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT(uint32_t maxCustomBorderColorSamplers_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
28282     : pNext( pNext_ ), maxCustomBorderColorSamplers( maxCustomBorderColorSamplers_ )
28283     {}
28284 
28285     VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28286 
PhysicalDeviceCustomBorderColorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT28287     PhysicalDeviceCustomBorderColorPropertiesEXT( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28288       : PhysicalDeviceCustomBorderColorPropertiesEXT( *reinterpret_cast<PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs ) )
28289     {}
28290 
28291 
28292     PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28293 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28294 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT28295     PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28296     {
28297       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT const *>( &rhs );
28298       return *this;
28299     }
28300 
28301 
operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT28302     operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
28303     {
28304       return *reinterpret_cast<const VkPhysicalDeviceCustomBorderColorPropertiesEXT*>( this );
28305     }
28306 
operator VkPhysicalDeviceCustomBorderColorPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT28307     operator VkPhysicalDeviceCustomBorderColorPropertiesEXT &() VULKAN_HPP_NOEXCEPT
28308     {
28309       return *reinterpret_cast<VkPhysicalDeviceCustomBorderColorPropertiesEXT*>( this );
28310     }
28311 
28312 #if defined( VULKAN_HPP_USE_REFLECT )
28313 #if 14 <= VULKAN_HPP_CPP_VERSION
28314     auto
28315 #else
28316     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
28317 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT28318       reflect() const VULKAN_HPP_NOEXCEPT
28319     {
28320       return std::tie( sType, pNext, maxCustomBorderColorSamplers );
28321     }
28322 #endif
28323 
28324 
28325 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28326 auto operator<=>( PhysicalDeviceCustomBorderColorPropertiesEXT const & ) const = default;
28327 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT28328     bool operator==( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28329     {
28330 #if defined( VULKAN_HPP_USE_REFLECT )
28331       return this->reflect() == rhs.reflect();
28332 #else
28333       return ( sType == rhs.sType )
28334           && ( pNext == rhs.pNext )
28335           && ( maxCustomBorderColorSamplers == rhs.maxCustomBorderColorSamplers );
28336 #endif
28337     }
28338 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT28339     bool operator!=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28340     {
28341       return !operator==( rhs );
28342     }
28343 #endif
28344 
28345     public:
28346     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT;
28347     void * pNext = {};
28348     uint32_t maxCustomBorderColorSamplers = {};
28349 
28350   };
28351 
28352   template <>
28353   struct CppType<StructureType, StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT>
28354   {
28355     using Type = PhysicalDeviceCustomBorderColorPropertiesEXT;
28356   };
28357 
28358   struct PhysicalDeviceDepthClipEnableFeaturesEXT
28359   {
28360     using NativeType = VkPhysicalDeviceDepthClipEnableFeaturesEXT;
28361 
28362     static const bool allowDuplicate = false;
28363     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
28364 
28365 
28366 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthClipEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28367 VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
28368     : pNext( pNext_ ), depthClipEnable( depthClipEnable_ )
28369     {}
28370 
28371     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28372 
PhysicalDeviceDepthClipEnableFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28373     PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28374       : PhysicalDeviceDepthClipEnableFeaturesEXT( *reinterpret_cast<PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs ) )
28375     {}
28376 
28377 
28378     PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28379 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28380 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28381     PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28382     {
28383       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT const *>( &rhs );
28384       return *this;
28385     }
28386 
28387 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28388     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
28389     {
28390       pNext = pNext_;
28391       return *this;
28392     }
28393 
setDepthClipEnableVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28394     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT
28395     {
28396       depthClipEnable = depthClipEnable_;
28397       return *this;
28398     }
28399 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28400 
28401 
operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28402     operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
28403     {
28404       return *reinterpret_cast<const VkPhysicalDeviceDepthClipEnableFeaturesEXT*>( this );
28405     }
28406 
operator VkPhysicalDeviceDepthClipEnableFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28407     operator VkPhysicalDeviceDepthClipEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT
28408     {
28409       return *reinterpret_cast<VkPhysicalDeviceDepthClipEnableFeaturesEXT*>( this );
28410     }
28411 
28412 #if defined( VULKAN_HPP_USE_REFLECT )
28413 #if 14 <= VULKAN_HPP_CPP_VERSION
28414     auto
28415 #else
28416     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
28417 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28418       reflect() const VULKAN_HPP_NOEXCEPT
28419     {
28420       return std::tie( sType, pNext, depthClipEnable );
28421     }
28422 #endif
28423 
28424 
28425 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28426 auto operator<=>( PhysicalDeviceDepthClipEnableFeaturesEXT const & ) const = default;
28427 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28428     bool operator==( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28429     {
28430 #if defined( VULKAN_HPP_USE_REFLECT )
28431       return this->reflect() == rhs.reflect();
28432 #else
28433       return ( sType == rhs.sType )
28434           && ( pNext == rhs.pNext )
28435           && ( depthClipEnable == rhs.depthClipEnable );
28436 #endif
28437     }
28438 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT28439     bool operator!=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28440     {
28441       return !operator==( rhs );
28442     }
28443 #endif
28444 
28445     public:
28446     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT;
28447     void * pNext = {};
28448     VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable = {};
28449 
28450   };
28451 
28452   template <>
28453   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT>
28454   {
28455     using Type = PhysicalDeviceDepthClipEnableFeaturesEXT;
28456   };
28457 
28458   struct PhysicalDeviceDepthStencilResolveProperties
28459   {
28460     using NativeType = VkPhysicalDeviceDepthStencilResolveProperties;
28461 
28462     static const bool allowDuplicate = false;
28463     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
28464 
28465 
28466 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDepthStencilResolvePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties28467 VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties(VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_ = {}, VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentResolve_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
28468     : pNext( pNext_ ), supportedDepthResolveModes( supportedDepthResolveModes_ ), supportedStencilResolveModes( supportedStencilResolveModes_ ), independentResolveNone( independentResolveNone_ ), independentResolve( independentResolve_ )
28469     {}
28470 
28471     VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28472 
PhysicalDeviceDepthStencilResolvePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties28473     PhysicalDeviceDepthStencilResolveProperties( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28474       : PhysicalDeviceDepthStencilResolveProperties( *reinterpret_cast<PhysicalDeviceDepthStencilResolveProperties const *>( &rhs ) )
28475     {}
28476 
28477 
28478     PhysicalDeviceDepthStencilResolveProperties & operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28479 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28480 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties28481     PhysicalDeviceDepthStencilResolveProperties & operator=( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28482     {
28483       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties const *>( &rhs );
28484       return *this;
28485     }
28486 
28487 
operator VkPhysicalDeviceDepthStencilResolveProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties28488     operator VkPhysicalDeviceDepthStencilResolveProperties const &() const VULKAN_HPP_NOEXCEPT
28489     {
28490       return *reinterpret_cast<const VkPhysicalDeviceDepthStencilResolveProperties*>( this );
28491     }
28492 
operator VkPhysicalDeviceDepthStencilResolveProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties28493     operator VkPhysicalDeviceDepthStencilResolveProperties &() VULKAN_HPP_NOEXCEPT
28494     {
28495       return *reinterpret_cast<VkPhysicalDeviceDepthStencilResolveProperties*>( this );
28496     }
28497 
28498 #if defined( VULKAN_HPP_USE_REFLECT )
28499 #if 14 <= VULKAN_HPP_CPP_VERSION
28500     auto
28501 #else
28502     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ResolveModeFlags const &, VULKAN_HPP_NAMESPACE::ResolveModeFlags const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
28503 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties28504       reflect() const VULKAN_HPP_NOEXCEPT
28505     {
28506       return std::tie( sType, pNext, supportedDepthResolveModes, supportedStencilResolveModes, independentResolveNone, independentResolve );
28507     }
28508 #endif
28509 
28510 
28511 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28512 auto operator<=>( PhysicalDeviceDepthStencilResolveProperties const & ) const = default;
28513 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties28514     bool operator==( PhysicalDeviceDepthStencilResolveProperties 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 )
28520           && ( pNext == rhs.pNext )
28521           && ( supportedDepthResolveModes == rhs.supportedDepthResolveModes )
28522           && ( supportedStencilResolveModes == rhs.supportedStencilResolveModes )
28523           && ( independentResolveNone == rhs.independentResolveNone )
28524           && ( independentResolve == rhs.independentResolve );
28525 #endif
28526     }
28527 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties28528     bool operator!=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28529     {
28530       return !operator==( rhs );
28531     }
28532 #endif
28533 
28534     public:
28535     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthStencilResolveProperties;
28536     void * pNext = {};
28537     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes = {};
28538     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {};
28539     VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone = {};
28540     VULKAN_HPP_NAMESPACE::Bool32 independentResolve = {};
28541 
28542   };
28543 
28544   template <>
28545   struct CppType<StructureType, StructureType::ePhysicalDeviceDepthStencilResolveProperties>
28546   {
28547     using Type = PhysicalDeviceDepthStencilResolveProperties;
28548   };
28549   using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties;
28550 
28551   struct PhysicalDeviceDescriptorIndexingFeatures
28552   {
28553     using NativeType = VkPhysicalDeviceDescriptorIndexingFeatures;
28554 
28555     static const bool allowDuplicate = false;
28556     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
28557 
28558 
28559 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorIndexingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28560 VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ = {}, VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
28561     : pNext( pNext_ ), shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ ), shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ ), shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ ), shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ ), shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ ), shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ ), shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ ), shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ ), shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ ), shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ ), descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ ), descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ ), descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ ), descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ ), descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ ), descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ ), descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ ), descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ ), descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ ), runtimeDescriptorArray( runtimeDescriptorArray_ )
28562     {}
28563 
28564     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28565 
PhysicalDeviceDescriptorIndexingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28566     PhysicalDeviceDescriptorIndexingFeatures( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
28567       : PhysicalDeviceDescriptorIndexingFeatures( *reinterpret_cast<PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs ) )
28568     {}
28569 
28570 
28571     PhysicalDeviceDescriptorIndexingFeatures & operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28572 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28573 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28574     PhysicalDeviceDescriptorIndexingFeatures & operator=( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
28575     {
28576       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures const *>( &rhs );
28577       return *this;
28578     }
28579 
28580 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28581     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
28582     {
28583       pNext = pNext_;
28584       return *this;
28585     }
28586 
setShaderInputAttachmentArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28587     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderInputAttachmentArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
28588     {
28589       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
28590       return *this;
28591     }
28592 
setShaderUniformTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28593     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
28594     {
28595       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
28596       return *this;
28597     }
28598 
setShaderStorageTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28599     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
28600     {
28601       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
28602       return *this;
28603     }
28604 
setShaderUniformBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28605     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
28606     {
28607       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
28608       return *this;
28609     }
28610 
setShaderSampledImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28611     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderSampledImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
28612     {
28613       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
28614       return *this;
28615     }
28616 
setShaderStorageBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28617     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
28618     {
28619       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
28620       return *this;
28621     }
28622 
setShaderStorageImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28623     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
28624     {
28625       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
28626       return *this;
28627     }
28628 
setShaderInputAttachmentArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28629     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderInputAttachmentArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
28630     {
28631       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
28632       return *this;
28633     }
28634 
setShaderUniformTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28635     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
28636     {
28637       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
28638       return *this;
28639     }
28640 
setShaderStorageTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28641     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
28642     {
28643       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
28644       return *this;
28645     }
28646 
setDescriptorBindingUniformBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28647     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUniformBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
28648     {
28649       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
28650       return *this;
28651     }
28652 
setDescriptorBindingSampledImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28653     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingSampledImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
28654     {
28655       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
28656       return *this;
28657     }
28658 
setDescriptorBindingStorageImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28659     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
28660     {
28661       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
28662       return *this;
28663     }
28664 
setDescriptorBindingStorageBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28665     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
28666     {
28667       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
28668       return *this;
28669     }
28670 
setDescriptorBindingUniformTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28671     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUniformTexelBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
28672     {
28673       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
28674       return *this;
28675     }
28676 
setDescriptorBindingStorageTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28677     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageTexelBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
28678     {
28679       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
28680       return *this;
28681     }
28682 
setDescriptorBindingUpdateUnusedWhilePendingVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28683     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUpdateUnusedWhilePending( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT
28684     {
28685       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
28686       return *this;
28687     }
28688 
setDescriptorBindingPartiallyBoundVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28689     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingPartiallyBound( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT
28690     {
28691       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
28692       return *this;
28693     }
28694 
setDescriptorBindingVariableDescriptorCountVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28695     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingVariableDescriptorCount( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT
28696     {
28697       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
28698       return *this;
28699     }
28700 
setRuntimeDescriptorArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28701     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT
28702     {
28703       runtimeDescriptorArray = runtimeDescriptorArray_;
28704       return *this;
28705     }
28706 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
28707 
28708 
operator VkPhysicalDeviceDescriptorIndexingFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28709     operator VkPhysicalDeviceDescriptorIndexingFeatures const &() const VULKAN_HPP_NOEXCEPT
28710     {
28711       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingFeatures*>( this );
28712     }
28713 
operator VkPhysicalDeviceDescriptorIndexingFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28714     operator VkPhysicalDeviceDescriptorIndexingFeatures &() VULKAN_HPP_NOEXCEPT
28715     {
28716       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingFeatures*>( this );
28717     }
28718 
28719 #if defined( VULKAN_HPP_USE_REFLECT )
28720 #if 14 <= VULKAN_HPP_CPP_VERSION
28721     auto
28722 #else
28723     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
28724 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28725       reflect() const VULKAN_HPP_NOEXCEPT
28726     {
28727       return std::tie( sType, pNext, shaderInputAttachmentArrayDynamicIndexing, shaderUniformTexelBufferArrayDynamicIndexing, shaderStorageTexelBufferArrayDynamicIndexing, shaderUniformBufferArrayNonUniformIndexing, shaderSampledImageArrayNonUniformIndexing, shaderStorageBufferArrayNonUniformIndexing, shaderStorageImageArrayNonUniformIndexing, shaderInputAttachmentArrayNonUniformIndexing, shaderUniformTexelBufferArrayNonUniformIndexing, shaderStorageTexelBufferArrayNonUniformIndexing, descriptorBindingUniformBufferUpdateAfterBind, descriptorBindingSampledImageUpdateAfterBind, descriptorBindingStorageImageUpdateAfterBind, descriptorBindingStorageBufferUpdateAfterBind, descriptorBindingUniformTexelBufferUpdateAfterBind, descriptorBindingStorageTexelBufferUpdateAfterBind, descriptorBindingUpdateUnusedWhilePending, descriptorBindingPartiallyBound, descriptorBindingVariableDescriptorCount, runtimeDescriptorArray );
28728     }
28729 #endif
28730 
28731 
28732 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28733 auto operator<=>( PhysicalDeviceDescriptorIndexingFeatures const & ) const = default;
28734 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28735     bool operator==( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
28736     {
28737 #if defined( VULKAN_HPP_USE_REFLECT )
28738       return this->reflect() == rhs.reflect();
28739 #else
28740       return ( sType == rhs.sType )
28741           && ( pNext == rhs.pNext )
28742           && ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing )
28743           && ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing )
28744           && ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing )
28745           && ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing )
28746           && ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing )
28747           && ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing )
28748           && ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing )
28749           && ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing )
28750           && ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing )
28751           && ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing )
28752           && ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind )
28753           && ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind )
28754           && ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind )
28755           && ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind )
28756           && ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind )
28757           && ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind )
28758           && ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending )
28759           && ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound )
28760           && ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount )
28761           && ( runtimeDescriptorArray == rhs.runtimeDescriptorArray );
28762 #endif
28763     }
28764 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures28765     bool operator!=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
28766     {
28767       return !operator==( rhs );
28768     }
28769 #endif
28770 
28771     public:
28772     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures;
28773     void * pNext = {};
28774     VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing = {};
28775     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {};
28776     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing = {};
28777     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing = {};
28778     VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing = {};
28779     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing = {};
28780     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing = {};
28781     VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing = {};
28782     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing = {};
28783     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing = {};
28784     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind = {};
28785     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind = {};
28786     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind = {};
28787     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind = {};
28788     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind = {};
28789     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind = {};
28790     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending = {};
28791     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound = {};
28792     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount = {};
28793     VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray = {};
28794 
28795   };
28796 
28797   template <>
28798   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorIndexingFeatures>
28799   {
28800     using Type = PhysicalDeviceDescriptorIndexingFeatures;
28801   };
28802   using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures;
28803 
28804   struct PhysicalDeviceDescriptorIndexingProperties
28805   {
28806     using NativeType = VkPhysicalDeviceDescriptorIndexingProperties;
28807 
28808     static const bool allowDuplicate = false;
28809     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
28810 
28811 
28812 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDescriptorIndexingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties28813 VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties(uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindSamplers_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {}, uint32_t maxPerStageUpdateAfterBindResources_ = {}, uint32_t maxDescriptorSetUpdateAfterBindSamplers_ = {}, uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers_ = {}, uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {}, uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers_ = {}, uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {}, uint32_t maxDescriptorSetUpdateAfterBindSampledImages_ = {}, uint32_t maxDescriptorSetUpdateAfterBindStorageImages_ = {}, uint32_t maxDescriptorSetUpdateAfterBindInputAttachments_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
28814     : pNext( pNext_ ), maxUpdateAfterBindDescriptorsInAllPools( maxUpdateAfterBindDescriptorsInAllPools_ ), shaderUniformBufferArrayNonUniformIndexingNative( shaderUniformBufferArrayNonUniformIndexingNative_ ), shaderSampledImageArrayNonUniformIndexingNative( shaderSampledImageArrayNonUniformIndexingNative_ ), shaderStorageBufferArrayNonUniformIndexingNative( shaderStorageBufferArrayNonUniformIndexingNative_ ), shaderStorageImageArrayNonUniformIndexingNative( shaderStorageImageArrayNonUniformIndexingNative_ ), shaderInputAttachmentArrayNonUniformIndexingNative( shaderInputAttachmentArrayNonUniformIndexingNative_ ), robustBufferAccessUpdateAfterBind( robustBufferAccessUpdateAfterBind_ ), quadDivergentImplicitLod( quadDivergentImplicitLod_ ), maxPerStageDescriptorUpdateAfterBindSamplers( maxPerStageDescriptorUpdateAfterBindSamplers_ ), maxPerStageDescriptorUpdateAfterBindUniformBuffers( maxPerStageDescriptorUpdateAfterBindUniformBuffers_ ), maxPerStageDescriptorUpdateAfterBindStorageBuffers( maxPerStageDescriptorUpdateAfterBindStorageBuffers_ ), maxPerStageDescriptorUpdateAfterBindSampledImages( maxPerStageDescriptorUpdateAfterBindSampledImages_ ), maxPerStageDescriptorUpdateAfterBindStorageImages( maxPerStageDescriptorUpdateAfterBindStorageImages_ ), maxPerStageDescriptorUpdateAfterBindInputAttachments( maxPerStageDescriptorUpdateAfterBindInputAttachments_ ), maxPerStageUpdateAfterBindResources( maxPerStageUpdateAfterBindResources_ ), maxDescriptorSetUpdateAfterBindSamplers( maxDescriptorSetUpdateAfterBindSamplers_ ), maxDescriptorSetUpdateAfterBindUniformBuffers( maxDescriptorSetUpdateAfterBindUniformBuffers_ ), maxDescriptorSetUpdateAfterBindUniformBuffersDynamic( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ ), maxDescriptorSetUpdateAfterBindStorageBuffers( maxDescriptorSetUpdateAfterBindStorageBuffers_ ), maxDescriptorSetUpdateAfterBindStorageBuffersDynamic( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ ), maxDescriptorSetUpdateAfterBindSampledImages( maxDescriptorSetUpdateAfterBindSampledImages_ ), maxDescriptorSetUpdateAfterBindStorageImages( maxDescriptorSetUpdateAfterBindStorageImages_ ), maxDescriptorSetUpdateAfterBindInputAttachments( maxDescriptorSetUpdateAfterBindInputAttachments_ )
28815     {}
28816 
28817     VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28818 
PhysicalDeviceDescriptorIndexingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties28819     PhysicalDeviceDescriptorIndexingProperties( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28820       : PhysicalDeviceDescriptorIndexingProperties( *reinterpret_cast<PhysicalDeviceDescriptorIndexingProperties const *>( &rhs ) )
28821     {}
28822 
28823 
28824     PhysicalDeviceDescriptorIndexingProperties & operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28825 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28826 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties28827     PhysicalDeviceDescriptorIndexingProperties & operator=( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
28828     {
28829       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties const *>( &rhs );
28830       return *this;
28831     }
28832 
28833 
operator VkPhysicalDeviceDescriptorIndexingProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties28834     operator VkPhysicalDeviceDescriptorIndexingProperties const &() const VULKAN_HPP_NOEXCEPT
28835     {
28836       return *reinterpret_cast<const VkPhysicalDeviceDescriptorIndexingProperties*>( this );
28837     }
28838 
operator VkPhysicalDeviceDescriptorIndexingProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties28839     operator VkPhysicalDeviceDescriptorIndexingProperties &() VULKAN_HPP_NOEXCEPT
28840     {
28841       return *reinterpret_cast<VkPhysicalDeviceDescriptorIndexingProperties*>( this );
28842     }
28843 
28844 #if defined( VULKAN_HPP_USE_REFLECT )
28845 #if 14 <= VULKAN_HPP_CPP_VERSION
28846     auto
28847 #else
28848     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
28849 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties28850       reflect() const VULKAN_HPP_NOEXCEPT
28851     {
28852       return std::tie( sType, pNext, maxUpdateAfterBindDescriptorsInAllPools, shaderUniformBufferArrayNonUniformIndexingNative, shaderSampledImageArrayNonUniformIndexingNative, shaderStorageBufferArrayNonUniformIndexingNative, shaderStorageImageArrayNonUniformIndexingNative, shaderInputAttachmentArrayNonUniformIndexingNative, robustBufferAccessUpdateAfterBind, quadDivergentImplicitLod, maxPerStageDescriptorUpdateAfterBindSamplers, maxPerStageDescriptorUpdateAfterBindUniformBuffers, maxPerStageDescriptorUpdateAfterBindStorageBuffers, maxPerStageDescriptorUpdateAfterBindSampledImages, maxPerStageDescriptorUpdateAfterBindStorageImages, maxPerStageDescriptorUpdateAfterBindInputAttachments, maxPerStageUpdateAfterBindResources, maxDescriptorSetUpdateAfterBindSamplers, maxDescriptorSetUpdateAfterBindUniformBuffers, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, maxDescriptorSetUpdateAfterBindStorageBuffers, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, maxDescriptorSetUpdateAfterBindSampledImages, maxDescriptorSetUpdateAfterBindStorageImages, maxDescriptorSetUpdateAfterBindInputAttachments );
28853     }
28854 #endif
28855 
28856 
28857 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28858 auto operator<=>( PhysicalDeviceDescriptorIndexingProperties const & ) const = default;
28859 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties28860     bool operator==( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28861     {
28862 #if defined( VULKAN_HPP_USE_REFLECT )
28863       return this->reflect() == rhs.reflect();
28864 #else
28865       return ( sType == rhs.sType )
28866           && ( pNext == rhs.pNext )
28867           && ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools )
28868           && ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative )
28869           && ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative )
28870           && ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative )
28871           && ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative )
28872           && ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative )
28873           && ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind )
28874           && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod )
28875           && ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers )
28876           && ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers )
28877           && ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers )
28878           && ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages )
28879           && ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages )
28880           && ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments )
28881           && ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources )
28882           && ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers )
28883           && ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers )
28884           && ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic )
28885           && ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers )
28886           && ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic )
28887           && ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages )
28888           && ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages )
28889           && ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments );
28890 #endif
28891     }
28892 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties28893     bool operator!=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
28894     {
28895       return !operator==( rhs );
28896     }
28897 #endif
28898 
28899     public:
28900     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingProperties;
28901     void * pNext = {};
28902     uint32_t maxUpdateAfterBindDescriptorsInAllPools = {};
28903     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {};
28904     VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative = {};
28905     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative = {};
28906     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative = {};
28907     VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative = {};
28908     VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind = {};
28909     VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod = {};
28910     uint32_t maxPerStageDescriptorUpdateAfterBindSamplers = {};
28911     uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers = {};
28912     uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers = {};
28913     uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages = {};
28914     uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages = {};
28915     uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments = {};
28916     uint32_t maxPerStageUpdateAfterBindResources = {};
28917     uint32_t maxDescriptorSetUpdateAfterBindSamplers = {};
28918     uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers = {};
28919     uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {};
28920     uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers = {};
28921     uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {};
28922     uint32_t maxDescriptorSetUpdateAfterBindSampledImages = {};
28923     uint32_t maxDescriptorSetUpdateAfterBindStorageImages = {};
28924     uint32_t maxDescriptorSetUpdateAfterBindInputAttachments = {};
28925 
28926   };
28927 
28928   template <>
28929   struct CppType<StructureType, StructureType::ePhysicalDeviceDescriptorIndexingProperties>
28930   {
28931     using Type = PhysicalDeviceDescriptorIndexingProperties;
28932   };
28933   using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties;
28934 
28935   struct PhysicalDeviceDiscardRectanglePropertiesEXT
28936   {
28937     using NativeType = VkPhysicalDeviceDiscardRectanglePropertiesEXT;
28938 
28939     static const bool allowDuplicate = false;
28940     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
28941 
28942 
28943 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDiscardRectanglePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT28944 VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT(uint32_t maxDiscardRectangles_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
28945     : pNext( pNext_ ), maxDiscardRectangles( maxDiscardRectangles_ )
28946     {}
28947 
28948     VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28949 
PhysicalDeviceDiscardRectanglePropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT28950     PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28951       : PhysicalDeviceDiscardRectanglePropertiesEXT( *reinterpret_cast<PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs ) )
28952     {}
28953 
28954 
28955     PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
28956 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
28957 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT28958     PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
28959     {
28960       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT const *>( &rhs );
28961       return *this;
28962     }
28963 
28964 
operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT28965     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
28966     {
28967       return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>( this );
28968     }
28969 
operator VkPhysicalDeviceDiscardRectanglePropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT28970     operator VkPhysicalDeviceDiscardRectanglePropertiesEXT &() VULKAN_HPP_NOEXCEPT
28971     {
28972       return *reinterpret_cast<VkPhysicalDeviceDiscardRectanglePropertiesEXT*>( this );
28973     }
28974 
28975 #if defined( VULKAN_HPP_USE_REFLECT )
28976 #if 14 <= VULKAN_HPP_CPP_VERSION
28977     auto
28978 #else
28979     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
28980 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT28981       reflect() const VULKAN_HPP_NOEXCEPT
28982     {
28983       return std::tie( sType, pNext, maxDiscardRectangles );
28984     }
28985 #endif
28986 
28987 
28988 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
28989 auto operator<=>( PhysicalDeviceDiscardRectanglePropertiesEXT const & ) const = default;
28990 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT28991     bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
28992     {
28993 #if defined( VULKAN_HPP_USE_REFLECT )
28994       return this->reflect() == rhs.reflect();
28995 #else
28996       return ( sType == rhs.sType )
28997           && ( pNext == rhs.pNext )
28998           && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
28999 #endif
29000     }
29001 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT29002     bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29003     {
29004       return !operator==( rhs );
29005     }
29006 #endif
29007 
29008     public:
29009     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
29010     void * pNext = {};
29011     uint32_t maxDiscardRectangles = {};
29012 
29013   };
29014 
29015   template <>
29016   struct CppType<StructureType, StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT>
29017   {
29018     using Type = PhysicalDeviceDiscardRectanglePropertiesEXT;
29019   };
29020 
29021   struct PhysicalDeviceDriverProperties
29022   {
29023     using NativeType = VkPhysicalDeviceDriverProperties;
29024 
29025     static const bool allowDuplicate = false;
29026     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDriverProperties;
29027 
29028 
29029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties29030 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties(VULKAN_HPP_NAMESPACE::DriverId driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary, std::array<char,VK_MAX_DRIVER_NAME_SIZE> const & driverName_ = {}, std::array<char,VK_MAX_DRIVER_INFO_SIZE> const & driverInfo_ = {}, VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29031     : pNext( pNext_ ), driverID( driverID_ ), driverName( driverName_ ), driverInfo( driverInfo_ ), conformanceVersion( conformanceVersion_ )
29032     {}
29033 
29034     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29035 
PhysicalDeviceDriverPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties29036     PhysicalDeviceDriverProperties( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
29037       : PhysicalDeviceDriverProperties( *reinterpret_cast<PhysicalDeviceDriverProperties const *>( &rhs ) )
29038     {}
29039 
29040 
29041     PhysicalDeviceDriverProperties & operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29042 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29043 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties29044     PhysicalDeviceDriverProperties & operator=( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT
29045     {
29046       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties const *>( &rhs );
29047       return *this;
29048     }
29049 
29050 
operator VkPhysicalDeviceDriverProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties29051     operator VkPhysicalDeviceDriverProperties const &() const VULKAN_HPP_NOEXCEPT
29052     {
29053       return *reinterpret_cast<const VkPhysicalDeviceDriverProperties*>( this );
29054     }
29055 
operator VkPhysicalDeviceDriverProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties29056     operator VkPhysicalDeviceDriverProperties &() VULKAN_HPP_NOEXCEPT
29057     {
29058       return *reinterpret_cast<VkPhysicalDeviceDriverProperties*>( this );
29059     }
29060 
29061 #if defined( VULKAN_HPP_USE_REFLECT )
29062 #if 14 <= VULKAN_HPP_CPP_VERSION
29063     auto
29064 #else
29065     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DriverId const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> const &, VULKAN_HPP_NAMESPACE::ConformanceVersion const &>
29066 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties29067       reflect() const VULKAN_HPP_NOEXCEPT
29068     {
29069       return std::tie( sType, pNext, driverID, driverName, driverInfo, conformanceVersion );
29070     }
29071 #endif
29072 
29073 
29074 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29075 auto operator<=>( PhysicalDeviceDriverProperties const & ) const = default;
29076 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties29077     bool operator==( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
29078     {
29079 #if defined( VULKAN_HPP_USE_REFLECT )
29080       return this->reflect() == rhs.reflect();
29081 #else
29082       return ( sType == rhs.sType )
29083           && ( pNext == rhs.pNext )
29084           && ( driverID == rhs.driverID )
29085           && ( driverName == rhs.driverName )
29086           && ( driverInfo == rhs.driverInfo )
29087           && ( conformanceVersion == rhs.conformanceVersion );
29088 #endif
29089     }
29090 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties29091     bool operator!=( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
29092     {
29093       return !operator==( rhs );
29094     }
29095 #endif
29096 
29097     public:
29098     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDriverProperties;
29099     void * pNext = {};
29100     VULKAN_HPP_NAMESPACE::DriverId driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
29101     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName = {};
29102     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> driverInfo = {};
29103     VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion = {};
29104 
29105   };
29106 
29107   template <>
29108   struct CppType<StructureType, StructureType::ePhysicalDeviceDriverProperties>
29109   {
29110     using Type = PhysicalDeviceDriverProperties;
29111   };
29112   using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties;
29113 
29114   struct PhysicalDeviceDynamicRenderingFeatures
29115   {
29116     using NativeType = VkPhysicalDeviceDynamicRenderingFeatures;
29117 
29118     static const bool allowDuplicate = false;
29119     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDynamicRenderingFeatures;
29120 
29121 
29122 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceDynamicRenderingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29123 VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures(VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29124     : pNext( pNext_ ), dynamicRendering( dynamicRendering_ )
29125     {}
29126 
29127     VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29128 
PhysicalDeviceDynamicRenderingFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29129     PhysicalDeviceDynamicRenderingFeatures( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
29130       : PhysicalDeviceDynamicRenderingFeatures( *reinterpret_cast<PhysicalDeviceDynamicRenderingFeatures const *>( &rhs ) )
29131     {}
29132 
29133 
29134     PhysicalDeviceDynamicRenderingFeatures & operator=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29135 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29136 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29137     PhysicalDeviceDynamicRenderingFeatures & operator=( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
29138     {
29139       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures const *>( &rhs );
29140       return *this;
29141     }
29142 
29143 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29144     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
29145     {
29146       pNext = pNext_;
29147       return *this;
29148     }
29149 
setDynamicRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29150     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT
29151     {
29152       dynamicRendering = dynamicRendering_;
29153       return *this;
29154     }
29155 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29156 
29157 
operator VkPhysicalDeviceDynamicRenderingFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29158     operator VkPhysicalDeviceDynamicRenderingFeatures const &() const VULKAN_HPP_NOEXCEPT
29159     {
29160       return *reinterpret_cast<const VkPhysicalDeviceDynamicRenderingFeatures*>( this );
29161     }
29162 
operator VkPhysicalDeviceDynamicRenderingFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29163     operator VkPhysicalDeviceDynamicRenderingFeatures &() VULKAN_HPP_NOEXCEPT
29164     {
29165       return *reinterpret_cast<VkPhysicalDeviceDynamicRenderingFeatures*>( this );
29166     }
29167 
29168 #if defined( VULKAN_HPP_USE_REFLECT )
29169 #if 14 <= VULKAN_HPP_CPP_VERSION
29170     auto
29171 #else
29172     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
29173 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29174       reflect() const VULKAN_HPP_NOEXCEPT
29175     {
29176       return std::tie( sType, pNext, dynamicRendering );
29177     }
29178 #endif
29179 
29180 
29181 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29182 auto operator<=>( PhysicalDeviceDynamicRenderingFeatures const & ) const = default;
29183 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29184     bool operator==( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
29185     {
29186 #if defined( VULKAN_HPP_USE_REFLECT )
29187       return this->reflect() == rhs.reflect();
29188 #else
29189       return ( sType == rhs.sType )
29190           && ( pNext == rhs.pNext )
29191           && ( dynamicRendering == rhs.dynamicRendering );
29192 #endif
29193     }
29194 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures29195     bool operator!=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
29196     {
29197       return !operator==( rhs );
29198     }
29199 #endif
29200 
29201     public:
29202     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDynamicRenderingFeatures;
29203     void * pNext = {};
29204     VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering = {};
29205 
29206   };
29207 
29208   template <>
29209   struct CppType<StructureType, StructureType::ePhysicalDeviceDynamicRenderingFeatures>
29210   {
29211     using Type = PhysicalDeviceDynamicRenderingFeatures;
29212   };
29213   using PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures;
29214 
29215   struct PhysicalDeviceExtendedDynamicState2FeaturesEXT
29216   {
29217     using NativeType = VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
29218 
29219     static const bool allowDuplicate = false;
29220     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT;
29221 
29222 
29223 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicState2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29224 VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_ = {}, VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29225     : pNext( pNext_ ), extendedDynamicState2( extendedDynamicState2_ ), extendedDynamicState2LogicOp( extendedDynamicState2LogicOp_ ), extendedDynamicState2PatchControlPoints( extendedDynamicState2PatchControlPoints_ )
29226     {}
29227 
29228     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29229 
PhysicalDeviceExtendedDynamicState2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29230     PhysicalDeviceExtendedDynamicState2FeaturesEXT( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29231       : PhysicalDeviceExtendedDynamicState2FeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicState2FeaturesEXT const *>( &rhs ) )
29232     {}
29233 
29234 
29235     PhysicalDeviceExtendedDynamicState2FeaturesEXT & operator=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29236 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29237 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29238     PhysicalDeviceExtendedDynamicState2FeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29239     {
29240       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT const *>( &rhs );
29241       return *this;
29242     }
29243 
29244 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29245     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
29246     {
29247       pNext = pNext_;
29248       return *this;
29249     }
29250 
setExtendedDynamicState2VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29251     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setExtendedDynamicState2( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2_ ) VULKAN_HPP_NOEXCEPT
29252     {
29253       extendedDynamicState2 = extendedDynamicState2_;
29254       return *this;
29255     }
29256 
setExtendedDynamicState2LogicOpVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29257     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setExtendedDynamicState2LogicOp( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp_ ) VULKAN_HPP_NOEXCEPT
29258     {
29259       extendedDynamicState2LogicOp = extendedDynamicState2LogicOp_;
29260       return *this;
29261     }
29262 
setExtendedDynamicState2PatchControlPointsVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29263     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setExtendedDynamicState2PatchControlPoints( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints_ ) VULKAN_HPP_NOEXCEPT
29264     {
29265       extendedDynamicState2PatchControlPoints = extendedDynamicState2PatchControlPoints_;
29266       return *this;
29267     }
29268 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29269 
29270 
operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29271     operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
29272     {
29273       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>( this );
29274     }
29275 
operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29276     operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
29277     {
29278       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*>( this );
29279     }
29280 
29281 #if defined( VULKAN_HPP_USE_REFLECT )
29282 #if 14 <= VULKAN_HPP_CPP_VERSION
29283     auto
29284 #else
29285     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
29286 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29287       reflect() const VULKAN_HPP_NOEXCEPT
29288     {
29289       return std::tie( sType, pNext, extendedDynamicState2, extendedDynamicState2LogicOp, extendedDynamicState2PatchControlPoints );
29290     }
29291 #endif
29292 
29293 
29294 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29295 auto operator<=>( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & ) const = default;
29296 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29297     bool operator==( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29298     {
29299 #if defined( VULKAN_HPP_USE_REFLECT )
29300       return this->reflect() == rhs.reflect();
29301 #else
29302       return ( sType == rhs.sType )
29303           && ( pNext == rhs.pNext )
29304           && ( extendedDynamicState2 == rhs.extendedDynamicState2 )
29305           && ( extendedDynamicState2LogicOp == rhs.extendedDynamicState2LogicOp )
29306           && ( extendedDynamicState2PatchControlPoints == rhs.extendedDynamicState2PatchControlPoints );
29307 #endif
29308     }
29309 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT29310     bool operator!=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29311     {
29312       return !operator==( rhs );
29313     }
29314 #endif
29315 
29316     public:
29317     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT;
29318     void * pNext = {};
29319     VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2 = {};
29320     VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2LogicOp = {};
29321     VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState2PatchControlPoints = {};
29322 
29323   };
29324 
29325   template <>
29326   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT>
29327   {
29328     using Type = PhysicalDeviceExtendedDynamicState2FeaturesEXT;
29329   };
29330 
29331   struct PhysicalDeviceExtendedDynamicStateFeaturesEXT
29332   {
29333     using NativeType = VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
29334 
29335     static const bool allowDuplicate = false;
29336     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
29337 
29338 
29339 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExtendedDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29340 VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29341     : pNext( pNext_ ), extendedDynamicState( extendedDynamicState_ )
29342     {}
29343 
29344     VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29345 
PhysicalDeviceExtendedDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29346     PhysicalDeviceExtendedDynamicStateFeaturesEXT( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29347       : PhysicalDeviceExtendedDynamicStateFeaturesEXT( *reinterpret_cast<PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs ) )
29348     {}
29349 
29350 
29351     PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29352 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29353 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29354     PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29355     {
29356       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT const *>( &rhs );
29357       return *this;
29358     }
29359 
29360 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29361     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
29362     {
29363       pNext = pNext_;
29364       return *this;
29365     }
29366 
setExtendedDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29367     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & setExtendedDynamicState( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ ) VULKAN_HPP_NOEXCEPT
29368     {
29369       extendedDynamicState = extendedDynamicState_;
29370       return *this;
29371     }
29372 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29373 
29374 
operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29375     operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
29376     {
29377       return *reinterpret_cast<const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>( this );
29378     }
29379 
operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29380     operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
29381     {
29382       return *reinterpret_cast<VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*>( this );
29383     }
29384 
29385 #if defined( VULKAN_HPP_USE_REFLECT )
29386 #if 14 <= VULKAN_HPP_CPP_VERSION
29387     auto
29388 #else
29389     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
29390 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29391       reflect() const VULKAN_HPP_NOEXCEPT
29392     {
29393       return std::tie( sType, pNext, extendedDynamicState );
29394     }
29395 #endif
29396 
29397 
29398 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29399 auto operator<=>( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & ) const = default;
29400 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29401     bool operator==( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29402     {
29403 #if defined( VULKAN_HPP_USE_REFLECT )
29404       return this->reflect() == rhs.reflect();
29405 #else
29406       return ( sType == rhs.sType )
29407           && ( pNext == rhs.pNext )
29408           && ( extendedDynamicState == rhs.extendedDynamicState );
29409 #endif
29410     }
29411 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT29412     bool operator!=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29413     {
29414       return !operator==( rhs );
29415     }
29416 #endif
29417 
29418     public:
29419     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT;
29420     void * pNext = {};
29421     VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState = {};
29422 
29423   };
29424 
29425   template <>
29426   struct CppType<StructureType, StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT>
29427   {
29428     using Type = PhysicalDeviceExtendedDynamicStateFeaturesEXT;
29429   };
29430 
29431   struct PhysicalDeviceExternalBufferInfo
29432   {
29433     using NativeType = VkPhysicalDeviceExternalBufferInfo;
29434 
29435     static const bool allowDuplicate = false;
29436     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalBufferInfo;
29437 
29438 
29439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalBufferInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29440 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo(VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29441     : pNext( pNext_ ), flags( flags_ ), usage( usage_ ), handleType( handleType_ )
29442     {}
29443 
29444     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29445 
PhysicalDeviceExternalBufferInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29446     PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29447       : PhysicalDeviceExternalBufferInfo( *reinterpret_cast<PhysicalDeviceExternalBufferInfo const *>( &rhs ) )
29448     {}
29449 
29450 
29451     PhysicalDeviceExternalBufferInfo & operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29452 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29453 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29454     PhysicalDeviceExternalBufferInfo & operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29455     {
29456       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo const *>( &rhs );
29457       return *this;
29458     }
29459 
29460 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29461     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29462     {
29463       pNext = pNext_;
29464       return *this;
29465     }
29466 
setFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29467     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
29468     {
29469       flags = flags_;
29470       return *this;
29471     }
29472 
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29473     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
29474     {
29475       usage = usage_;
29476       return *this;
29477     }
29478 
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29479     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
29480     {
29481       handleType = handleType_;
29482       return *this;
29483     }
29484 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29485 
29486 
operator VkPhysicalDeviceExternalBufferInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29487     operator VkPhysicalDeviceExternalBufferInfo const &() const VULKAN_HPP_NOEXCEPT
29488     {
29489       return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo*>( this );
29490     }
29491 
operator VkPhysicalDeviceExternalBufferInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29492     operator VkPhysicalDeviceExternalBufferInfo &() VULKAN_HPP_NOEXCEPT
29493     {
29494       return *reinterpret_cast<VkPhysicalDeviceExternalBufferInfo*>( this );
29495     }
29496 
29497 #if defined( VULKAN_HPP_USE_REFLECT )
29498 #if 14 <= VULKAN_HPP_CPP_VERSION
29499     auto
29500 #else
29501     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::BufferCreateFlags const &, VULKAN_HPP_NAMESPACE::BufferUsageFlags const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
29502 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29503       reflect() const VULKAN_HPP_NOEXCEPT
29504     {
29505       return std::tie( sType, pNext, flags, usage, handleType );
29506     }
29507 #endif
29508 
29509 
29510 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29511 auto operator<=>( PhysicalDeviceExternalBufferInfo const & ) const = default;
29512 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29513     bool operator==( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29514     {
29515 #if defined( VULKAN_HPP_USE_REFLECT )
29516       return this->reflect() == rhs.reflect();
29517 #else
29518       return ( sType == rhs.sType )
29519           && ( pNext == rhs.pNext )
29520           && ( flags == rhs.flags )
29521           && ( usage == rhs.usage )
29522           && ( handleType == rhs.handleType );
29523 #endif
29524     }
29525 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo29526     bool operator!=( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29527     {
29528       return !operator==( rhs );
29529     }
29530 #endif
29531 
29532     public:
29533     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo;
29534     const void * pNext = {};
29535     VULKAN_HPP_NAMESPACE::BufferCreateFlags flags = {};
29536     VULKAN_HPP_NAMESPACE::BufferUsageFlags usage = {};
29537     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
29538 
29539   };
29540 
29541   template <>
29542   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalBufferInfo>
29543   {
29544     using Type = PhysicalDeviceExternalBufferInfo;
29545   };
29546   using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo;
29547 
29548   struct PhysicalDeviceExternalFenceInfo
29549   {
29550     using NativeType = VkPhysicalDeviceExternalFenceInfo;
29551 
29552     static const bool allowDuplicate = false;
29553     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalFenceInfo;
29554 
29555 
29556 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalFenceInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29557 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo(VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29558     : pNext( pNext_ ), handleType( handleType_ )
29559     {}
29560 
29561     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29562 
PhysicalDeviceExternalFenceInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29563     PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29564       : PhysicalDeviceExternalFenceInfo( *reinterpret_cast<PhysicalDeviceExternalFenceInfo const *>( &rhs ) )
29565     {}
29566 
29567 
29568     PhysicalDeviceExternalFenceInfo & operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29569 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29570 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29571     PhysicalDeviceExternalFenceInfo & operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29572     {
29573       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo const *>( &rhs );
29574       return *this;
29575     }
29576 
29577 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29578     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29579     {
29580       pNext = pNext_;
29581       return *this;
29582     }
29583 
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29584     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
29585     {
29586       handleType = handleType_;
29587       return *this;
29588     }
29589 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29590 
29591 
operator VkPhysicalDeviceExternalFenceInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29592     operator VkPhysicalDeviceExternalFenceInfo const &() const VULKAN_HPP_NOEXCEPT
29593     {
29594       return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo*>( this );
29595     }
29596 
operator VkPhysicalDeviceExternalFenceInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29597     operator VkPhysicalDeviceExternalFenceInfo &() VULKAN_HPP_NOEXCEPT
29598     {
29599       return *reinterpret_cast<VkPhysicalDeviceExternalFenceInfo*>( this );
29600     }
29601 
29602 #if defined( VULKAN_HPP_USE_REFLECT )
29603 #if 14 <= VULKAN_HPP_CPP_VERSION
29604     auto
29605 #else
29606     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits const &>
29607 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29608       reflect() const VULKAN_HPP_NOEXCEPT
29609     {
29610       return std::tie( sType, pNext, handleType );
29611     }
29612 #endif
29613 
29614 
29615 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29616 auto operator<=>( PhysicalDeviceExternalFenceInfo const & ) const = default;
29617 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29618     bool operator==( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29619     {
29620 #if defined( VULKAN_HPP_USE_REFLECT )
29621       return this->reflect() == rhs.reflect();
29622 #else
29623       return ( sType == rhs.sType )
29624           && ( pNext == rhs.pNext )
29625           && ( handleType == rhs.handleType );
29626 #endif
29627     }
29628 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo29629     bool operator!=( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29630     {
29631       return !operator==( rhs );
29632     }
29633 #endif
29634 
29635     public:
29636     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo;
29637     const void * pNext = {};
29638     VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd;
29639 
29640   };
29641 
29642   template <>
29643   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalFenceInfo>
29644   {
29645     using Type = PhysicalDeviceExternalFenceInfo;
29646   };
29647   using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo;
29648 
29649   struct PhysicalDeviceExternalImageFormatInfo
29650   {
29651     using NativeType = VkPhysicalDeviceExternalImageFormatInfo;
29652 
29653     static const bool allowDuplicate = false;
29654     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalImageFormatInfo;
29655 
29656 
29657 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalImageFormatInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29658 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29659     : pNext( pNext_ ), handleType( handleType_ )
29660     {}
29661 
29662     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29663 
PhysicalDeviceExternalImageFormatInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29664     PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29665       : PhysicalDeviceExternalImageFormatInfo( *reinterpret_cast<PhysicalDeviceExternalImageFormatInfo const *>( &rhs ) )
29666     {}
29667 
29668 
29669     PhysicalDeviceExternalImageFormatInfo & operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29670 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29671 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29672     PhysicalDeviceExternalImageFormatInfo & operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT
29673     {
29674       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo const *>( &rhs );
29675       return *this;
29676     }
29677 
29678 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29679     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
29680     {
29681       pNext = pNext_;
29682       return *this;
29683     }
29684 
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29685     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
29686     {
29687       handleType = handleType_;
29688       return *this;
29689     }
29690 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29691 
29692 
operator VkPhysicalDeviceExternalImageFormatInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29693     operator VkPhysicalDeviceExternalImageFormatInfo const &() const VULKAN_HPP_NOEXCEPT
29694     {
29695       return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfo*>( this );
29696     }
29697 
operator VkPhysicalDeviceExternalImageFormatInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29698     operator VkPhysicalDeviceExternalImageFormatInfo &() VULKAN_HPP_NOEXCEPT
29699     {
29700       return *reinterpret_cast<VkPhysicalDeviceExternalImageFormatInfo*>( this );
29701     }
29702 
29703 #if defined( VULKAN_HPP_USE_REFLECT )
29704 #if 14 <= VULKAN_HPP_CPP_VERSION
29705     auto
29706 #else
29707     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits const &>
29708 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29709       reflect() const VULKAN_HPP_NOEXCEPT
29710     {
29711       return std::tie( sType, pNext, handleType );
29712     }
29713 #endif
29714 
29715 
29716 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29717 auto operator<=>( PhysicalDeviceExternalImageFormatInfo const & ) const = default;
29718 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29719     bool operator==( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29720     {
29721 #if defined( VULKAN_HPP_USE_REFLECT )
29722       return this->reflect() == rhs.reflect();
29723 #else
29724       return ( sType == rhs.sType )
29725           && ( pNext == rhs.pNext )
29726           && ( handleType == rhs.handleType );
29727 #endif
29728     }
29729 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo29730     bool operator!=( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
29731     {
29732       return !operator==( rhs );
29733     }
29734 #endif
29735 
29736     public:
29737     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo;
29738     const void * pNext = {};
29739     VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd;
29740 
29741   };
29742 
29743   template <>
29744   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalImageFormatInfo>
29745   {
29746     using Type = PhysicalDeviceExternalImageFormatInfo;
29747   };
29748   using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo;
29749 
29750   struct PhysicalDeviceExternalMemoryHostPropertiesEXT
29751   {
29752     using NativeType = VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
29753 
29754     static const bool allowDuplicate = false;
29755     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
29756 
29757 
29758 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryHostPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT29759 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT(VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29760     : pNext( pNext_ ), minImportedHostPointerAlignment( minImportedHostPointerAlignment_ )
29761     {}
29762 
29763     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29764 
PhysicalDeviceExternalMemoryHostPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT29765     PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29766       : PhysicalDeviceExternalMemoryHostPropertiesEXT( *reinterpret_cast<PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs ) )
29767     {}
29768 
29769 
29770     PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29771 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29772 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT29773     PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
29774     {
29775       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT const *>( &rhs );
29776       return *this;
29777     }
29778 
29779 
operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT29780     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
29781     {
29782       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>( this );
29783     }
29784 
operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT29785     operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT &() VULKAN_HPP_NOEXCEPT
29786     {
29787       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>( this );
29788     }
29789 
29790 #if defined( VULKAN_HPP_USE_REFLECT )
29791 #if 14 <= VULKAN_HPP_CPP_VERSION
29792     auto
29793 #else
29794     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
29795 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT29796       reflect() const VULKAN_HPP_NOEXCEPT
29797     {
29798       return std::tie( sType, pNext, minImportedHostPointerAlignment );
29799     }
29800 #endif
29801 
29802 
29803 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29804 auto operator<=>( PhysicalDeviceExternalMemoryHostPropertiesEXT const & ) const = default;
29805 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT29806     bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29807     {
29808 #if defined( VULKAN_HPP_USE_REFLECT )
29809       return this->reflect() == rhs.reflect();
29810 #else
29811       return ( sType == rhs.sType )
29812           && ( pNext == rhs.pNext )
29813           && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment );
29814 #endif
29815     }
29816 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT29817     bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
29818     {
29819       return !operator==( rhs );
29820     }
29821 #endif
29822 
29823     public:
29824     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
29825     void * pNext = {};
29826     VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment = {};
29827 
29828   };
29829 
29830   template <>
29831   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT>
29832   {
29833     using Type = PhysicalDeviceExternalMemoryHostPropertiesEXT;
29834   };
29835 
29836 #if defined( VK_USE_PLATFORM_SCI )
29837   struct PhysicalDeviceExternalMemorySciBufFeaturesNV
29838   {
29839     using NativeType = VkPhysicalDeviceExternalMemorySciBufFeaturesNV;
29840 
29841     static const bool allowDuplicate = false;
29842     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalMemorySciBufFeaturesNV;
29843 
29844 
29845 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemorySciBufFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29846 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemorySciBufFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 sciBufImport_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sciBufExport_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29847     : pNext( pNext_ ), sciBufImport( sciBufImport_ ), sciBufExport( sciBufExport_ )
29848     {}
29849 
29850     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemorySciBufFeaturesNV( PhysicalDeviceExternalMemorySciBufFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29851 
PhysicalDeviceExternalMemorySciBufFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29852     PhysicalDeviceExternalMemorySciBufFeaturesNV( VkPhysicalDeviceExternalMemorySciBufFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
29853       : PhysicalDeviceExternalMemorySciBufFeaturesNV( *reinterpret_cast<PhysicalDeviceExternalMemorySciBufFeaturesNV const *>( &rhs ) )
29854     {}
29855 
29856 
29857     PhysicalDeviceExternalMemorySciBufFeaturesNV & operator=( PhysicalDeviceExternalMemorySciBufFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29858 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29859 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29860     PhysicalDeviceExternalMemorySciBufFeaturesNV & operator=( VkPhysicalDeviceExternalMemorySciBufFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
29861     {
29862       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV const *>( &rhs );
29863       return *this;
29864     }
29865 
29866 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29867     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemorySciBufFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
29868     {
29869       pNext = pNext_;
29870       return *this;
29871     }
29872 
setSciBufImportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29873     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemorySciBufFeaturesNV & setSciBufImport( VULKAN_HPP_NAMESPACE::Bool32 sciBufImport_ ) VULKAN_HPP_NOEXCEPT
29874     {
29875       sciBufImport = sciBufImport_;
29876       return *this;
29877     }
29878 
setSciBufExportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29879     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemorySciBufFeaturesNV & setSciBufExport( VULKAN_HPP_NAMESPACE::Bool32 sciBufExport_ ) VULKAN_HPP_NOEXCEPT
29880     {
29881       sciBufExport = sciBufExport_;
29882       return *this;
29883     }
29884 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29885 
29886 
operator VkPhysicalDeviceExternalMemorySciBufFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29887     operator VkPhysicalDeviceExternalMemorySciBufFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
29888     {
29889       return *reinterpret_cast<const VkPhysicalDeviceExternalMemorySciBufFeaturesNV*>( this );
29890     }
29891 
operator VkPhysicalDeviceExternalMemorySciBufFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29892     operator VkPhysicalDeviceExternalMemorySciBufFeaturesNV &() VULKAN_HPP_NOEXCEPT
29893     {
29894       return *reinterpret_cast<VkPhysicalDeviceExternalMemorySciBufFeaturesNV*>( this );
29895     }
29896 
29897 #if defined( VULKAN_HPP_USE_REFLECT )
29898 #if 14 <= VULKAN_HPP_CPP_VERSION
29899     auto
29900 #else
29901     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
29902 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29903       reflect() const VULKAN_HPP_NOEXCEPT
29904     {
29905       return std::tie( sType, pNext, sciBufImport, sciBufExport );
29906     }
29907 #endif
29908 
29909 
29910 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
29911 auto operator<=>( PhysicalDeviceExternalMemorySciBufFeaturesNV const & ) const = default;
29912 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29913     bool operator==( PhysicalDeviceExternalMemorySciBufFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
29914     {
29915 #if defined( VULKAN_HPP_USE_REFLECT )
29916       return this->reflect() == rhs.reflect();
29917 #else
29918       return ( sType == rhs.sType )
29919           && ( pNext == rhs.pNext )
29920           && ( sciBufImport == rhs.sciBufImport )
29921           && ( sciBufExport == rhs.sciBufExport );
29922 #endif
29923     }
29924 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemorySciBufFeaturesNV29925     bool operator!=( PhysicalDeviceExternalMemorySciBufFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
29926     {
29927       return !operator==( rhs );
29928     }
29929 #endif
29930 
29931     public:
29932     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemorySciBufFeaturesNV;
29933     void * pNext = {};
29934     VULKAN_HPP_NAMESPACE::Bool32 sciBufImport = {};
29935     VULKAN_HPP_NAMESPACE::Bool32 sciBufExport = {};
29936 
29937   };
29938 
29939   template <>
29940   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemorySciBufFeaturesNV>
29941   {
29942     using Type = PhysicalDeviceExternalMemorySciBufFeaturesNV;
29943   };
29944   using PhysicalDeviceExternalSciBufFeaturesNV = PhysicalDeviceExternalMemorySciBufFeaturesNV;
29945 #endif /*VK_USE_PLATFORM_SCI*/
29946 
29947 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
29948   struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX
29949   {
29950     using NativeType = VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
29951 
29952     static const bool allowDuplicate = false;
29953     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
29954 
29955 
29956 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX29957 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX(VULKAN_HPP_NAMESPACE::Bool32 screenBufferImport_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
29958     : pNext( pNext_ ), screenBufferImport( screenBufferImport_ )
29959     {}
29960 
29961     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29962 
PhysicalDeviceExternalMemoryScreenBufferFeaturesQNXVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX29963     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
29964       : PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( *reinterpret_cast<PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const *>( &rhs ) )
29965     {}
29966 
29967 
29968     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & operator=( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
29969 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
29970 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX29971     PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & operator=( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
29972     {
29973       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const *>( &rhs );
29974       return *this;
29975     }
29976 
29977 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX29978     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
29979     {
29980       pNext = pNext_;
29981       return *this;
29982     }
29983 
setScreenBufferImportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX29984     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & setScreenBufferImport( VULKAN_HPP_NAMESPACE::Bool32 screenBufferImport_ ) VULKAN_HPP_NOEXCEPT
29985     {
29986       screenBufferImport = screenBufferImport_;
29987       return *this;
29988     }
29989 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
29990 
29991 
operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX29992     operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const &() const VULKAN_HPP_NOEXCEPT
29993     {
29994       return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX*>( this );
29995     }
29996 
operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX29997     operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX &() VULKAN_HPP_NOEXCEPT
29998     {
29999       return *reinterpret_cast<VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX*>( this );
30000     }
30001 
30002 #if defined( VULKAN_HPP_USE_REFLECT )
30003 #if 14 <= VULKAN_HPP_CPP_VERSION
30004     auto
30005 #else
30006     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
30007 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX30008       reflect() const VULKAN_HPP_NOEXCEPT
30009     {
30010       return std::tie( sType, pNext, screenBufferImport );
30011     }
30012 #endif
30013 
30014 
30015 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30016 auto operator<=>( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & ) const = default;
30017 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX30018     bool operator==( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
30019     {
30020 #if defined( VULKAN_HPP_USE_REFLECT )
30021       return this->reflect() == rhs.reflect();
30022 #else
30023       return ( sType == rhs.sType )
30024           && ( pNext == rhs.pNext )
30025           && ( screenBufferImport == rhs.screenBufferImport );
30026 #endif
30027     }
30028 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX30029     bool operator!=( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
30030     {
30031       return !operator==( rhs );
30032     }
30033 #endif
30034 
30035     public:
30036     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
30037     void * pNext = {};
30038     VULKAN_HPP_NAMESPACE::Bool32 screenBufferImport = {};
30039 
30040   };
30041 
30042   template <>
30043   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX>
30044   {
30045     using Type = PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX;
30046   };
30047 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
30048 
30049 #if defined( VK_USE_PLATFORM_SCI )
30050   struct PhysicalDeviceExternalSciSync2FeaturesNV
30051   {
30052     using NativeType = VkPhysicalDeviceExternalSciSync2FeaturesNV;
30053 
30054     static const bool allowDuplicate = false;
30055     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalSciSync2FeaturesNV;
30056 
30057 
30058 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalSciSync2FeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30059 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSciSync2FeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 sciSyncFence_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sciSyncSemaphore2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sciSyncImport_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sciSyncExport_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30060     : pNext( pNext_ ), sciSyncFence( sciSyncFence_ ), sciSyncSemaphore2( sciSyncSemaphore2_ ), sciSyncImport( sciSyncImport_ ), sciSyncExport( sciSyncExport_ )
30061     {}
30062 
30063     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSciSync2FeaturesNV( PhysicalDeviceExternalSciSync2FeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30064 
PhysicalDeviceExternalSciSync2FeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30065     PhysicalDeviceExternalSciSync2FeaturesNV( VkPhysicalDeviceExternalSciSync2FeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
30066       : PhysicalDeviceExternalSciSync2FeaturesNV( *reinterpret_cast<PhysicalDeviceExternalSciSync2FeaturesNV const *>( &rhs ) )
30067     {}
30068 
30069 
30070     PhysicalDeviceExternalSciSync2FeaturesNV & operator=( PhysicalDeviceExternalSciSync2FeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30071 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30072 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30073     PhysicalDeviceExternalSciSync2FeaturesNV & operator=( VkPhysicalDeviceExternalSciSync2FeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
30074     {
30075       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV const *>( &rhs );
30076       return *this;
30077     }
30078 
30079 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30080     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSync2FeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30081     {
30082       pNext = pNext_;
30083       return *this;
30084     }
30085 
setSciSyncFenceVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30086     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSync2FeaturesNV & setSciSyncFence( VULKAN_HPP_NAMESPACE::Bool32 sciSyncFence_ ) VULKAN_HPP_NOEXCEPT
30087     {
30088       sciSyncFence = sciSyncFence_;
30089       return *this;
30090     }
30091 
setSciSyncSemaphore2VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30092     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSync2FeaturesNV & setSciSyncSemaphore2( VULKAN_HPP_NAMESPACE::Bool32 sciSyncSemaphore2_ ) VULKAN_HPP_NOEXCEPT
30093     {
30094       sciSyncSemaphore2 = sciSyncSemaphore2_;
30095       return *this;
30096     }
30097 
setSciSyncImportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30098     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSync2FeaturesNV & setSciSyncImport( VULKAN_HPP_NAMESPACE::Bool32 sciSyncImport_ ) VULKAN_HPP_NOEXCEPT
30099     {
30100       sciSyncImport = sciSyncImport_;
30101       return *this;
30102     }
30103 
setSciSyncExportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30104     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSync2FeaturesNV & setSciSyncExport( VULKAN_HPP_NAMESPACE::Bool32 sciSyncExport_ ) VULKAN_HPP_NOEXCEPT
30105     {
30106       sciSyncExport = sciSyncExport_;
30107       return *this;
30108     }
30109 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30110 
30111 
operator VkPhysicalDeviceExternalSciSync2FeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30112     operator VkPhysicalDeviceExternalSciSync2FeaturesNV const &() const VULKAN_HPP_NOEXCEPT
30113     {
30114       return *reinterpret_cast<const VkPhysicalDeviceExternalSciSync2FeaturesNV*>( this );
30115     }
30116 
operator VkPhysicalDeviceExternalSciSync2FeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30117     operator VkPhysicalDeviceExternalSciSync2FeaturesNV &() VULKAN_HPP_NOEXCEPT
30118     {
30119       return *reinterpret_cast<VkPhysicalDeviceExternalSciSync2FeaturesNV*>( this );
30120     }
30121 
30122 #if defined( VULKAN_HPP_USE_REFLECT )
30123 #if 14 <= VULKAN_HPP_CPP_VERSION
30124     auto
30125 #else
30126     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
30127 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30128       reflect() const VULKAN_HPP_NOEXCEPT
30129     {
30130       return std::tie( sType, pNext, sciSyncFence, sciSyncSemaphore2, sciSyncImport, sciSyncExport );
30131     }
30132 #endif
30133 
30134 
30135 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30136 auto operator<=>( PhysicalDeviceExternalSciSync2FeaturesNV const & ) const = default;
30137 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30138     bool operator==( PhysicalDeviceExternalSciSync2FeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30139     {
30140 #if defined( VULKAN_HPP_USE_REFLECT )
30141       return this->reflect() == rhs.reflect();
30142 #else
30143       return ( sType == rhs.sType )
30144           && ( pNext == rhs.pNext )
30145           && ( sciSyncFence == rhs.sciSyncFence )
30146           && ( sciSyncSemaphore2 == rhs.sciSyncSemaphore2 )
30147           && ( sciSyncImport == rhs.sciSyncImport )
30148           && ( sciSyncExport == rhs.sciSyncExport );
30149 #endif
30150     }
30151 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSync2FeaturesNV30152     bool operator!=( PhysicalDeviceExternalSciSync2FeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30153     {
30154       return !operator==( rhs );
30155     }
30156 #endif
30157 
30158     public:
30159     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalSciSync2FeaturesNV;
30160     void * pNext = {};
30161     VULKAN_HPP_NAMESPACE::Bool32 sciSyncFence = {};
30162     VULKAN_HPP_NAMESPACE::Bool32 sciSyncSemaphore2 = {};
30163     VULKAN_HPP_NAMESPACE::Bool32 sciSyncImport = {};
30164     VULKAN_HPP_NAMESPACE::Bool32 sciSyncExport = {};
30165 
30166   };
30167 
30168   template <>
30169   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalSciSync2FeaturesNV>
30170   {
30171     using Type = PhysicalDeviceExternalSciSync2FeaturesNV;
30172   };
30173 #endif /*VK_USE_PLATFORM_SCI*/
30174 
30175 #if defined( VK_USE_PLATFORM_SCI )
30176   struct PhysicalDeviceExternalSciSyncFeaturesNV
30177   {
30178     using NativeType = VkPhysicalDeviceExternalSciSyncFeaturesNV;
30179 
30180     static const bool allowDuplicate = false;
30181     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalSciSyncFeaturesNV;
30182 
30183 
30184 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalSciSyncFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30185 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSciSyncFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 sciSyncFence_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sciSyncSemaphore_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sciSyncImport_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sciSyncExport_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30186     : pNext( pNext_ ), sciSyncFence( sciSyncFence_ ), sciSyncSemaphore( sciSyncSemaphore_ ), sciSyncImport( sciSyncImport_ ), sciSyncExport( sciSyncExport_ )
30187     {}
30188 
30189     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSciSyncFeaturesNV( PhysicalDeviceExternalSciSyncFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30190 
PhysicalDeviceExternalSciSyncFeaturesNVVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30191     PhysicalDeviceExternalSciSyncFeaturesNV( VkPhysicalDeviceExternalSciSyncFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
30192       : PhysicalDeviceExternalSciSyncFeaturesNV( *reinterpret_cast<PhysicalDeviceExternalSciSyncFeaturesNV const *>( &rhs ) )
30193     {}
30194 
30195 
30196     PhysicalDeviceExternalSciSyncFeaturesNV & operator=( PhysicalDeviceExternalSciSyncFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30197 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30198 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30199     PhysicalDeviceExternalSciSyncFeaturesNV & operator=( VkPhysicalDeviceExternalSciSyncFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT
30200     {
30201       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV const *>( &rhs );
30202       return *this;
30203     }
30204 
30205 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30206     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSyncFeaturesNV & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30207     {
30208       pNext = pNext_;
30209       return *this;
30210     }
30211 
setSciSyncFenceVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30212     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSyncFeaturesNV & setSciSyncFence( VULKAN_HPP_NAMESPACE::Bool32 sciSyncFence_ ) VULKAN_HPP_NOEXCEPT
30213     {
30214       sciSyncFence = sciSyncFence_;
30215       return *this;
30216     }
30217 
setSciSyncSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30218     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSyncFeaturesNV & setSciSyncSemaphore( VULKAN_HPP_NAMESPACE::Bool32 sciSyncSemaphore_ ) VULKAN_HPP_NOEXCEPT
30219     {
30220       sciSyncSemaphore = sciSyncSemaphore_;
30221       return *this;
30222     }
30223 
setSciSyncImportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30224     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSyncFeaturesNV & setSciSyncImport( VULKAN_HPP_NAMESPACE::Bool32 sciSyncImport_ ) VULKAN_HPP_NOEXCEPT
30225     {
30226       sciSyncImport = sciSyncImport_;
30227       return *this;
30228     }
30229 
setSciSyncExportVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30230     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSciSyncFeaturesNV & setSciSyncExport( VULKAN_HPP_NAMESPACE::Bool32 sciSyncExport_ ) VULKAN_HPP_NOEXCEPT
30231     {
30232       sciSyncExport = sciSyncExport_;
30233       return *this;
30234     }
30235 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30236 
30237 
operator VkPhysicalDeviceExternalSciSyncFeaturesNV const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30238     operator VkPhysicalDeviceExternalSciSyncFeaturesNV const &() const VULKAN_HPP_NOEXCEPT
30239     {
30240       return *reinterpret_cast<const VkPhysicalDeviceExternalSciSyncFeaturesNV*>( this );
30241     }
30242 
operator VkPhysicalDeviceExternalSciSyncFeaturesNV&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30243     operator VkPhysicalDeviceExternalSciSyncFeaturesNV &() VULKAN_HPP_NOEXCEPT
30244     {
30245       return *reinterpret_cast<VkPhysicalDeviceExternalSciSyncFeaturesNV*>( this );
30246     }
30247 
30248 #if defined( VULKAN_HPP_USE_REFLECT )
30249 #if 14 <= VULKAN_HPP_CPP_VERSION
30250     auto
30251 #else
30252     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
30253 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30254       reflect() const VULKAN_HPP_NOEXCEPT
30255     {
30256       return std::tie( sType, pNext, sciSyncFence, sciSyncSemaphore, sciSyncImport, sciSyncExport );
30257     }
30258 #endif
30259 
30260 
30261 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30262 auto operator<=>( PhysicalDeviceExternalSciSyncFeaturesNV const & ) const = default;
30263 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30264     bool operator==( PhysicalDeviceExternalSciSyncFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30265     {
30266 #if defined( VULKAN_HPP_USE_REFLECT )
30267       return this->reflect() == rhs.reflect();
30268 #else
30269       return ( sType == rhs.sType )
30270           && ( pNext == rhs.pNext )
30271           && ( sciSyncFence == rhs.sciSyncFence )
30272           && ( sciSyncSemaphore == rhs.sciSyncSemaphore )
30273           && ( sciSyncImport == rhs.sciSyncImport )
30274           && ( sciSyncExport == rhs.sciSyncExport );
30275 #endif
30276     }
30277 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSciSyncFeaturesNV30278     bool operator!=( PhysicalDeviceExternalSciSyncFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT
30279     {
30280       return !operator==( rhs );
30281     }
30282 #endif
30283 
30284     public:
30285     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalSciSyncFeaturesNV;
30286     void * pNext = {};
30287     VULKAN_HPP_NAMESPACE::Bool32 sciSyncFence = {};
30288     VULKAN_HPP_NAMESPACE::Bool32 sciSyncSemaphore = {};
30289     VULKAN_HPP_NAMESPACE::Bool32 sciSyncImport = {};
30290     VULKAN_HPP_NAMESPACE::Bool32 sciSyncExport = {};
30291 
30292   };
30293 
30294   template <>
30295   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalSciSyncFeaturesNV>
30296   {
30297     using Type = PhysicalDeviceExternalSciSyncFeaturesNV;
30298   };
30299 #endif /*VK_USE_PLATFORM_SCI*/
30300 
30301   struct PhysicalDeviceExternalSemaphoreInfo
30302   {
30303     using NativeType = VkPhysicalDeviceExternalSemaphoreInfo;
30304 
30305     static const bool allowDuplicate = false;
30306     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
30307 
30308 
30309 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceExternalSemaphoreInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30310 VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo(VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30311     : pNext( pNext_ ), handleType( handleType_ )
30312     {}
30313 
30314     VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30315 
PhysicalDeviceExternalSemaphoreInfoVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30316     PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30317       : PhysicalDeviceExternalSemaphoreInfo( *reinterpret_cast<PhysicalDeviceExternalSemaphoreInfo const *>( &rhs ) )
30318     {}
30319 
30320 
30321     PhysicalDeviceExternalSemaphoreInfo & operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30322 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30323 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30324     PhysicalDeviceExternalSemaphoreInfo & operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT
30325     {
30326       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo const *>( &rhs );
30327       return *this;
30328     }
30329 
30330 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30331     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
30332     {
30333       pNext = pNext_;
30334       return *this;
30335     }
30336 
setHandleTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30337     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
30338     {
30339       handleType = handleType_;
30340       return *this;
30341     }
30342 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30343 
30344 
operator VkPhysicalDeviceExternalSemaphoreInfo const&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30345     operator VkPhysicalDeviceExternalSemaphoreInfo const &() const VULKAN_HPP_NOEXCEPT
30346     {
30347       return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo*>( this );
30348     }
30349 
operator VkPhysicalDeviceExternalSemaphoreInfo&VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30350     operator VkPhysicalDeviceExternalSemaphoreInfo &() VULKAN_HPP_NOEXCEPT
30351     {
30352       return *reinterpret_cast<VkPhysicalDeviceExternalSemaphoreInfo*>( this );
30353     }
30354 
30355 #if defined( VULKAN_HPP_USE_REFLECT )
30356 #if 14 <= VULKAN_HPP_CPP_VERSION
30357     auto
30358 #else
30359     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
30360 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30361       reflect() const VULKAN_HPP_NOEXCEPT
30362     {
30363       return std::tie( sType, pNext, handleType );
30364     }
30365 #endif
30366 
30367 
30368 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30369 auto operator<=>( PhysicalDeviceExternalSemaphoreInfo const & ) const = default;
30370 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30371     bool operator==( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30372     {
30373 #if defined( VULKAN_HPP_USE_REFLECT )
30374       return this->reflect() == rhs.reflect();
30375 #else
30376       return ( sType == rhs.sType )
30377           && ( pNext == rhs.pNext )
30378           && ( handleType == rhs.handleType );
30379 #endif
30380     }
30381 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo30382     bool operator!=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
30383     {
30384       return !operator==( rhs );
30385     }
30386 #endif
30387 
30388     public:
30389     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo;
30390     const void * pNext = {};
30391     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
30392 
30393   };
30394 
30395   template <>
30396   struct CppType<StructureType, StructureType::ePhysicalDeviceExternalSemaphoreInfo>
30397   {
30398     using Type = PhysicalDeviceExternalSemaphoreInfo;
30399   };
30400   using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo;
30401 
30402   struct PhysicalDeviceFeatures2
30403   {
30404     using NativeType = VkPhysicalDeviceFeatures2;
30405 
30406     static const bool allowDuplicate = false;
30407     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFeatures2;
30408 
30409 
30410 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFeatures2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230411 VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2(VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30412     : pNext( pNext_ ), features( features_ )
30413     {}
30414 
30415     VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30416 
PhysicalDeviceFeatures2VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230417     PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
30418       : PhysicalDeviceFeatures2( *reinterpret_cast<PhysicalDeviceFeatures2 const *>( &rhs ) )
30419     {}
30420 
30421 
30422     PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30423 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30424 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230425     PhysicalDeviceFeatures2 & operator=( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT
30426     {
30427       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 const *>( &rhs );
30428       return *this;
30429     }
30430 
30431 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230432     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30433     {
30434       pNext = pNext_;
30435       return *this;
30436     }
30437 
setFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230438     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & features_ ) VULKAN_HPP_NOEXCEPT
30439     {
30440       features = features_;
30441       return *this;
30442     }
30443 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30444 
30445 
operator VkPhysicalDeviceFeatures2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230446     operator VkPhysicalDeviceFeatures2 const &() const VULKAN_HPP_NOEXCEPT
30447     {
30448       return *reinterpret_cast<const VkPhysicalDeviceFeatures2*>( this );
30449     }
30450 
operator VkPhysicalDeviceFeatures2&VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230451     operator VkPhysicalDeviceFeatures2 &() VULKAN_HPP_NOEXCEPT
30452     {
30453       return *reinterpret_cast<VkPhysicalDeviceFeatures2*>( this );
30454     }
30455 
30456 #if defined( VULKAN_HPP_USE_REFLECT )
30457 #if 14 <= VULKAN_HPP_CPP_VERSION
30458     auto
30459 #else
30460     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const &>
30461 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230462       reflect() const VULKAN_HPP_NOEXCEPT
30463     {
30464       return std::tie( sType, pNext, features );
30465     }
30466 #endif
30467 
30468 
30469 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30470 auto operator<=>( PhysicalDeviceFeatures2 const & ) const = default;
30471 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230472     bool operator==( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT
30473     {
30474 #if defined( VULKAN_HPP_USE_REFLECT )
30475       return this->reflect() == rhs.reflect();
30476 #else
30477       return ( sType == rhs.sType )
30478           && ( pNext == rhs.pNext )
30479           && ( features == rhs.features );
30480 #endif
30481     }
30482 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures230483     bool operator!=( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT
30484     {
30485       return !operator==( rhs );
30486     }
30487 #endif
30488 
30489     public:
30490     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFeatures2;
30491     void * pNext = {};
30492     VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features = {};
30493 
30494   };
30495 
30496   template <>
30497   struct CppType<StructureType, StructureType::ePhysicalDeviceFeatures2>
30498   {
30499     using Type = PhysicalDeviceFeatures2;
30500   };
30501   using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2;
30502 
30503   struct PhysicalDeviceFloatControlsProperties
30504   {
30505     using NativeType = VkPhysicalDeviceFloatControlsProperties;
30506 
30507     static const bool allowDuplicate = false;
30508     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFloatControlsProperties;
30509 
30510 
30511 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFloatControlsPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties30512 VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties(VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30513     : pNext( pNext_ ), denormBehaviorIndependence( denormBehaviorIndependence_ ), roundingModeIndependence( roundingModeIndependence_ ), shaderSignedZeroInfNanPreserveFloat16( shaderSignedZeroInfNanPreserveFloat16_ ), shaderSignedZeroInfNanPreserveFloat32( shaderSignedZeroInfNanPreserveFloat32_ ), shaderSignedZeroInfNanPreserveFloat64( shaderSignedZeroInfNanPreserveFloat64_ ), shaderDenormPreserveFloat16( shaderDenormPreserveFloat16_ ), shaderDenormPreserveFloat32( shaderDenormPreserveFloat32_ ), shaderDenormPreserveFloat64( shaderDenormPreserveFloat64_ ), shaderDenormFlushToZeroFloat16( shaderDenormFlushToZeroFloat16_ ), shaderDenormFlushToZeroFloat32( shaderDenormFlushToZeroFloat32_ ), shaderDenormFlushToZeroFloat64( shaderDenormFlushToZeroFloat64_ ), shaderRoundingModeRTEFloat16( shaderRoundingModeRTEFloat16_ ), shaderRoundingModeRTEFloat32( shaderRoundingModeRTEFloat32_ ), shaderRoundingModeRTEFloat64( shaderRoundingModeRTEFloat64_ ), shaderRoundingModeRTZFloat16( shaderRoundingModeRTZFloat16_ ), shaderRoundingModeRTZFloat32( shaderRoundingModeRTZFloat32_ ), shaderRoundingModeRTZFloat64( shaderRoundingModeRTZFloat64_ )
30514     {}
30515 
30516     VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30517 
PhysicalDeviceFloatControlsPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties30518     PhysicalDeviceFloatControlsProperties( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
30519       : PhysicalDeviceFloatControlsProperties( *reinterpret_cast<PhysicalDeviceFloatControlsProperties const *>( &rhs ) )
30520     {}
30521 
30522 
30523     PhysicalDeviceFloatControlsProperties & operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30524 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30525 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties30526     PhysicalDeviceFloatControlsProperties & operator=( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT
30527     {
30528       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties const *>( &rhs );
30529       return *this;
30530     }
30531 
30532 
operator VkPhysicalDeviceFloatControlsProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties30533     operator VkPhysicalDeviceFloatControlsProperties const &() const VULKAN_HPP_NOEXCEPT
30534     {
30535       return *reinterpret_cast<const VkPhysicalDeviceFloatControlsProperties*>( this );
30536     }
30537 
operator VkPhysicalDeviceFloatControlsProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties30538     operator VkPhysicalDeviceFloatControlsProperties &() VULKAN_HPP_NOEXCEPT
30539     {
30540       return *reinterpret_cast<VkPhysicalDeviceFloatControlsProperties*>( this );
30541     }
30542 
30543 #if defined( VULKAN_HPP_USE_REFLECT )
30544 #if 14 <= VULKAN_HPP_CPP_VERSION
30545     auto
30546 #else
30547     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
30548 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties30549       reflect() const VULKAN_HPP_NOEXCEPT
30550     {
30551       return std::tie( sType, pNext, denormBehaviorIndependence, roundingModeIndependence, shaderSignedZeroInfNanPreserveFloat16, shaderSignedZeroInfNanPreserveFloat32, shaderSignedZeroInfNanPreserveFloat64, shaderDenormPreserveFloat16, shaderDenormPreserveFloat32, shaderDenormPreserveFloat64, shaderDenormFlushToZeroFloat16, shaderDenormFlushToZeroFloat32, shaderDenormFlushToZeroFloat64, shaderRoundingModeRTEFloat16, shaderRoundingModeRTEFloat32, shaderRoundingModeRTEFloat64, shaderRoundingModeRTZFloat16, shaderRoundingModeRTZFloat32, shaderRoundingModeRTZFloat64 );
30552     }
30553 #endif
30554 
30555 
30556 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30557 auto operator<=>( PhysicalDeviceFloatControlsProperties const & ) const = default;
30558 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties30559     bool operator==( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
30560     {
30561 #if defined( VULKAN_HPP_USE_REFLECT )
30562       return this->reflect() == rhs.reflect();
30563 #else
30564       return ( sType == rhs.sType )
30565           && ( pNext == rhs.pNext )
30566           && ( denormBehaviorIndependence == rhs.denormBehaviorIndependence )
30567           && ( roundingModeIndependence == rhs.roundingModeIndependence )
30568           && ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 )
30569           && ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 )
30570           && ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 )
30571           && ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 )
30572           && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 )
30573           && ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 )
30574           && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 )
30575           && ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 )
30576           && ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 )
30577           && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 )
30578           && ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 )
30579           && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 )
30580           && ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 )
30581           && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 )
30582           && ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 );
30583 #endif
30584     }
30585 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties30586     bool operator!=( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
30587     {
30588       return !operator==( rhs );
30589     }
30590 #endif
30591 
30592     public:
30593     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFloatControlsProperties;
30594     void * pNext = {};
30595     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
30596     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
30597     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16 = {};
30598     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32 = {};
30599     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64 = {};
30600     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16 = {};
30601     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32 = {};
30602     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64 = {};
30603     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16 = {};
30604     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32 = {};
30605     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64 = {};
30606     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16 = {};
30607     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32 = {};
30608     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64 = {};
30609     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16 = {};
30610     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32 = {};
30611     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64 = {};
30612 
30613   };
30614 
30615   template <>
30616   struct CppType<StructureType, StructureType::ePhysicalDeviceFloatControlsProperties>
30617   {
30618     using Type = PhysicalDeviceFloatControlsProperties;
30619   };
30620   using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties;
30621 
30622   struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT
30623   {
30624     using NativeType = VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
30625 
30626     static const bool allowDuplicate = false;
30627     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
30628 
30629 
30630 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShaderInterlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30631 VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30632     : pNext( pNext_ ), fragmentShaderSampleInterlock( fragmentShaderSampleInterlock_ ), fragmentShaderPixelInterlock( fragmentShaderPixelInterlock_ ), fragmentShaderShadingRateInterlock( fragmentShaderShadingRateInterlock_ )
30633     {}
30634 
30635     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30636 
PhysicalDeviceFragmentShaderInterlockFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30637     PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
30638       : PhysicalDeviceFragmentShaderInterlockFeaturesEXT( *reinterpret_cast<PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs ) )
30639     {}
30640 
30641 
30642     PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30643 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30644 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30645     PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
30646     {
30647       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT const *>( &rhs );
30648       return *this;
30649     }
30650 
30651 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30652     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30653     {
30654       pNext = pNext_;
30655       return *this;
30656     }
30657 
setFragmentShaderSampleInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30658     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderSampleInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ ) VULKAN_HPP_NOEXCEPT
30659     {
30660       fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_;
30661       return *this;
30662     }
30663 
setFragmentShaderPixelInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30664     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderPixelInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ ) VULKAN_HPP_NOEXCEPT
30665     {
30666       fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_;
30667       return *this;
30668     }
30669 
setFragmentShaderShadingRateInterlockVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30670     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderShadingRateInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ ) VULKAN_HPP_NOEXCEPT
30671     {
30672       fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_;
30673       return *this;
30674     }
30675 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30676 
30677 
operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30678     operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
30679     {
30680       return *reinterpret_cast<const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>( this );
30681     }
30682 
operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30683     operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &() VULKAN_HPP_NOEXCEPT
30684     {
30685       return *reinterpret_cast<VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*>( this );
30686     }
30687 
30688 #if defined( VULKAN_HPP_USE_REFLECT )
30689 #if 14 <= VULKAN_HPP_CPP_VERSION
30690     auto
30691 #else
30692     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
30693 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30694       reflect() const VULKAN_HPP_NOEXCEPT
30695     {
30696       return std::tie( sType, pNext, fragmentShaderSampleInterlock, fragmentShaderPixelInterlock, fragmentShaderShadingRateInterlock );
30697     }
30698 #endif
30699 
30700 
30701 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30702 auto operator<=>( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & ) const = default;
30703 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30704     bool operator==( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
30705     {
30706 #if defined( VULKAN_HPP_USE_REFLECT )
30707       return this->reflect() == rhs.reflect();
30708 #else
30709       return ( sType == rhs.sType )
30710           && ( pNext == rhs.pNext )
30711           && ( fragmentShaderSampleInterlock == rhs.fragmentShaderSampleInterlock )
30712           && ( fragmentShaderPixelInterlock == rhs.fragmentShaderPixelInterlock )
30713           && ( fragmentShaderShadingRateInterlock == rhs.fragmentShaderShadingRateInterlock );
30714 #endif
30715     }
30716 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT30717     bool operator!=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
30718     {
30719       return !operator==( rhs );
30720     }
30721 #endif
30722 
30723     public:
30724     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT;
30725     void * pNext = {};
30726     VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock = {};
30727     VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock = {};
30728     VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock = {};
30729 
30730   };
30731 
30732   template <>
30733   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT>
30734   {
30735     using Type = PhysicalDeviceFragmentShaderInterlockFeaturesEXT;
30736   };
30737 
30738   struct PhysicalDeviceFragmentShadingRateFeaturesKHR
30739   {
30740     using NativeType = VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
30741 
30742     static const bool allowDuplicate = false;
30743     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
30744 
30745 
30746 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30747 VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ = {}, VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ = {}, VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30748     : pNext( pNext_ ), pipelineFragmentShadingRate( pipelineFragmentShadingRate_ ), primitiveFragmentShadingRate( primitiveFragmentShadingRate_ ), attachmentFragmentShadingRate( attachmentFragmentShadingRate_ )
30749     {}
30750 
30751     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30752 
PhysicalDeviceFragmentShadingRateFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30753     PhysicalDeviceFragmentShadingRateFeaturesKHR( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30754       : PhysicalDeviceFragmentShadingRateFeaturesKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs ) )
30755     {}
30756 
30757 
30758     PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30759 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30760 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30761     PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30762     {
30763       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR const *>( &rhs );
30764       return *this;
30765     }
30766 
30767 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30768     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
30769     {
30770       pNext = pNext_;
30771       return *this;
30772     }
30773 
setPipelineFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPipelineFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
30775     {
30776       pipelineFragmentShadingRate = pipelineFragmentShadingRate_;
30777       return *this;
30778     }
30779 
setPrimitiveFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30780     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPrimitiveFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
30781     {
30782       primitiveFragmentShadingRate = primitiveFragmentShadingRate_;
30783       return *this;
30784     }
30785 
setAttachmentFragmentShadingRateVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30786     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setAttachmentFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT
30787     {
30788       attachmentFragmentShadingRate = attachmentFragmentShadingRate_;
30789       return *this;
30790     }
30791 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
30792 
30793 
operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30794     operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
30795     {
30796       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>( this );
30797     }
30798 
operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30799     operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR &() VULKAN_HPP_NOEXCEPT
30800     {
30801       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateFeaturesKHR*>( this );
30802     }
30803 
30804 #if defined( VULKAN_HPP_USE_REFLECT )
30805 #if 14 <= VULKAN_HPP_CPP_VERSION
30806     auto
30807 #else
30808     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
30809 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30810       reflect() const VULKAN_HPP_NOEXCEPT
30811     {
30812       return std::tie( sType, pNext, pipelineFragmentShadingRate, primitiveFragmentShadingRate, attachmentFragmentShadingRate );
30813     }
30814 #endif
30815 
30816 
30817 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30818 auto operator<=>( PhysicalDeviceFragmentShadingRateFeaturesKHR const & ) const = default;
30819 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30820     bool operator==( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30821     {
30822 #if defined( VULKAN_HPP_USE_REFLECT )
30823       return this->reflect() == rhs.reflect();
30824 #else
30825       return ( sType == rhs.sType )
30826           && ( pNext == rhs.pNext )
30827           && ( pipelineFragmentShadingRate == rhs.pipelineFragmentShadingRate )
30828           && ( primitiveFragmentShadingRate == rhs.primitiveFragmentShadingRate )
30829           && ( attachmentFragmentShadingRate == rhs.attachmentFragmentShadingRate );
30830 #endif
30831     }
30832 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR30833     bool operator!=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30834     {
30835       return !operator==( rhs );
30836     }
30837 #endif
30838 
30839     public:
30840     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR;
30841     void * pNext = {};
30842     VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate = {};
30843     VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate = {};
30844     VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate = {};
30845 
30846   };
30847 
30848   template <>
30849   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR>
30850   {
30851     using Type = PhysicalDeviceFragmentShadingRateFeaturesKHR;
30852   };
30853 
30854   struct PhysicalDeviceFragmentShadingRateKHR
30855   {
30856     using NativeType = VkPhysicalDeviceFragmentShadingRateKHR;
30857 
30858     static const bool allowDuplicate = false;
30859     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
30860 
30861 
30862 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRateKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR30863 VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR(VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {}, VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30864     : pNext( pNext_ ), sampleCounts( sampleCounts_ ), fragmentSize( fragmentSize_ )
30865     {}
30866 
30867     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30868 
PhysicalDeviceFragmentShadingRateKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR30869     PhysicalDeviceFragmentShadingRateKHR( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30870       : PhysicalDeviceFragmentShadingRateKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRateKHR const *>( &rhs ) )
30871     {}
30872 
30873 
30874     PhysicalDeviceFragmentShadingRateKHR & operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30875 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30876 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR30877     PhysicalDeviceFragmentShadingRateKHR & operator=( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30878     {
30879       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR const *>( &rhs );
30880       return *this;
30881     }
30882 
30883 
operator VkPhysicalDeviceFragmentShadingRateKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR30884     operator VkPhysicalDeviceFragmentShadingRateKHR const &() const VULKAN_HPP_NOEXCEPT
30885     {
30886       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRateKHR*>( this );
30887     }
30888 
operator VkPhysicalDeviceFragmentShadingRateKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR30889     operator VkPhysicalDeviceFragmentShadingRateKHR &() VULKAN_HPP_NOEXCEPT
30890     {
30891       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRateKHR*>( this );
30892     }
30893 
30894 #if defined( VULKAN_HPP_USE_REFLECT )
30895 #if 14 <= VULKAN_HPP_CPP_VERSION
30896     auto
30897 #else
30898     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::Extent2D const &>
30899 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR30900       reflect() const VULKAN_HPP_NOEXCEPT
30901     {
30902       return std::tie( sType, pNext, sampleCounts, fragmentSize );
30903     }
30904 #endif
30905 
30906 
30907 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30908 auto operator<=>( PhysicalDeviceFragmentShadingRateKHR const & ) const = default;
30909 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR30910     bool operator==( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30911     {
30912 #if defined( VULKAN_HPP_USE_REFLECT )
30913       return this->reflect() == rhs.reflect();
30914 #else
30915       return ( sType == rhs.sType )
30916           && ( pNext == rhs.pNext )
30917           && ( sampleCounts == rhs.sampleCounts )
30918           && ( fragmentSize == rhs.fragmentSize );
30919 #endif
30920     }
30921 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR30922     bool operator!=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30923     {
30924       return !operator==( rhs );
30925     }
30926 #endif
30927 
30928     public:
30929     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateKHR;
30930     void * pNext = {};
30931     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {};
30932     VULKAN_HPP_NAMESPACE::Extent2D fragmentSize = {};
30933 
30934   };
30935 
30936   template <>
30937   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRateKHR>
30938   {
30939     using Type = PhysicalDeviceFragmentShadingRateKHR;
30940   };
30941 
30942   struct PhysicalDeviceFragmentShadingRatePropertiesKHR
30943   {
30944     using NativeType = VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
30945 
30946     static const bool allowDuplicate = false;
30947     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
30948 
30949 
30950 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceFragmentShadingRatePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR30951 VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR(VULKAN_HPP_NAMESPACE::Extent2D minFragmentShadingRateAttachmentTexelSize_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxFragmentShadingRateAttachmentTexelSize_ = {}, uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ = {}, VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateWithMultipleViewports_ = {}, VULKAN_HPP_NAMESPACE::Bool32 layeredShadingRateAttachments_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateNonTrivialCombinerOps_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxFragmentSize_ = {}, uint32_t maxFragmentSizeAspectRatio_ = {}, uint32_t maxFragmentShadingRateCoverageSamples_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderDepthStencilWrites_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithSampleMask_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderSampleMask_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithConservativeRasterization_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithFragmentShaderInterlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithCustomSampleLocations_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateStrictMultiplyCombiner_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
30952     : pNext( pNext_ ), minFragmentShadingRateAttachmentTexelSize( minFragmentShadingRateAttachmentTexelSize_ ), maxFragmentShadingRateAttachmentTexelSize( maxFragmentShadingRateAttachmentTexelSize_ ), maxFragmentShadingRateAttachmentTexelSizeAspectRatio( maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ ), primitiveFragmentShadingRateWithMultipleViewports( primitiveFragmentShadingRateWithMultipleViewports_ ), layeredShadingRateAttachments( layeredShadingRateAttachments_ ), fragmentShadingRateNonTrivialCombinerOps( fragmentShadingRateNonTrivialCombinerOps_ ), maxFragmentSize( maxFragmentSize_ ), maxFragmentSizeAspectRatio( maxFragmentSizeAspectRatio_ ), maxFragmentShadingRateCoverageSamples( maxFragmentShadingRateCoverageSamples_ ), maxFragmentShadingRateRasterizationSamples( maxFragmentShadingRateRasterizationSamples_ ), fragmentShadingRateWithShaderDepthStencilWrites( fragmentShadingRateWithShaderDepthStencilWrites_ ), fragmentShadingRateWithSampleMask( fragmentShadingRateWithSampleMask_ ), fragmentShadingRateWithShaderSampleMask( fragmentShadingRateWithShaderSampleMask_ ), fragmentShadingRateWithConservativeRasterization( fragmentShadingRateWithConservativeRasterization_ ), fragmentShadingRateWithFragmentShaderInterlock( fragmentShadingRateWithFragmentShaderInterlock_ ), fragmentShadingRateWithCustomSampleLocations( fragmentShadingRateWithCustomSampleLocations_ ), fragmentShadingRateStrictMultiplyCombiner( fragmentShadingRateStrictMultiplyCombiner_ )
30953     {}
30954 
30955     VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30956 
PhysicalDeviceFragmentShadingRatePropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR30957     PhysicalDeviceFragmentShadingRatePropertiesKHR( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30958       : PhysicalDeviceFragmentShadingRatePropertiesKHR( *reinterpret_cast<PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs ) )
30959     {}
30960 
30961 
30962     PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
30963 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
30964 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR30965     PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
30966     {
30967       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR const *>( &rhs );
30968       return *this;
30969     }
30970 
30971 
operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR30972     operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
30973     {
30974       return *reinterpret_cast<const VkPhysicalDeviceFragmentShadingRatePropertiesKHR*>( this );
30975     }
30976 
operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR30977     operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR &() VULKAN_HPP_NOEXCEPT
30978     {
30979       return *reinterpret_cast<VkPhysicalDeviceFragmentShadingRatePropertiesKHR*>( this );
30980     }
30981 
30982 #if defined( VULKAN_HPP_USE_REFLECT )
30983 #if 14 <= VULKAN_HPP_CPP_VERSION
30984     auto
30985 #else
30986     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::SampleCountFlagBits const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
30987 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR30988       reflect() const VULKAN_HPP_NOEXCEPT
30989     {
30990       return std::tie( sType, pNext, minFragmentShadingRateAttachmentTexelSize, maxFragmentShadingRateAttachmentTexelSize, maxFragmentShadingRateAttachmentTexelSizeAspectRatio, primitiveFragmentShadingRateWithMultipleViewports, layeredShadingRateAttachments, fragmentShadingRateNonTrivialCombinerOps, maxFragmentSize, maxFragmentSizeAspectRatio, maxFragmentShadingRateCoverageSamples, maxFragmentShadingRateRasterizationSamples, fragmentShadingRateWithShaderDepthStencilWrites, fragmentShadingRateWithSampleMask, fragmentShadingRateWithShaderSampleMask, fragmentShadingRateWithConservativeRasterization, fragmentShadingRateWithFragmentShaderInterlock, fragmentShadingRateWithCustomSampleLocations, fragmentShadingRateStrictMultiplyCombiner );
30991     }
30992 #endif
30993 
30994 
30995 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
30996 auto operator<=>( PhysicalDeviceFragmentShadingRatePropertiesKHR const & ) const = default;
30997 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR30998     bool operator==( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
30999     {
31000 #if defined( VULKAN_HPP_USE_REFLECT )
31001       return this->reflect() == rhs.reflect();
31002 #else
31003       return ( sType == rhs.sType )
31004           && ( pNext == rhs.pNext )
31005           && ( minFragmentShadingRateAttachmentTexelSize == rhs.minFragmentShadingRateAttachmentTexelSize )
31006           && ( maxFragmentShadingRateAttachmentTexelSize == rhs.maxFragmentShadingRateAttachmentTexelSize )
31007           && ( maxFragmentShadingRateAttachmentTexelSizeAspectRatio == rhs.maxFragmentShadingRateAttachmentTexelSizeAspectRatio )
31008           && ( primitiveFragmentShadingRateWithMultipleViewports == rhs.primitiveFragmentShadingRateWithMultipleViewports )
31009           && ( layeredShadingRateAttachments == rhs.layeredShadingRateAttachments )
31010           && ( fragmentShadingRateNonTrivialCombinerOps == rhs.fragmentShadingRateNonTrivialCombinerOps )
31011           && ( maxFragmentSize == rhs.maxFragmentSize )
31012           && ( maxFragmentSizeAspectRatio == rhs.maxFragmentSizeAspectRatio )
31013           && ( maxFragmentShadingRateCoverageSamples == rhs.maxFragmentShadingRateCoverageSamples )
31014           && ( maxFragmentShadingRateRasterizationSamples == rhs.maxFragmentShadingRateRasterizationSamples )
31015           && ( fragmentShadingRateWithShaderDepthStencilWrites == rhs.fragmentShadingRateWithShaderDepthStencilWrites )
31016           && ( fragmentShadingRateWithSampleMask == rhs.fragmentShadingRateWithSampleMask )
31017           && ( fragmentShadingRateWithShaderSampleMask == rhs.fragmentShadingRateWithShaderSampleMask )
31018           && ( fragmentShadingRateWithConservativeRasterization == rhs.fragmentShadingRateWithConservativeRasterization )
31019           && ( fragmentShadingRateWithFragmentShaderInterlock == rhs.fragmentShadingRateWithFragmentShaderInterlock )
31020           && ( fragmentShadingRateWithCustomSampleLocations == rhs.fragmentShadingRateWithCustomSampleLocations )
31021           && ( fragmentShadingRateStrictMultiplyCombiner == rhs.fragmentShadingRateStrictMultiplyCombiner );
31022 #endif
31023     }
31024 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR31025     bool operator!=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
31026     {
31027       return !operator==( rhs );
31028     }
31029 #endif
31030 
31031     public:
31032     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR;
31033     void * pNext = {};
31034     VULKAN_HPP_NAMESPACE::Extent2D minFragmentShadingRateAttachmentTexelSize = {};
31035     VULKAN_HPP_NAMESPACE::Extent2D maxFragmentShadingRateAttachmentTexelSize = {};
31036     uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio = {};
31037     VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateWithMultipleViewports = {};
31038     VULKAN_HPP_NAMESPACE::Bool32 layeredShadingRateAttachments = {};
31039     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateNonTrivialCombinerOps = {};
31040     VULKAN_HPP_NAMESPACE::Extent2D maxFragmentSize = {};
31041     uint32_t maxFragmentSizeAspectRatio = {};
31042     uint32_t maxFragmentShadingRateCoverageSamples = {};
31043     VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1;
31044     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderDepthStencilWrites = {};
31045     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithSampleMask = {};
31046     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderSampleMask = {};
31047     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithConservativeRasterization = {};
31048     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithFragmentShaderInterlock = {};
31049     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithCustomSampleLocations = {};
31050     VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateStrictMultiplyCombiner = {};
31051 
31052   };
31053 
31054   template <>
31055   struct CppType<StructureType, StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR>
31056   {
31057     using Type = PhysicalDeviceFragmentShadingRatePropertiesKHR;
31058   };
31059 
31060   struct PhysicalDeviceGroupProperties
31061   {
31062     using NativeType = VkPhysicalDeviceGroupProperties;
31063 
31064     static const bool allowDuplicate = false;
31065     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceGroupProperties;
31066 
31067 
31068 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties31069 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties(uint32_t physicalDeviceCount_ = {}, std::array<VULKAN_HPP_NAMESPACE::PhysicalDevice,VK_MAX_DEVICE_GROUP_SIZE> const & physicalDevices_ = {}, VULKAN_HPP_NAMESPACE::Bool32 subsetAllocation_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31070     : pNext( pNext_ ), physicalDeviceCount( physicalDeviceCount_ ), physicalDevices( physicalDevices_ ), subsetAllocation( subsetAllocation_ )
31071     {}
31072 
31073     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31074 
PhysicalDeviceGroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties31075     PhysicalDeviceGroupProperties( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
31076       : PhysicalDeviceGroupProperties( *reinterpret_cast<PhysicalDeviceGroupProperties const *>( &rhs ) )
31077     {}
31078 
31079 
31080     PhysicalDeviceGroupProperties & operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31081 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31082 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties31083     PhysicalDeviceGroupProperties & operator=( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
31084     {
31085       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties const *>( &rhs );
31086       return *this;
31087     }
31088 
31089 
operator VkPhysicalDeviceGroupProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties31090     operator VkPhysicalDeviceGroupProperties const &() const VULKAN_HPP_NOEXCEPT
31091     {
31092       return *reinterpret_cast<const VkPhysicalDeviceGroupProperties*>( this );
31093     }
31094 
operator VkPhysicalDeviceGroupProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties31095     operator VkPhysicalDeviceGroupProperties &() VULKAN_HPP_NOEXCEPT
31096     {
31097       return *reinterpret_cast<VkPhysicalDeviceGroupProperties*>( this );
31098     }
31099 
31100 #if defined( VULKAN_HPP_USE_REFLECT )
31101 #if 14 <= VULKAN_HPP_CPP_VERSION
31102     auto
31103 #else
31104     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
31105 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties31106       reflect() const VULKAN_HPP_NOEXCEPT
31107     {
31108       return std::tie( sType, pNext, physicalDeviceCount, physicalDevices, subsetAllocation );
31109     }
31110 #endif
31111 
31112 
31113 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31114 auto operator<=>( PhysicalDeviceGroupProperties const & ) const = default;
31115 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties31116     bool operator==( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
31117     {
31118 #if defined( VULKAN_HPP_USE_REFLECT )
31119       return this->reflect() == rhs.reflect();
31120 #else
31121       return ( sType == rhs.sType )
31122           && ( pNext == rhs.pNext )
31123           && ( physicalDeviceCount == rhs.physicalDeviceCount )
31124           && ( physicalDevices == rhs.physicalDevices )
31125           && ( subsetAllocation == rhs.subsetAllocation );
31126 #endif
31127     }
31128 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties31129     bool operator!=( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
31130     {
31131       return !operator==( rhs );
31132     }
31133 #endif
31134 
31135     public:
31136     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceGroupProperties;
31137     void * pNext = {};
31138     uint32_t physicalDeviceCount = {};
31139     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::PhysicalDevice, VK_MAX_DEVICE_GROUP_SIZE> physicalDevices = {};
31140     VULKAN_HPP_NAMESPACE::Bool32 subsetAllocation = {};
31141 
31142   };
31143 
31144   template <>
31145   struct CppType<StructureType, StructureType::ePhysicalDeviceGroupProperties>
31146   {
31147     using Type = PhysicalDeviceGroupProperties;
31148   };
31149   using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties;
31150 
31151   struct PhysicalDeviceHostQueryResetFeatures
31152   {
31153     using NativeType = VkPhysicalDeviceHostQueryResetFeatures;
31154 
31155     static const bool allowDuplicate = false;
31156     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceHostQueryResetFeatures;
31157 
31158 
31159 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceHostQueryResetFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31160 VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures(VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31161     : pNext( pNext_ ), hostQueryReset( hostQueryReset_ )
31162     {}
31163 
31164     VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31165 
PhysicalDeviceHostQueryResetFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31166     PhysicalDeviceHostQueryResetFeatures( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
31167       : PhysicalDeviceHostQueryResetFeatures( *reinterpret_cast<PhysicalDeviceHostQueryResetFeatures const *>( &rhs ) )
31168     {}
31169 
31170 
31171     PhysicalDeviceHostQueryResetFeatures & operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31172 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31173 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31174     PhysicalDeviceHostQueryResetFeatures & operator=( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
31175     {
31176       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures const *>( &rhs );
31177       return *this;
31178     }
31179 
31180 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31181     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
31182     {
31183       pNext = pNext_;
31184       return *this;
31185     }
31186 
setHostQueryResetVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31187     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT
31188     {
31189       hostQueryReset = hostQueryReset_;
31190       return *this;
31191     }
31192 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31193 
31194 
operator VkPhysicalDeviceHostQueryResetFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31195     operator VkPhysicalDeviceHostQueryResetFeatures const &() const VULKAN_HPP_NOEXCEPT
31196     {
31197       return *reinterpret_cast<const VkPhysicalDeviceHostQueryResetFeatures*>( this );
31198     }
31199 
operator VkPhysicalDeviceHostQueryResetFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31200     operator VkPhysicalDeviceHostQueryResetFeatures &() VULKAN_HPP_NOEXCEPT
31201     {
31202       return *reinterpret_cast<VkPhysicalDeviceHostQueryResetFeatures*>( this );
31203     }
31204 
31205 #if defined( VULKAN_HPP_USE_REFLECT )
31206 #if 14 <= VULKAN_HPP_CPP_VERSION
31207     auto
31208 #else
31209     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
31210 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31211       reflect() const VULKAN_HPP_NOEXCEPT
31212     {
31213       return std::tie( sType, pNext, hostQueryReset );
31214     }
31215 #endif
31216 
31217 
31218 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31219 auto operator<=>( PhysicalDeviceHostQueryResetFeatures const & ) const = default;
31220 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31221     bool operator==( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
31222     {
31223 #if defined( VULKAN_HPP_USE_REFLECT )
31224       return this->reflect() == rhs.reflect();
31225 #else
31226       return ( sType == rhs.sType )
31227           && ( pNext == rhs.pNext )
31228           && ( hostQueryReset == rhs.hostQueryReset );
31229 #endif
31230     }
31231 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures31232     bool operator!=( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
31233     {
31234       return !operator==( rhs );
31235     }
31236 #endif
31237 
31238     public:
31239     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceHostQueryResetFeatures;
31240     void * pNext = {};
31241     VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset = {};
31242 
31243   };
31244 
31245   template <>
31246   struct CppType<StructureType, StructureType::ePhysicalDeviceHostQueryResetFeatures>
31247   {
31248     using Type = PhysicalDeviceHostQueryResetFeatures;
31249   };
31250   using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures;
31251 
31252   struct PhysicalDeviceIDProperties
31253   {
31254     using NativeType = VkPhysicalDeviceIDProperties;
31255 
31256     static const bool allowDuplicate = false;
31257     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceIdProperties;
31258 
31259 
31260 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceIDPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties31261 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties(std::array<uint8_t,VK_UUID_SIZE> const & deviceUUID_ = {}, std::array<uint8_t,VK_UUID_SIZE> const & driverUUID_ = {}, std::array<uint8_t,VK_LUID_SIZE> const & deviceLUID_ = {}, uint32_t deviceNodeMask_ = {}, VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31262     : pNext( pNext_ ), deviceUUID( deviceUUID_ ), driverUUID( driverUUID_ ), deviceLUID( deviceLUID_ ), deviceNodeMask( deviceNodeMask_ ), deviceLUIDValid( deviceLUIDValid_ )
31263     {}
31264 
31265     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31266 
PhysicalDeviceIDPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties31267     PhysicalDeviceIDProperties( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
31268       : PhysicalDeviceIDProperties( *reinterpret_cast<PhysicalDeviceIDProperties const *>( &rhs ) )
31269     {}
31270 
31271 
31272     PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31273 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31274 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties31275     PhysicalDeviceIDProperties & operator=( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT
31276     {
31277       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties const *>( &rhs );
31278       return *this;
31279     }
31280 
31281 
operator VkPhysicalDeviceIDProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties31282     operator VkPhysicalDeviceIDProperties const &() const VULKAN_HPP_NOEXCEPT
31283     {
31284       return *reinterpret_cast<const VkPhysicalDeviceIDProperties*>( this );
31285     }
31286 
operator VkPhysicalDeviceIDProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties31287     operator VkPhysicalDeviceIDProperties &() VULKAN_HPP_NOEXCEPT
31288     {
31289       return *reinterpret_cast<VkPhysicalDeviceIDProperties*>( this );
31290     }
31291 
31292 #if defined( VULKAN_HPP_USE_REFLECT )
31293 #if 14 <= VULKAN_HPP_CPP_VERSION
31294     auto
31295 #else
31296     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
31297 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties31298       reflect() const VULKAN_HPP_NOEXCEPT
31299     {
31300       return std::tie( sType, pNext, deviceUUID, driverUUID, deviceLUID, deviceNodeMask, deviceLUIDValid );
31301     }
31302 #endif
31303 
31304 
31305 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31306 auto operator<=>( PhysicalDeviceIDProperties const & ) const = default;
31307 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties31308     bool operator==( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
31309     {
31310 #if defined( VULKAN_HPP_USE_REFLECT )
31311       return this->reflect() == rhs.reflect();
31312 #else
31313       return ( sType == rhs.sType )
31314           && ( pNext == rhs.pNext )
31315           && ( deviceUUID == rhs.deviceUUID )
31316           && ( driverUUID == rhs.driverUUID )
31317           && ( deviceLUID == rhs.deviceLUID )
31318           && ( deviceNodeMask == rhs.deviceNodeMask )
31319           && ( deviceLUIDValid == rhs.deviceLUIDValid );
31320 #endif
31321     }
31322 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties31323     bool operator!=( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
31324     {
31325       return !operator==( rhs );
31326     }
31327 #endif
31328 
31329     public:
31330     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIdProperties;
31331     void * pNext = {};
31332     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID = {};
31333     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID = {};
31334     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> deviceLUID = {};
31335     uint32_t deviceNodeMask = {};
31336     VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid = {};
31337 
31338   };
31339 
31340   template <>
31341   struct CppType<StructureType, StructureType::ePhysicalDeviceIdProperties>
31342   {
31343     using Type = PhysicalDeviceIDProperties;
31344   };
31345   using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties;
31346 
31347   struct PhysicalDeviceImageDrmFormatModifierInfoEXT
31348   {
31349     using NativeType = VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
31350 
31351     static const bool allowDuplicate = false;
31352     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
31353 
31354 
31355 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31356 VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT(uint64_t drmFormatModifier_ = {}, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = {}, const uint32_t * pQueueFamilyIndices_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31357     : pNext( pNext_ ), drmFormatModifier( drmFormatModifier_ ), sharingMode( sharingMode_ ), queueFamilyIndexCount( queueFamilyIndexCount_ ), pQueueFamilyIndices( pQueueFamilyIndices_ )
31358     {}
31359 
31360     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31361 
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31362     PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31363       : PhysicalDeviceImageDrmFormatModifierInfoEXT( *reinterpret_cast<PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs ) )
31364     {}
31365 
31366 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PhysicalDeviceImageDrmFormatModifierInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31367     PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t drmFormatModifier_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_, const void * pNext_ = nullptr )
31368     : pNext( pNext_ ), drmFormatModifier( drmFormatModifier_ ), sharingMode( sharingMode_ ), queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) ), pQueueFamilyIndices( queueFamilyIndices_.data() )
31369     {}
31370 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31371 
31372 
31373     PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31374 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31375 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31376     PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31377     {
31378       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT const *>( &rhs );
31379       return *this;
31380     }
31381 
31382 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31383     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31384     {
31385       pNext = pNext_;
31386       return *this;
31387     }
31388 
setDrmFormatModifierVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31389     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT
31390     {
31391       drmFormatModifier = drmFormatModifier_;
31392       return *this;
31393     }
31394 
setSharingModeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31395     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT
31396     {
31397       sharingMode = sharingMode_;
31398       return *this;
31399     }
31400 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31401     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
31402     {
31403       queueFamilyIndexCount = queueFamilyIndexCount_;
31404       return *this;
31405     }
31406 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31407     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
31408     {
31409       pQueueFamilyIndices = pQueueFamilyIndices_;
31410       return *this;
31411     }
31412 
31413 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31414     PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
31415     {
31416       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
31417       pQueueFamilyIndices = queueFamilyIndices_.data();
31418       return *this;
31419     }
31420 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31421 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31422 
31423 
operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31424     operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &() const VULKAN_HPP_NOEXCEPT
31425     {
31426       return *reinterpret_cast<const VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>( this );
31427     }
31428 
operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31429     operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &() VULKAN_HPP_NOEXCEPT
31430     {
31431       return *reinterpret_cast<VkPhysicalDeviceImageDrmFormatModifierInfoEXT*>( this );
31432     }
31433 
31434 #if defined( VULKAN_HPP_USE_REFLECT )
31435 #if 14 <= VULKAN_HPP_CPP_VERSION
31436     auto
31437 #else
31438     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint64_t const &, VULKAN_HPP_NAMESPACE::SharingMode const &, uint32_t const &, const uint32_t * const &>
31439 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31440       reflect() const VULKAN_HPP_NOEXCEPT
31441     {
31442       return std::tie( sType, pNext, drmFormatModifier, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices );
31443     }
31444 #endif
31445 
31446 
31447 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31448 auto operator<=>( PhysicalDeviceImageDrmFormatModifierInfoEXT const & ) const = default;
31449 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31450     bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31451     {
31452 #if defined( VULKAN_HPP_USE_REFLECT )
31453       return this->reflect() == rhs.reflect();
31454 #else
31455       return ( sType == rhs.sType )
31456           && ( pNext == rhs.pNext )
31457           && ( drmFormatModifier == rhs.drmFormatModifier )
31458           && ( sharingMode == rhs.sharingMode )
31459           && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
31460           && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
31461 #endif
31462     }
31463 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT31464     bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31465     {
31466       return !operator==( rhs );
31467     }
31468 #endif
31469 
31470     public:
31471     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT;
31472     const void * pNext = {};
31473     uint64_t drmFormatModifier = {};
31474     VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
31475     uint32_t queueFamilyIndexCount = {};
31476     const uint32_t * pQueueFamilyIndices = {};
31477 
31478   };
31479 
31480   template <>
31481   struct CppType<StructureType, StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT>
31482   {
31483     using Type = PhysicalDeviceImageDrmFormatModifierInfoEXT;
31484   };
31485 
31486   struct PhysicalDeviceImageFormatInfo2
31487   {
31488     using NativeType = VkPhysicalDeviceImageFormatInfo2;
31489 
31490     static const bool allowDuplicate = false;
31491     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageFormatInfo2;
31492 
31493 
31494 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231495 VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ImageType type_ = VULKAN_HPP_NAMESPACE::ImageType::e1D, VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31496     : pNext( pNext_ ), format( format_ ), type( type_ ), tiling( tiling_ ), usage( usage_ ), flags( flags_ )
31497     {}
31498 
31499     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31500 
PhysicalDeviceImageFormatInfo2VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231501     PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
31502       : PhysicalDeviceImageFormatInfo2( *reinterpret_cast<PhysicalDeviceImageFormatInfo2 const *>( &rhs ) )
31503     {}
31504 
31505 
31506     PhysicalDeviceImageFormatInfo2 & operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31507 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31508 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231509     PhysicalDeviceImageFormatInfo2 & operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
31510     {
31511       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 const *>( &rhs );
31512       return *this;
31513     }
31514 
31515 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231516     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
31517     {
31518       pNext = pNext_;
31519       return *this;
31520     }
31521 
setFormatVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231522     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
31523     {
31524       format = format_;
31525       return *this;
31526     }
31527 
setTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231528     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT
31529     {
31530       type = type_;
31531       return *this;
31532     }
31533 
setTilingVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231534     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT
31535     {
31536       tiling = tiling_;
31537       return *this;
31538     }
31539 
setUsageVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231540     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT
31541     {
31542       usage = usage_;
31543       return *this;
31544     }
31545 
setFlagsVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231546     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
31547     {
31548       flags = flags_;
31549       return *this;
31550     }
31551 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31552 
31553 
operator VkPhysicalDeviceImageFormatInfo2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231554     operator VkPhysicalDeviceImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT
31555     {
31556       return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2*>( this );
31557     }
31558 
operator VkPhysicalDeviceImageFormatInfo2&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231559     operator VkPhysicalDeviceImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT
31560     {
31561       return *reinterpret_cast<VkPhysicalDeviceImageFormatInfo2*>( this );
31562     }
31563 
31564 #if defined( VULKAN_HPP_USE_REFLECT )
31565 #if 14 <= VULKAN_HPP_CPP_VERSION
31566     auto
31567 #else
31568     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::ImageType const &, VULKAN_HPP_NAMESPACE::ImageTiling const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &, VULKAN_HPP_NAMESPACE::ImageCreateFlags const &>
31569 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231570       reflect() const VULKAN_HPP_NOEXCEPT
31571     {
31572       return std::tie( sType, pNext, format, type, tiling, usage, flags );
31573     }
31574 #endif
31575 
31576 
31577 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31578 auto operator<=>( PhysicalDeviceImageFormatInfo2 const & ) const = default;
31579 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231580     bool operator==( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
31581     {
31582 #if defined( VULKAN_HPP_USE_REFLECT )
31583       return this->reflect() == rhs.reflect();
31584 #else
31585       return ( sType == rhs.sType )
31586           && ( pNext == rhs.pNext )
31587           && ( format == rhs.format )
31588           && ( type == rhs.type )
31589           && ( tiling == rhs.tiling )
31590           && ( usage == rhs.usage )
31591           && ( flags == rhs.flags );
31592 #endif
31593     }
31594 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo231595     bool operator!=( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
31596     {
31597       return !operator==( rhs );
31598     }
31599 #endif
31600 
31601     public:
31602     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2;
31603     const void * pNext = {};
31604     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
31605     VULKAN_HPP_NAMESPACE::ImageType type = VULKAN_HPP_NAMESPACE::ImageType::e1D;
31606     VULKAN_HPP_NAMESPACE::ImageTiling tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal;
31607     VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {};
31608     VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {};
31609 
31610   };
31611 
31612   template <>
31613   struct CppType<StructureType, StructureType::ePhysicalDeviceImageFormatInfo2>
31614   {
31615     using Type = PhysicalDeviceImageFormatInfo2;
31616   };
31617   using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2;
31618 
31619   struct PhysicalDeviceImageRobustnessFeatures
31620   {
31621     using NativeType = VkPhysicalDeviceImageRobustnessFeatures;
31622 
31623     static const bool allowDuplicate = false;
31624     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageRobustnessFeatures;
31625 
31626 
31627 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageRobustnessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31628 VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures(VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31629     : pNext( pNext_ ), robustImageAccess( robustImageAccess_ )
31630     {}
31631 
31632     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31633 
PhysicalDeviceImageRobustnessFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31634     PhysicalDeviceImageRobustnessFeatures( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
31635       : PhysicalDeviceImageRobustnessFeatures( *reinterpret_cast<PhysicalDeviceImageRobustnessFeatures const *>( &rhs ) )
31636     {}
31637 
31638 
31639     PhysicalDeviceImageRobustnessFeatures & operator=( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31640 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31641 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31642     PhysicalDeviceImageRobustnessFeatures & operator=( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
31643     {
31644       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures const *>( &rhs );
31645       return *this;
31646     }
31647 
31648 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31649     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
31650     {
31651       pNext = pNext_;
31652       return *this;
31653     }
31654 
setRobustImageAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31655     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT
31656     {
31657       robustImageAccess = robustImageAccess_;
31658       return *this;
31659     }
31660 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31661 
31662 
operator VkPhysicalDeviceImageRobustnessFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31663     operator VkPhysicalDeviceImageRobustnessFeatures const &() const VULKAN_HPP_NOEXCEPT
31664     {
31665       return *reinterpret_cast<const VkPhysicalDeviceImageRobustnessFeatures*>( this );
31666     }
31667 
operator VkPhysicalDeviceImageRobustnessFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31668     operator VkPhysicalDeviceImageRobustnessFeatures &() VULKAN_HPP_NOEXCEPT
31669     {
31670       return *reinterpret_cast<VkPhysicalDeviceImageRobustnessFeatures*>( this );
31671     }
31672 
31673 #if defined( VULKAN_HPP_USE_REFLECT )
31674 #if 14 <= VULKAN_HPP_CPP_VERSION
31675     auto
31676 #else
31677     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
31678 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31679       reflect() const VULKAN_HPP_NOEXCEPT
31680     {
31681       return std::tie( sType, pNext, robustImageAccess );
31682     }
31683 #endif
31684 
31685 
31686 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31687 auto operator<=>( PhysicalDeviceImageRobustnessFeatures const & ) const = default;
31688 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31689     bool operator==( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
31690     {
31691 #if defined( VULKAN_HPP_USE_REFLECT )
31692       return this->reflect() == rhs.reflect();
31693 #else
31694       return ( sType == rhs.sType )
31695           && ( pNext == rhs.pNext )
31696           && ( robustImageAccess == rhs.robustImageAccess );
31697 #endif
31698     }
31699 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures31700     bool operator!=( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
31701     {
31702       return !operator==( rhs );
31703     }
31704 #endif
31705 
31706     public:
31707     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageRobustnessFeatures;
31708     void * pNext = {};
31709     VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess = {};
31710 
31711   };
31712 
31713   template <>
31714   struct CppType<StructureType, StructureType::ePhysicalDeviceImageRobustnessFeatures>
31715   {
31716     using Type = PhysicalDeviceImageRobustnessFeatures;
31717   };
31718   using PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures;
31719 
31720   struct PhysicalDeviceImageViewImageFormatInfoEXT
31721   {
31722     using NativeType = VkPhysicalDeviceImageViewImageFormatInfoEXT;
31723 
31724     static const bool allowDuplicate = false;
31725     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
31726 
31727 
31728 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImageViewImageFormatInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31729 VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT(VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ = VULKAN_HPP_NAMESPACE::ImageViewType::e1D, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31730     : pNext( pNext_ ), imageViewType( imageViewType_ )
31731     {}
31732 
31733     VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31734 
PhysicalDeviceImageViewImageFormatInfoEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31735     PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31736       : PhysicalDeviceImageViewImageFormatInfoEXT( *reinterpret_cast<PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs ) )
31737     {}
31738 
31739 
31740     PhysicalDeviceImageViewImageFormatInfoEXT & operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31741 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31742 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31743     PhysicalDeviceImageViewImageFormatInfoEXT & operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31744     {
31745       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT const *>( &rhs );
31746       return *this;
31747     }
31748 
31749 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31750     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
31751     {
31752       pNext = pNext_;
31753       return *this;
31754     }
31755 
setImageViewTypeVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31756     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & setImageViewType( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ ) VULKAN_HPP_NOEXCEPT
31757     {
31758       imageViewType = imageViewType_;
31759       return *this;
31760     }
31761 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31762 
31763 
operator VkPhysicalDeviceImageViewImageFormatInfoEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31764     operator VkPhysicalDeviceImageViewImageFormatInfoEXT const &() const VULKAN_HPP_NOEXCEPT
31765     {
31766       return *reinterpret_cast<const VkPhysicalDeviceImageViewImageFormatInfoEXT*>( this );
31767     }
31768 
operator VkPhysicalDeviceImageViewImageFormatInfoEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31769     operator VkPhysicalDeviceImageViewImageFormatInfoEXT &() VULKAN_HPP_NOEXCEPT
31770     {
31771       return *reinterpret_cast<VkPhysicalDeviceImageViewImageFormatInfoEXT*>( this );
31772     }
31773 
31774 #if defined( VULKAN_HPP_USE_REFLECT )
31775 #if 14 <= VULKAN_HPP_CPP_VERSION
31776     auto
31777 #else
31778     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageViewType const &>
31779 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31780       reflect() const VULKAN_HPP_NOEXCEPT
31781     {
31782       return std::tie( sType, pNext, imageViewType );
31783     }
31784 #endif
31785 
31786 
31787 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31788 auto operator<=>( PhysicalDeviceImageViewImageFormatInfoEXT const & ) const = default;
31789 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31790     bool operator==( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31791     {
31792 #if defined( VULKAN_HPP_USE_REFLECT )
31793       return this->reflect() == rhs.reflect();
31794 #else
31795       return ( sType == rhs.sType )
31796           && ( pNext == rhs.pNext )
31797           && ( imageViewType == rhs.imageViewType );
31798 #endif
31799     }
31800 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT31801     bool operator!=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31802     {
31803       return !operator==( rhs );
31804     }
31805 #endif
31806 
31807     public:
31808     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT;
31809     void * pNext = {};
31810     VULKAN_HPP_NAMESPACE::ImageViewType imageViewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D;
31811 
31812   };
31813 
31814   template <>
31815   struct CppType<StructureType, StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT>
31816   {
31817     using Type = PhysicalDeviceImageViewImageFormatInfoEXT;
31818   };
31819 
31820   struct PhysicalDeviceImagelessFramebufferFeatures
31821   {
31822     using NativeType = VkPhysicalDeviceImagelessFramebufferFeatures;
31823 
31824     static const bool allowDuplicate = false;
31825     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
31826 
31827 
31828 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceImagelessFramebufferFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31829 VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures(VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31830     : pNext( pNext_ ), imagelessFramebuffer( imagelessFramebuffer_ )
31831     {}
31832 
31833     VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31834 
PhysicalDeviceImagelessFramebufferFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31835     PhysicalDeviceImagelessFramebufferFeatures( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
31836       : PhysicalDeviceImagelessFramebufferFeatures( *reinterpret_cast<PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs ) )
31837     {}
31838 
31839 
31840     PhysicalDeviceImagelessFramebufferFeatures & operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31841 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31842 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31843     PhysicalDeviceImagelessFramebufferFeatures & operator=( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
31844     {
31845       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures const *>( &rhs );
31846       return *this;
31847     }
31848 
31849 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31850     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
31851     {
31852       pNext = pNext_;
31853       return *this;
31854     }
31855 
setImagelessFramebufferVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31856     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT
31857     {
31858       imagelessFramebuffer = imagelessFramebuffer_;
31859       return *this;
31860     }
31861 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31862 
31863 
operator VkPhysicalDeviceImagelessFramebufferFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31864     operator VkPhysicalDeviceImagelessFramebufferFeatures const &() const VULKAN_HPP_NOEXCEPT
31865     {
31866       return *reinterpret_cast<const VkPhysicalDeviceImagelessFramebufferFeatures*>( this );
31867     }
31868 
operator VkPhysicalDeviceImagelessFramebufferFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31869     operator VkPhysicalDeviceImagelessFramebufferFeatures &() VULKAN_HPP_NOEXCEPT
31870     {
31871       return *reinterpret_cast<VkPhysicalDeviceImagelessFramebufferFeatures*>( this );
31872     }
31873 
31874 #if defined( VULKAN_HPP_USE_REFLECT )
31875 #if 14 <= VULKAN_HPP_CPP_VERSION
31876     auto
31877 #else
31878     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
31879 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31880       reflect() const VULKAN_HPP_NOEXCEPT
31881     {
31882       return std::tie( sType, pNext, imagelessFramebuffer );
31883     }
31884 #endif
31885 
31886 
31887 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31888 auto operator<=>( PhysicalDeviceImagelessFramebufferFeatures const & ) const = default;
31889 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31890     bool operator==( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
31891     {
31892 #if defined( VULKAN_HPP_USE_REFLECT )
31893       return this->reflect() == rhs.reflect();
31894 #else
31895       return ( sType == rhs.sType )
31896           && ( pNext == rhs.pNext )
31897           && ( imagelessFramebuffer == rhs.imagelessFramebuffer );
31898 #endif
31899     }
31900 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures31901     bool operator!=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
31902     {
31903       return !operator==( rhs );
31904     }
31905 #endif
31906 
31907     public:
31908     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures;
31909     void * pNext = {};
31910     VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer = {};
31911 
31912   };
31913 
31914   template <>
31915   struct CppType<StructureType, StructureType::ePhysicalDeviceImagelessFramebufferFeatures>
31916   {
31917     using Type = PhysicalDeviceImagelessFramebufferFeatures;
31918   };
31919   using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures;
31920 
31921   struct PhysicalDeviceIndexTypeUint8FeaturesEXT
31922   {
31923     using NativeType = VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
31924 
31925     static const bool allowDuplicate = false;
31926     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT;
31927 
31928 
31929 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceIndexTypeUint8FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31930 VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
31931     : pNext( pNext_ ), indexTypeUint8( indexTypeUint8_ )
31932     {}
31933 
31934     VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesEXT( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31935 
PhysicalDeviceIndexTypeUint8FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31936     PhysicalDeviceIndexTypeUint8FeaturesEXT( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31937       : PhysicalDeviceIndexTypeUint8FeaturesEXT( *reinterpret_cast<PhysicalDeviceIndexTypeUint8FeaturesEXT const *>( &rhs ) )
31938     {}
31939 
31940 
31941     PhysicalDeviceIndexTypeUint8FeaturesEXT & operator=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
31942 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
31943 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31944     PhysicalDeviceIndexTypeUint8FeaturesEXT & operator=( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
31945     {
31946       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT const *>( &rhs );
31947       return *this;
31948     }
31949 
31950 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31951     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
31952     {
31953       pNext = pNext_;
31954       return *this;
31955     }
31956 
setIndexTypeUint8VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31957     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesEXT & setIndexTypeUint8( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ ) VULKAN_HPP_NOEXCEPT
31958     {
31959       indexTypeUint8 = indexTypeUint8_;
31960       return *this;
31961     }
31962 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
31963 
31964 
operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31965     operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
31966     {
31967       return *reinterpret_cast<const VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>( this );
31968     }
31969 
operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31970     operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT &() VULKAN_HPP_NOEXCEPT
31971     {
31972       return *reinterpret_cast<VkPhysicalDeviceIndexTypeUint8FeaturesEXT*>( this );
31973     }
31974 
31975 #if defined( VULKAN_HPP_USE_REFLECT )
31976 #if 14 <= VULKAN_HPP_CPP_VERSION
31977     auto
31978 #else
31979     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
31980 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31981       reflect() const VULKAN_HPP_NOEXCEPT
31982     {
31983       return std::tie( sType, pNext, indexTypeUint8 );
31984     }
31985 #endif
31986 
31987 
31988 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
31989 auto operator<=>( PhysicalDeviceIndexTypeUint8FeaturesEXT const & ) const = default;
31990 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT31991     bool operator==( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
31992     {
31993 #if defined( VULKAN_HPP_USE_REFLECT )
31994       return this->reflect() == rhs.reflect();
31995 #else
31996       return ( sType == rhs.sType )
31997           && ( pNext == rhs.pNext )
31998           && ( indexTypeUint8 == rhs.indexTypeUint8 );
31999 #endif
32000     }
32001 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT32002     bool operator!=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32003     {
32004       return !operator==( rhs );
32005     }
32006 #endif
32007 
32008     public:
32009     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT;
32010     void * pNext = {};
32011     VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8 = {};
32012 
32013   };
32014 
32015   template <>
32016   struct CppType<StructureType, StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT>
32017   {
32018     using Type = PhysicalDeviceIndexTypeUint8FeaturesEXT;
32019   };
32020 
32021   struct PhysicalDeviceInlineUniformBlockFeatures
32022   {
32023     using NativeType = VkPhysicalDeviceInlineUniformBlockFeatures;
32024 
32025     static const bool allowDuplicate = false;
32026     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInlineUniformBlockFeatures;
32027 
32028 
32029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInlineUniformBlockFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32030 VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures(VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
32031     : pNext( pNext_ ), inlineUniformBlock( inlineUniformBlock_ ), descriptorBindingInlineUniformBlockUpdateAfterBind( descriptorBindingInlineUniformBlockUpdateAfterBind_ )
32032     {}
32033 
32034     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32035 
PhysicalDeviceInlineUniformBlockFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32036     PhysicalDeviceInlineUniformBlockFeatures( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
32037       : PhysicalDeviceInlineUniformBlockFeatures( *reinterpret_cast<PhysicalDeviceInlineUniformBlockFeatures const *>( &rhs ) )
32038     {}
32039 
32040 
32041     PhysicalDeviceInlineUniformBlockFeatures & operator=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32042 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32043 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32044     PhysicalDeviceInlineUniformBlockFeatures & operator=( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
32045     {
32046       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures const *>( &rhs );
32047       return *this;
32048     }
32049 
32050 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32051     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
32052     {
32053       pNext = pNext_;
32054       return *this;
32055     }
32056 
setInlineUniformBlockVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32057     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT
32058     {
32059       inlineUniformBlock = inlineUniformBlock_;
32060       return *this;
32061     }
32062 
setDescriptorBindingInlineUniformBlockUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32063     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setDescriptorBindingInlineUniformBlockUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
32064     {
32065       descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_;
32066       return *this;
32067     }
32068 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32069 
32070 
operator VkPhysicalDeviceInlineUniformBlockFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32071     operator VkPhysicalDeviceInlineUniformBlockFeatures const &() const VULKAN_HPP_NOEXCEPT
32072     {
32073       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockFeatures*>( this );
32074     }
32075 
operator VkPhysicalDeviceInlineUniformBlockFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32076     operator VkPhysicalDeviceInlineUniformBlockFeatures &() VULKAN_HPP_NOEXCEPT
32077     {
32078       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockFeatures*>( this );
32079     }
32080 
32081 #if defined( VULKAN_HPP_USE_REFLECT )
32082 #if 14 <= VULKAN_HPP_CPP_VERSION
32083     auto
32084 #else
32085     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
32086 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32087       reflect() const VULKAN_HPP_NOEXCEPT
32088     {
32089       return std::tie( sType, pNext, inlineUniformBlock, descriptorBindingInlineUniformBlockUpdateAfterBind );
32090     }
32091 #endif
32092 
32093 
32094 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
32095 auto operator<=>( PhysicalDeviceInlineUniformBlockFeatures const & ) const = default;
32096 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32097     bool operator==( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
32098     {
32099 #if defined( VULKAN_HPP_USE_REFLECT )
32100       return this->reflect() == rhs.reflect();
32101 #else
32102       return ( sType == rhs.sType )
32103           && ( pNext == rhs.pNext )
32104           && ( inlineUniformBlock == rhs.inlineUniformBlock )
32105           && ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind );
32106 #endif
32107     }
32108 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures32109     bool operator!=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
32110     {
32111       return !operator==( rhs );
32112     }
32113 #endif
32114 
32115     public:
32116     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeatures;
32117     void * pNext = {};
32118     VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock = {};
32119     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind = {};
32120 
32121   };
32122 
32123   template <>
32124   struct CppType<StructureType, StructureType::ePhysicalDeviceInlineUniformBlockFeatures>
32125   {
32126     using Type = PhysicalDeviceInlineUniformBlockFeatures;
32127   };
32128   using PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures;
32129 
32130   struct PhysicalDeviceInlineUniformBlockProperties
32131   {
32132     using NativeType = VkPhysicalDeviceInlineUniformBlockProperties;
32133 
32134     static const bool allowDuplicate = false;
32135     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInlineUniformBlockProperties;
32136 
32137 
32138 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceInlineUniformBlockPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties32139 VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties(uint32_t maxInlineUniformBlockSize_ = {}, uint32_t maxPerStageDescriptorInlineUniformBlocks_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {}, uint32_t maxDescriptorSetInlineUniformBlocks_ = {}, uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
32140     : pNext( pNext_ ), maxInlineUniformBlockSize( maxInlineUniformBlockSize_ ), maxPerStageDescriptorInlineUniformBlocks( maxPerStageDescriptorInlineUniformBlocks_ ), maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ ), maxDescriptorSetInlineUniformBlocks( maxDescriptorSetInlineUniformBlocks_ ), maxDescriptorSetUpdateAfterBindInlineUniformBlocks( maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ )
32141     {}
32142 
32143     VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32144 
PhysicalDeviceInlineUniformBlockPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties32145     PhysicalDeviceInlineUniformBlockProperties( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT
32146       : PhysicalDeviceInlineUniformBlockProperties( *reinterpret_cast<PhysicalDeviceInlineUniformBlockProperties const *>( &rhs ) )
32147     {}
32148 
32149 
32150     PhysicalDeviceInlineUniformBlockProperties & operator=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32151 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32152 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties32153     PhysicalDeviceInlineUniformBlockProperties & operator=( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT
32154     {
32155       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties const *>( &rhs );
32156       return *this;
32157     }
32158 
32159 
operator VkPhysicalDeviceInlineUniformBlockProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties32160     operator VkPhysicalDeviceInlineUniformBlockProperties const &() const VULKAN_HPP_NOEXCEPT
32161     {
32162       return *reinterpret_cast<const VkPhysicalDeviceInlineUniformBlockProperties*>( this );
32163     }
32164 
operator VkPhysicalDeviceInlineUniformBlockProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties32165     operator VkPhysicalDeviceInlineUniformBlockProperties &() VULKAN_HPP_NOEXCEPT
32166     {
32167       return *reinterpret_cast<VkPhysicalDeviceInlineUniformBlockProperties*>( this );
32168     }
32169 
32170 #if defined( VULKAN_HPP_USE_REFLECT )
32171 #if 14 <= VULKAN_HPP_CPP_VERSION
32172     auto
32173 #else
32174     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
32175 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties32176       reflect() const VULKAN_HPP_NOEXCEPT
32177     {
32178       return std::tie( sType, pNext, maxInlineUniformBlockSize, maxPerStageDescriptorInlineUniformBlocks, maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks, maxDescriptorSetInlineUniformBlocks, maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
32179     }
32180 #endif
32181 
32182 
32183 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
32184 auto operator<=>( PhysicalDeviceInlineUniformBlockProperties const & ) const = default;
32185 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties32186     bool operator==( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
32187     {
32188 #if defined( VULKAN_HPP_USE_REFLECT )
32189       return this->reflect() == rhs.reflect();
32190 #else
32191       return ( sType == rhs.sType )
32192           && ( pNext == rhs.pNext )
32193           && ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize )
32194           && ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks )
32195           && ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks )
32196           && ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks )
32197           && ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
32198 #endif
32199     }
32200 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties32201     bool operator!=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
32202     {
32203       return !operator==( rhs );
32204     }
32205 #endif
32206 
32207     public:
32208     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockProperties;
32209     void * pNext = {};
32210     uint32_t maxInlineUniformBlockSize = {};
32211     uint32_t maxPerStageDescriptorInlineUniformBlocks = {};
32212     uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {};
32213     uint32_t maxDescriptorSetInlineUniformBlocks = {};
32214     uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks = {};
32215 
32216   };
32217 
32218   template <>
32219   struct CppType<StructureType, StructureType::ePhysicalDeviceInlineUniformBlockProperties>
32220   {
32221     using Type = PhysicalDeviceInlineUniformBlockProperties;
32222   };
32223   using PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties;
32224 
32225   struct PhysicalDeviceLimits
32226   {
32227     using NativeType = VkPhysicalDeviceLimits;
32228 
32229 
32230 
32231 
32232 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLimitsVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits32233 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits(uint32_t maxImageDimension1D_ = {}, uint32_t maxImageDimension2D_ = {}, uint32_t maxImageDimension3D_ = {}, uint32_t maxImageDimensionCube_ = {}, uint32_t maxImageArrayLayers_ = {}, uint32_t maxTexelBufferElements_ = {}, uint32_t maxUniformBufferRange_ = {}, uint32_t maxStorageBufferRange_ = {}, uint32_t maxPushConstantsSize_ = {}, uint32_t maxMemoryAllocationCount_ = {}, uint32_t maxSamplerAllocationCount_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize bufferImageGranularity_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize sparseAddressSpaceSize_ = {}, uint32_t maxBoundDescriptorSets_ = {}, uint32_t maxPerStageDescriptorSamplers_ = {}, uint32_t maxPerStageDescriptorUniformBuffers_ = {}, uint32_t maxPerStageDescriptorStorageBuffers_ = {}, uint32_t maxPerStageDescriptorSampledImages_ = {}, uint32_t maxPerStageDescriptorStorageImages_ = {}, uint32_t maxPerStageDescriptorInputAttachments_ = {}, uint32_t maxPerStageResources_ = {}, uint32_t maxDescriptorSetSamplers_ = {}, uint32_t maxDescriptorSetUniformBuffers_ = {}, uint32_t maxDescriptorSetUniformBuffersDynamic_ = {}, uint32_t maxDescriptorSetStorageBuffers_ = {}, uint32_t maxDescriptorSetStorageBuffersDynamic_ = {}, uint32_t maxDescriptorSetSampledImages_ = {}, uint32_t maxDescriptorSetStorageImages_ = {}, uint32_t maxDescriptorSetInputAttachments_ = {}, uint32_t maxVertexInputAttributes_ = {}, uint32_t maxVertexInputBindings_ = {}, uint32_t maxVertexInputAttributeOffset_ = {}, uint32_t maxVertexInputBindingStride_ = {}, uint32_t maxVertexOutputComponents_ = {}, uint32_t maxTessellationGenerationLevel_ = {}, uint32_t maxTessellationPatchSize_ = {}, uint32_t maxTessellationControlPerVertexInputComponents_ = {}, uint32_t maxTessellationControlPerVertexOutputComponents_ = {}, uint32_t maxTessellationControlPerPatchOutputComponents_ = {}, uint32_t maxTessellationControlTotalOutputComponents_ = {}, uint32_t maxTessellationEvaluationInputComponents_ = {}, uint32_t maxTessellationEvaluationOutputComponents_ = {}, uint32_t maxGeometryShaderInvocations_ = {}, uint32_t maxGeometryInputComponents_ = {}, uint32_t maxGeometryOutputComponents_ = {}, uint32_t maxGeometryOutputVertices_ = {}, uint32_t maxGeometryTotalOutputComponents_ = {}, uint32_t maxFragmentInputComponents_ = {}, uint32_t maxFragmentOutputAttachments_ = {}, uint32_t maxFragmentDualSrcAttachments_ = {}, uint32_t maxFragmentCombinedOutputResources_ = {}, uint32_t maxComputeSharedMemorySize_ = {}, std::array<uint32_t,3> const & maxComputeWorkGroupCount_ = {}, uint32_t maxComputeWorkGroupInvocations_ = {}, std::array<uint32_t,3> const & maxComputeWorkGroupSize_ = {}, uint32_t subPixelPrecisionBits_ = {}, uint32_t subTexelPrecisionBits_ = {}, uint32_t mipmapPrecisionBits_ = {}, uint32_t maxDrawIndexedIndexValue_ = {}, uint32_t maxDrawIndirectCount_ = {}, float maxSamplerLodBias_ = {}, float maxSamplerAnisotropy_ = {}, uint32_t maxViewports_ = {}, std::array<uint32_t,2> const & maxViewportDimensions_ = {}, std::array<float,2> const & viewportBoundsRange_ = {}, uint32_t viewportSubPixelBits_ = {}, size_t minMemoryMapAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize minTexelBufferOffsetAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize minUniformBufferOffsetAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize minStorageBufferOffsetAlignment_ = {}, int32_t minTexelOffset_ = {}, uint32_t maxTexelOffset_ = {}, int32_t minTexelGatherOffset_ = {}, uint32_t maxTexelGatherOffset_ = {}, float minInterpolationOffset_ = {}, float maxInterpolationOffset_ = {}, uint32_t subPixelInterpolationOffsetBits_ = {}, uint32_t maxFramebufferWidth_ = {}, uint32_t maxFramebufferHeight_ = {}, uint32_t maxFramebufferLayers_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts_ = {}, uint32_t maxColorAttachments_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts_ = {}, uint32_t maxSampleMaskWords_ = {}, VULKAN_HPP_NAMESPACE::Bool32 timestampComputeAndGraphics_ = {}, float timestampPeriod_ = {}, uint32_t maxClipDistances_ = {}, uint32_t maxCullDistances_ = {}, uint32_t maxCombinedClipAndCullDistances_ = {}, uint32_t discreteQueuePriorities_ = {}, std::array<float,2> const & pointSizeRange_ = {}, std::array<float,2> const & lineWidthRange_ = {}, float pointSizeGranularity_ = {}, float lineWidthGranularity_ = {}, VULKAN_HPP_NAMESPACE::Bool32 strictLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 standardSampleLocations_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyOffsetAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyRowPitchAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize nonCoherentAtomSize_ = {}) VULKAN_HPP_NOEXCEPT
32234     : maxImageDimension1D( maxImageDimension1D_ ), maxImageDimension2D( maxImageDimension2D_ ), maxImageDimension3D( maxImageDimension3D_ ), maxImageDimensionCube( maxImageDimensionCube_ ), maxImageArrayLayers( maxImageArrayLayers_ ), maxTexelBufferElements( maxTexelBufferElements_ ), maxUniformBufferRange( maxUniformBufferRange_ ), maxStorageBufferRange( maxStorageBufferRange_ ), maxPushConstantsSize( maxPushConstantsSize_ ), maxMemoryAllocationCount( maxMemoryAllocationCount_ ), maxSamplerAllocationCount( maxSamplerAllocationCount_ ), bufferImageGranularity( bufferImageGranularity_ ), sparseAddressSpaceSize( sparseAddressSpaceSize_ ), maxBoundDescriptorSets( maxBoundDescriptorSets_ ), maxPerStageDescriptorSamplers( maxPerStageDescriptorSamplers_ ), maxPerStageDescriptorUniformBuffers( maxPerStageDescriptorUniformBuffers_ ), maxPerStageDescriptorStorageBuffers( maxPerStageDescriptorStorageBuffers_ ), maxPerStageDescriptorSampledImages( maxPerStageDescriptorSampledImages_ ), maxPerStageDescriptorStorageImages( maxPerStageDescriptorStorageImages_ ), maxPerStageDescriptorInputAttachments( maxPerStageDescriptorInputAttachments_ ), maxPerStageResources( maxPerStageResources_ ), maxDescriptorSetSamplers( maxDescriptorSetSamplers_ ), maxDescriptorSetUniformBuffers( maxDescriptorSetUniformBuffers_ ), maxDescriptorSetUniformBuffersDynamic( maxDescriptorSetUniformBuffersDynamic_ ), maxDescriptorSetStorageBuffers( maxDescriptorSetStorageBuffers_ ), maxDescriptorSetStorageBuffersDynamic( maxDescriptorSetStorageBuffersDynamic_ ), maxDescriptorSetSampledImages( maxDescriptorSetSampledImages_ ), maxDescriptorSetStorageImages( maxDescriptorSetStorageImages_ ), maxDescriptorSetInputAttachments( maxDescriptorSetInputAttachments_ ), maxVertexInputAttributes( maxVertexInputAttributes_ ), maxVertexInputBindings( maxVertexInputBindings_ ), maxVertexInputAttributeOffset( maxVertexInputAttributeOffset_ ), maxVertexInputBindingStride( maxVertexInputBindingStride_ ), maxVertexOutputComponents( maxVertexOutputComponents_ ), maxTessellationGenerationLevel( maxTessellationGenerationLevel_ ), maxTessellationPatchSize( maxTessellationPatchSize_ ), maxTessellationControlPerVertexInputComponents( maxTessellationControlPerVertexInputComponents_ ), maxTessellationControlPerVertexOutputComponents( maxTessellationControlPerVertexOutputComponents_ ), maxTessellationControlPerPatchOutputComponents( maxTessellationControlPerPatchOutputComponents_ ), maxTessellationControlTotalOutputComponents( maxTessellationControlTotalOutputComponents_ ), maxTessellationEvaluationInputComponents( maxTessellationEvaluationInputComponents_ ), maxTessellationEvaluationOutputComponents( maxTessellationEvaluationOutputComponents_ ), maxGeometryShaderInvocations( maxGeometryShaderInvocations_ ), maxGeometryInputComponents( maxGeometryInputComponents_ ), maxGeometryOutputComponents( maxGeometryOutputComponents_ ), maxGeometryOutputVertices( maxGeometryOutputVertices_ ), maxGeometryTotalOutputComponents( maxGeometryTotalOutputComponents_ ), maxFragmentInputComponents( maxFragmentInputComponents_ ), maxFragmentOutputAttachments( maxFragmentOutputAttachments_ ), maxFragmentDualSrcAttachments( maxFragmentDualSrcAttachments_ ), maxFragmentCombinedOutputResources( maxFragmentCombinedOutputResources_ ), maxComputeSharedMemorySize( maxComputeSharedMemorySize_ ), maxComputeWorkGroupCount( maxComputeWorkGroupCount_ ), maxComputeWorkGroupInvocations( maxComputeWorkGroupInvocations_ ), maxComputeWorkGroupSize( maxComputeWorkGroupSize_ ), subPixelPrecisionBits( subPixelPrecisionBits_ ), subTexelPrecisionBits( subTexelPrecisionBits_ ), mipmapPrecisionBits( mipmapPrecisionBits_ ), maxDrawIndexedIndexValue( maxDrawIndexedIndexValue_ ), maxDrawIndirectCount( maxDrawIndirectCount_ ), maxSamplerLodBias( maxSamplerLodBias_ ), maxSamplerAnisotropy( maxSamplerAnisotropy_ ), maxViewports( maxViewports_ ), maxViewportDimensions( maxViewportDimensions_ ), viewportBoundsRange( viewportBoundsRange_ ), viewportSubPixelBits( viewportSubPixelBits_ ), minMemoryMapAlignment( minMemoryMapAlignment_ ), minTexelBufferOffsetAlignment( minTexelBufferOffsetAlignment_ ), minUniformBufferOffsetAlignment( minUniformBufferOffsetAlignment_ ), minStorageBufferOffsetAlignment( minStorageBufferOffsetAlignment_ ), minTexelOffset( minTexelOffset_ ), maxTexelOffset( maxTexelOffset_ ), minTexelGatherOffset( minTexelGatherOffset_ ), maxTexelGatherOffset( maxTexelGatherOffset_ ), minInterpolationOffset( minInterpolationOffset_ ), maxInterpolationOffset( maxInterpolationOffset_ ), subPixelInterpolationOffsetBits( subPixelInterpolationOffsetBits_ ), maxFramebufferWidth( maxFramebufferWidth_ ), maxFramebufferHeight( maxFramebufferHeight_ ), maxFramebufferLayers( maxFramebufferLayers_ ), framebufferColorSampleCounts( framebufferColorSampleCounts_ ), framebufferDepthSampleCounts( framebufferDepthSampleCounts_ ), framebufferStencilSampleCounts( framebufferStencilSampleCounts_ ), framebufferNoAttachmentsSampleCounts( framebufferNoAttachmentsSampleCounts_ ), maxColorAttachments( maxColorAttachments_ ), sampledImageColorSampleCounts( sampledImageColorSampleCounts_ ), sampledImageIntegerSampleCounts( sampledImageIntegerSampleCounts_ ), sampledImageDepthSampleCounts( sampledImageDepthSampleCounts_ ), sampledImageStencilSampleCounts( sampledImageStencilSampleCounts_ ), storageImageSampleCounts( storageImageSampleCounts_ ), maxSampleMaskWords( maxSampleMaskWords_ ), timestampComputeAndGraphics( timestampComputeAndGraphics_ ), timestampPeriod( timestampPeriod_ ), maxClipDistances( maxClipDistances_ ), maxCullDistances( maxCullDistances_ ), maxCombinedClipAndCullDistances( maxCombinedClipAndCullDistances_ ), discreteQueuePriorities( discreteQueuePriorities_ ), pointSizeRange( pointSizeRange_ ), lineWidthRange( lineWidthRange_ ), pointSizeGranularity( pointSizeGranularity_ ), lineWidthGranularity( lineWidthGranularity_ ), strictLines( strictLines_ ), standardSampleLocations( standardSampleLocations_ ), optimalBufferCopyOffsetAlignment( optimalBufferCopyOffsetAlignment_ ), optimalBufferCopyRowPitchAlignment( optimalBufferCopyRowPitchAlignment_ ), nonCoherentAtomSize( nonCoherentAtomSize_ )
32235     {}
32236 
32237     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32238 
PhysicalDeviceLimitsVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits32239     PhysicalDeviceLimits( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
32240       : PhysicalDeviceLimits( *reinterpret_cast<PhysicalDeviceLimits const *>( &rhs ) )
32241     {}
32242 
32243 
32244     PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32245 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32246 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits32247     PhysicalDeviceLimits & operator=( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT
32248     {
32249       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const *>( &rhs );
32250       return *this;
32251     }
32252 
32253 
operator VkPhysicalDeviceLimits const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits32254     operator VkPhysicalDeviceLimits const &() const VULKAN_HPP_NOEXCEPT
32255     {
32256       return *reinterpret_cast<const VkPhysicalDeviceLimits*>( this );
32257     }
32258 
operator VkPhysicalDeviceLimits&VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits32259     operator VkPhysicalDeviceLimits &() VULKAN_HPP_NOEXCEPT
32260     {
32261       return *reinterpret_cast<VkPhysicalDeviceLimits*>( this );
32262     }
32263 
32264 #if defined( VULKAN_HPP_USE_REFLECT )
32265 #if 14 <= VULKAN_HPP_CPP_VERSION
32266     auto
32267 #else
32268     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, float const &, float const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 2> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &, uint32_t const &, size_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, int32_t const &, uint32_t const &, int32_t const &, uint32_t const &, float const &, float const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, uint32_t const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &, float const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &, float const &, float const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
32269 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLimits32270       reflect() const VULKAN_HPP_NOEXCEPT
32271     {
32272       return std::tie( maxImageDimension1D, maxImageDimension2D, maxImageDimension3D, maxImageDimensionCube, maxImageArrayLayers, maxTexelBufferElements, maxUniformBufferRange, maxStorageBufferRange, maxPushConstantsSize, maxMemoryAllocationCount, maxSamplerAllocationCount, bufferImageGranularity, sparseAddressSpaceSize, maxBoundDescriptorSets, maxPerStageDescriptorSamplers, maxPerStageDescriptorUniformBuffers, maxPerStageDescriptorStorageBuffers, maxPerStageDescriptorSampledImages, maxPerStageDescriptorStorageImages, maxPerStageDescriptorInputAttachments, maxPerStageResources, maxDescriptorSetSamplers, maxDescriptorSetUniformBuffers, maxDescriptorSetUniformBuffersDynamic, maxDescriptorSetStorageBuffers, maxDescriptorSetStorageBuffersDynamic, maxDescriptorSetSampledImages, maxDescriptorSetStorageImages, maxDescriptorSetInputAttachments, maxVertexInputAttributes, maxVertexInputBindings, maxVertexInputAttributeOffset, maxVertexInputBindingStride, maxVertexOutputComponents, maxTessellationGenerationLevel, maxTessellationPatchSize, maxTessellationControlPerVertexInputComponents, maxTessellationControlPerVertexOutputComponents, maxTessellationControlPerPatchOutputComponents, maxTessellationControlTotalOutputComponents, maxTessellationEvaluationInputComponents, maxTessellationEvaluationOutputComponents, maxGeometryShaderInvocations, maxGeometryInputComponents, maxGeometryOutputComponents, maxGeometryOutputVertices, maxGeometryTotalOutputComponents, maxFragmentInputComponents, maxFragmentOutputAttachments, maxFragmentDualSrcAttachments, maxFragmentCombinedOutputResources, maxComputeSharedMemorySize, maxComputeWorkGroupCount, maxComputeWorkGroupInvocations, maxComputeWorkGroupSize, subPixelPrecisionBits, subTexelPrecisionBits, mipmapPrecisionBits, maxDrawIndexedIndexValue, maxDrawIndirectCount, maxSamplerLodBias, maxSamplerAnisotropy, maxViewports, maxViewportDimensions, viewportBoundsRange, viewportSubPixelBits, minMemoryMapAlignment, minTexelBufferOffsetAlignment, minUniformBufferOffsetAlignment, minStorageBufferOffsetAlignment, minTexelOffset, maxTexelOffset, minTexelGatherOffset, maxTexelGatherOffset, minInterpolationOffset, maxInterpolationOffset, subPixelInterpolationOffsetBits, maxFramebufferWidth, maxFramebufferHeight, maxFramebufferLayers, framebufferColorSampleCounts, framebufferDepthSampleCounts, framebufferStencilSampleCounts, framebufferNoAttachmentsSampleCounts, maxColorAttachments, sampledImageColorSampleCounts, sampledImageIntegerSampleCounts, sampledImageDepthSampleCounts, sampledImageStencilSampleCounts, storageImageSampleCounts, maxSampleMaskWords, timestampComputeAndGraphics, timestampPeriod, maxClipDistances, maxCullDistances, maxCombinedClipAndCullDistances, discreteQueuePriorities, pointSizeRange, lineWidthRange, pointSizeGranularity, lineWidthGranularity, strictLines, standardSampleLocations, optimalBufferCopyOffsetAlignment, optimalBufferCopyRowPitchAlignment, nonCoherentAtomSize );
32273     }
32274 #endif
32275 
32276 
32277 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
32278 auto operator<=>( PhysicalDeviceLimits const & ) const = default;
32279 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits32280     bool operator==( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT
32281     {
32282 #if defined( VULKAN_HPP_USE_REFLECT )
32283       return this->reflect() == rhs.reflect();
32284 #else
32285       return ( maxImageDimension1D == rhs.maxImageDimension1D )
32286           && ( maxImageDimension2D == rhs.maxImageDimension2D )
32287           && ( maxImageDimension3D == rhs.maxImageDimension3D )
32288           && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
32289           && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
32290           && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
32291           && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
32292           && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
32293           && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
32294           && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
32295           && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
32296           && ( bufferImageGranularity == rhs.bufferImageGranularity )
32297           && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
32298           && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
32299           && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
32300           && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
32301           && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
32302           && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
32303           && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
32304           && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
32305           && ( maxPerStageResources == rhs.maxPerStageResources )
32306           && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
32307           && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
32308           && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
32309           && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
32310           && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
32311           && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
32312           && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
32313           && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
32314           && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
32315           && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
32316           && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
32317           && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
32318           && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
32319           && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
32320           && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
32321           && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
32322           && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
32323           && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
32324           && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
32325           && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
32326           && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
32327           && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
32328           && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
32329           && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
32330           && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
32331           && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
32332           && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
32333           && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
32334           && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
32335           && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
32336           && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
32337           && ( maxComputeWorkGroupCount == rhs.maxComputeWorkGroupCount )
32338           && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
32339           && ( maxComputeWorkGroupSize == rhs.maxComputeWorkGroupSize )
32340           && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
32341           && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
32342           && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
32343           && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
32344           && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
32345           && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
32346           && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
32347           && ( maxViewports == rhs.maxViewports )
32348           && ( maxViewportDimensions == rhs.maxViewportDimensions )
32349           && ( viewportBoundsRange == rhs.viewportBoundsRange )
32350           && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
32351           && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
32352           && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
32353           && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
32354           && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
32355           && ( minTexelOffset == rhs.minTexelOffset )
32356           && ( maxTexelOffset == rhs.maxTexelOffset )
32357           && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
32358           && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
32359           && ( minInterpolationOffset == rhs.minInterpolationOffset )
32360           && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
32361           && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
32362           && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
32363           && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
32364           && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
32365           && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
32366           && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
32367           && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
32368           && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
32369           && ( maxColorAttachments == rhs.maxColorAttachments )
32370           && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
32371           && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
32372           && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
32373           && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
32374           && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
32375           && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
32376           && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
32377           && ( timestampPeriod == rhs.timestampPeriod )
32378           && ( maxClipDistances == rhs.maxClipDistances )
32379           && ( maxCullDistances == rhs.maxCullDistances )
32380           && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
32381           && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
32382           && ( pointSizeRange == rhs.pointSizeRange )
32383           && ( lineWidthRange == rhs.lineWidthRange )
32384           && ( pointSizeGranularity == rhs.pointSizeGranularity )
32385           && ( lineWidthGranularity == rhs.lineWidthGranularity )
32386           && ( strictLines == rhs.strictLines )
32387           && ( standardSampleLocations == rhs.standardSampleLocations )
32388           && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
32389           && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
32390           && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
32391 #endif
32392     }
32393 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits32394     bool operator!=( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT
32395     {
32396       return !operator==( rhs );
32397     }
32398 #endif
32399 
32400     public:
32401     uint32_t maxImageDimension1D = {};
32402     uint32_t maxImageDimension2D = {};
32403     uint32_t maxImageDimension3D = {};
32404     uint32_t maxImageDimensionCube = {};
32405     uint32_t maxImageArrayLayers = {};
32406     uint32_t maxTexelBufferElements = {};
32407     uint32_t maxUniformBufferRange = {};
32408     uint32_t maxStorageBufferRange = {};
32409     uint32_t maxPushConstantsSize = {};
32410     uint32_t maxMemoryAllocationCount = {};
32411     uint32_t maxSamplerAllocationCount = {};
32412     VULKAN_HPP_NAMESPACE::DeviceSize bufferImageGranularity = {};
32413     VULKAN_HPP_NAMESPACE::DeviceSize sparseAddressSpaceSize = {};
32414     uint32_t maxBoundDescriptorSets = {};
32415     uint32_t maxPerStageDescriptorSamplers = {};
32416     uint32_t maxPerStageDescriptorUniformBuffers = {};
32417     uint32_t maxPerStageDescriptorStorageBuffers = {};
32418     uint32_t maxPerStageDescriptorSampledImages = {};
32419     uint32_t maxPerStageDescriptorStorageImages = {};
32420     uint32_t maxPerStageDescriptorInputAttachments = {};
32421     uint32_t maxPerStageResources = {};
32422     uint32_t maxDescriptorSetSamplers = {};
32423     uint32_t maxDescriptorSetUniformBuffers = {};
32424     uint32_t maxDescriptorSetUniformBuffersDynamic = {};
32425     uint32_t maxDescriptorSetStorageBuffers = {};
32426     uint32_t maxDescriptorSetStorageBuffersDynamic = {};
32427     uint32_t maxDescriptorSetSampledImages = {};
32428     uint32_t maxDescriptorSetStorageImages = {};
32429     uint32_t maxDescriptorSetInputAttachments = {};
32430     uint32_t maxVertexInputAttributes = {};
32431     uint32_t maxVertexInputBindings = {};
32432     uint32_t maxVertexInputAttributeOffset = {};
32433     uint32_t maxVertexInputBindingStride = {};
32434     uint32_t maxVertexOutputComponents = {};
32435     uint32_t maxTessellationGenerationLevel = {};
32436     uint32_t maxTessellationPatchSize = {};
32437     uint32_t maxTessellationControlPerVertexInputComponents = {};
32438     uint32_t maxTessellationControlPerVertexOutputComponents = {};
32439     uint32_t maxTessellationControlPerPatchOutputComponents = {};
32440     uint32_t maxTessellationControlTotalOutputComponents = {};
32441     uint32_t maxTessellationEvaluationInputComponents = {};
32442     uint32_t maxTessellationEvaluationOutputComponents = {};
32443     uint32_t maxGeometryShaderInvocations = {};
32444     uint32_t maxGeometryInputComponents = {};
32445     uint32_t maxGeometryOutputComponents = {};
32446     uint32_t maxGeometryOutputVertices = {};
32447     uint32_t maxGeometryTotalOutputComponents = {};
32448     uint32_t maxFragmentInputComponents = {};
32449     uint32_t maxFragmentOutputAttachments = {};
32450     uint32_t maxFragmentDualSrcAttachments = {};
32451     uint32_t maxFragmentCombinedOutputResources = {};
32452     uint32_t maxComputeSharedMemorySize = {};
32453     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxComputeWorkGroupCount = {};
32454     uint32_t maxComputeWorkGroupInvocations = {};
32455     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 3> maxComputeWorkGroupSize = {};
32456     uint32_t subPixelPrecisionBits = {};
32457     uint32_t subTexelPrecisionBits = {};
32458     uint32_t mipmapPrecisionBits = {};
32459     uint32_t maxDrawIndexedIndexValue = {};
32460     uint32_t maxDrawIndirectCount = {};
32461     float maxSamplerLodBias = {};
32462     float maxSamplerAnisotropy = {};
32463     uint32_t maxViewports = {};
32464     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint32_t, 2> maxViewportDimensions = {};
32465     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> viewportBoundsRange = {};
32466     uint32_t viewportSubPixelBits = {};
32467     size_t minMemoryMapAlignment = {};
32468     VULKAN_HPP_NAMESPACE::DeviceSize minTexelBufferOffsetAlignment = {};
32469     VULKAN_HPP_NAMESPACE::DeviceSize minUniformBufferOffsetAlignment = {};
32470     VULKAN_HPP_NAMESPACE::DeviceSize minStorageBufferOffsetAlignment = {};
32471     int32_t minTexelOffset = {};
32472     uint32_t maxTexelOffset = {};
32473     int32_t minTexelGatherOffset = {};
32474     uint32_t maxTexelGatherOffset = {};
32475     float minInterpolationOffset = {};
32476     float maxInterpolationOffset = {};
32477     uint32_t subPixelInterpolationOffsetBits = {};
32478     uint32_t maxFramebufferWidth = {};
32479     uint32_t maxFramebufferHeight = {};
32480     uint32_t maxFramebufferLayers = {};
32481     VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts = {};
32482     VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts = {};
32483     VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts = {};
32484     VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts = {};
32485     uint32_t maxColorAttachments = {};
32486     VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts = {};
32487     VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts = {};
32488     VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts = {};
32489     VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts = {};
32490     VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts = {};
32491     uint32_t maxSampleMaskWords = {};
32492     VULKAN_HPP_NAMESPACE::Bool32 timestampComputeAndGraphics = {};
32493     float timestampPeriod = {};
32494     uint32_t maxClipDistances = {};
32495     uint32_t maxCullDistances = {};
32496     uint32_t maxCombinedClipAndCullDistances = {};
32497     uint32_t discreteQueuePriorities = {};
32498     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> pointSizeRange = {};
32499     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> lineWidthRange = {};
32500     float pointSizeGranularity = {};
32501     float lineWidthGranularity = {};
32502     VULKAN_HPP_NAMESPACE::Bool32 strictLines = {};
32503     VULKAN_HPP_NAMESPACE::Bool32 standardSampleLocations = {};
32504     VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyOffsetAlignment = {};
32505     VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyRowPitchAlignment = {};
32506     VULKAN_HPP_NAMESPACE::DeviceSize nonCoherentAtomSize = {};
32507 
32508   };
32509 
32510   struct PhysicalDeviceLineRasterizationFeaturesEXT
32511   {
32512     using NativeType = VkPhysicalDeviceLineRasterizationFeaturesEXT;
32513 
32514     static const bool allowDuplicate = false;
32515     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT;
32516 
32517 
32518 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLineRasterizationFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32519 VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
32520     : pNext( pNext_ ), rectangularLines( rectangularLines_ ), bresenhamLines( bresenhamLines_ ), smoothLines( smoothLines_ ), stippledRectangularLines( stippledRectangularLines_ ), stippledBresenhamLines( stippledBresenhamLines_ ), stippledSmoothLines( stippledSmoothLines_ )
32521     {}
32522 
32523     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32524 
PhysicalDeviceLineRasterizationFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32525     PhysicalDeviceLineRasterizationFeaturesEXT( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
32526       : PhysicalDeviceLineRasterizationFeaturesEXT( *reinterpret_cast<PhysicalDeviceLineRasterizationFeaturesEXT const *>( &rhs ) )
32527     {}
32528 
32529 
32530     PhysicalDeviceLineRasterizationFeaturesEXT & operator=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32531 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32532 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32533     PhysicalDeviceLineRasterizationFeaturesEXT & operator=( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
32534     {
32535       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT const *>( &rhs );
32536       return *this;
32537     }
32538 
32539 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32540     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
32541     {
32542       pNext = pNext_;
32543       return *this;
32544     }
32545 
setRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32546     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ ) VULKAN_HPP_NOEXCEPT
32547     {
32548       rectangularLines = rectangularLines_;
32549       return *this;
32550     }
32551 
setBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32552     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ ) VULKAN_HPP_NOEXCEPT
32553     {
32554       bresenhamLines = bresenhamLines_;
32555       return *this;
32556     }
32557 
setSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32558     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ ) VULKAN_HPP_NOEXCEPT
32559     {
32560       smoothLines = smoothLines_;
32561       return *this;
32562     }
32563 
setStippledRectangularLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32564     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setStippledRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ ) VULKAN_HPP_NOEXCEPT
32565     {
32566       stippledRectangularLines = stippledRectangularLines_;
32567       return *this;
32568     }
32569 
setStippledBresenhamLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32570     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setStippledBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ ) VULKAN_HPP_NOEXCEPT
32571     {
32572       stippledBresenhamLines = stippledBresenhamLines_;
32573       return *this;
32574     }
32575 
setStippledSmoothLinesVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32576     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & setStippledSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ ) VULKAN_HPP_NOEXCEPT
32577     {
32578       stippledSmoothLines = stippledSmoothLines_;
32579       return *this;
32580     }
32581 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32582 
32583 
operator VkPhysicalDeviceLineRasterizationFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32584     operator VkPhysicalDeviceLineRasterizationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
32585     {
32586       return *reinterpret_cast<const VkPhysicalDeviceLineRasterizationFeaturesEXT*>( this );
32587     }
32588 
operator VkPhysicalDeviceLineRasterizationFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32589     operator VkPhysicalDeviceLineRasterizationFeaturesEXT &() VULKAN_HPP_NOEXCEPT
32590     {
32591       return *reinterpret_cast<VkPhysicalDeviceLineRasterizationFeaturesEXT*>( this );
32592     }
32593 
32594 #if defined( VULKAN_HPP_USE_REFLECT )
32595 #if 14 <= VULKAN_HPP_CPP_VERSION
32596     auto
32597 #else
32598     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
32599 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32600       reflect() const VULKAN_HPP_NOEXCEPT
32601     {
32602       return std::tie( sType, pNext, rectangularLines, bresenhamLines, smoothLines, stippledRectangularLines, stippledBresenhamLines, stippledSmoothLines );
32603     }
32604 #endif
32605 
32606 
32607 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
32608 auto operator<=>( PhysicalDeviceLineRasterizationFeaturesEXT const & ) const = default;
32609 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32610     bool operator==( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32611     {
32612 #if defined( VULKAN_HPP_USE_REFLECT )
32613       return this->reflect() == rhs.reflect();
32614 #else
32615       return ( sType == rhs.sType )
32616           && ( pNext == rhs.pNext )
32617           && ( rectangularLines == rhs.rectangularLines )
32618           && ( bresenhamLines == rhs.bresenhamLines )
32619           && ( smoothLines == rhs.smoothLines )
32620           && ( stippledRectangularLines == rhs.stippledRectangularLines )
32621           && ( stippledBresenhamLines == rhs.stippledBresenhamLines )
32622           && ( stippledSmoothLines == rhs.stippledSmoothLines );
32623 #endif
32624     }
32625 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT32626     bool operator!=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32627     {
32628       return !operator==( rhs );
32629     }
32630 #endif
32631 
32632     public:
32633     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT;
32634     void * pNext = {};
32635     VULKAN_HPP_NAMESPACE::Bool32 rectangularLines = {};
32636     VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines = {};
32637     VULKAN_HPP_NAMESPACE::Bool32 smoothLines = {};
32638     VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines = {};
32639     VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines = {};
32640     VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines = {};
32641 
32642   };
32643 
32644   template <>
32645   struct CppType<StructureType, StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT>
32646   {
32647     using Type = PhysicalDeviceLineRasterizationFeaturesEXT;
32648   };
32649 
32650   struct PhysicalDeviceLineRasterizationPropertiesEXT
32651   {
32652     using NativeType = VkPhysicalDeviceLineRasterizationPropertiesEXT;
32653 
32654     static const bool allowDuplicate = false;
32655     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT;
32656 
32657 
32658 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceLineRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT32659 VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesEXT(uint32_t lineSubPixelPrecisionBits_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
32660     : pNext( pNext_ ), lineSubPixelPrecisionBits( lineSubPixelPrecisionBits_ )
32661     {}
32662 
32663     VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesEXT( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32664 
PhysicalDeviceLineRasterizationPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT32665     PhysicalDeviceLineRasterizationPropertiesEXT( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
32666       : PhysicalDeviceLineRasterizationPropertiesEXT( *reinterpret_cast<PhysicalDeviceLineRasterizationPropertiesEXT const *>( &rhs ) )
32667     {}
32668 
32669 
32670     PhysicalDeviceLineRasterizationPropertiesEXT & operator=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32671 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32672 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT32673     PhysicalDeviceLineRasterizationPropertiesEXT & operator=( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
32674     {
32675       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT const *>( &rhs );
32676       return *this;
32677     }
32678 
32679 
operator VkPhysicalDeviceLineRasterizationPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT32680     operator VkPhysicalDeviceLineRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
32681     {
32682       return *reinterpret_cast<const VkPhysicalDeviceLineRasterizationPropertiesEXT*>( this );
32683     }
32684 
operator VkPhysicalDeviceLineRasterizationPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT32685     operator VkPhysicalDeviceLineRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT
32686     {
32687       return *reinterpret_cast<VkPhysicalDeviceLineRasterizationPropertiesEXT*>( this );
32688     }
32689 
32690 #if defined( VULKAN_HPP_USE_REFLECT )
32691 #if 14 <= VULKAN_HPP_CPP_VERSION
32692     auto
32693 #else
32694     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
32695 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT32696       reflect() const VULKAN_HPP_NOEXCEPT
32697     {
32698       return std::tie( sType, pNext, lineSubPixelPrecisionBits );
32699     }
32700 #endif
32701 
32702 
32703 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
32704 auto operator<=>( PhysicalDeviceLineRasterizationPropertiesEXT const & ) const = default;
32705 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT32706     bool operator==( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32707     {
32708 #if defined( VULKAN_HPP_USE_REFLECT )
32709       return this->reflect() == rhs.reflect();
32710 #else
32711       return ( sType == rhs.sType )
32712           && ( pNext == rhs.pNext )
32713           && ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits );
32714 #endif
32715     }
32716 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT32717     bool operator!=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
32718     {
32719       return !operator==( rhs );
32720     }
32721 #endif
32722 
32723     public:
32724     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT;
32725     void * pNext = {};
32726     uint32_t lineSubPixelPrecisionBits = {};
32727 
32728   };
32729 
32730   template <>
32731   struct CppType<StructureType, StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT>
32732   {
32733     using Type = PhysicalDeviceLineRasterizationPropertiesEXT;
32734   };
32735 
32736   struct PhysicalDeviceMaintenance3Properties
32737   {
32738     using NativeType = VkPhysicalDeviceMaintenance3Properties;
32739 
32740     static const bool allowDuplicate = false;
32741     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance3Properties;
32742 
32743 
32744 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance3PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties32745 VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties(uint32_t maxPerSetDescriptors_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
32746     : pNext( pNext_ ), maxPerSetDescriptors( maxPerSetDescriptors_ ), maxMemoryAllocationSize( maxMemoryAllocationSize_ )
32747     {}
32748 
32749     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32750 
PhysicalDeviceMaintenance3PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties32751     PhysicalDeviceMaintenance3Properties( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
32752       : PhysicalDeviceMaintenance3Properties( *reinterpret_cast<PhysicalDeviceMaintenance3Properties const *>( &rhs ) )
32753     {}
32754 
32755 
32756     PhysicalDeviceMaintenance3Properties & operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32757 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32758 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties32759     PhysicalDeviceMaintenance3Properties & operator=( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT
32760     {
32761       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties const *>( &rhs );
32762       return *this;
32763     }
32764 
32765 
operator VkPhysicalDeviceMaintenance3Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties32766     operator VkPhysicalDeviceMaintenance3Properties const &() const VULKAN_HPP_NOEXCEPT
32767     {
32768       return *reinterpret_cast<const VkPhysicalDeviceMaintenance3Properties*>( this );
32769     }
32770 
operator VkPhysicalDeviceMaintenance3Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties32771     operator VkPhysicalDeviceMaintenance3Properties &() VULKAN_HPP_NOEXCEPT
32772     {
32773       return *reinterpret_cast<VkPhysicalDeviceMaintenance3Properties*>( this );
32774     }
32775 
32776 #if defined( VULKAN_HPP_USE_REFLECT )
32777 #if 14 <= VULKAN_HPP_CPP_VERSION
32778     auto
32779 #else
32780     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
32781 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties32782       reflect() const VULKAN_HPP_NOEXCEPT
32783     {
32784       return std::tie( sType, pNext, maxPerSetDescriptors, maxMemoryAllocationSize );
32785     }
32786 #endif
32787 
32788 
32789 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
32790 auto operator<=>( PhysicalDeviceMaintenance3Properties const & ) const = default;
32791 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties32792     bool operator==( PhysicalDeviceMaintenance3Properties 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 )
32798           && ( pNext == rhs.pNext )
32799           && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors )
32800           && ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize );
32801 #endif
32802     }
32803 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties32804     bool operator!=( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
32805     {
32806       return !operator==( rhs );
32807     }
32808 #endif
32809 
32810     public:
32811     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties;
32812     void * pNext = {};
32813     uint32_t maxPerSetDescriptors = {};
32814     VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize = {};
32815 
32816   };
32817 
32818   template <>
32819   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance3Properties>
32820   {
32821     using Type = PhysicalDeviceMaintenance3Properties;
32822   };
32823   using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties;
32824 
32825   struct PhysicalDeviceMaintenance4Features
32826   {
32827     using NativeType = VkPhysicalDeviceMaintenance4Features;
32828 
32829     static const bool allowDuplicate = false;
32830     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance4Features;
32831 
32832 
32833 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance4FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32834 VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features(VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
32835     : pNext( pNext_ ), maintenance4( maintenance4_ )
32836     {}
32837 
32838     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32839 
PhysicalDeviceMaintenance4FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32840     PhysicalDeviceMaintenance4Features( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT
32841       : PhysicalDeviceMaintenance4Features( *reinterpret_cast<PhysicalDeviceMaintenance4Features const *>( &rhs ) )
32842     {}
32843 
32844 
32845     PhysicalDeviceMaintenance4Features & operator=( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32846 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32847 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32848     PhysicalDeviceMaintenance4Features & operator=( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT
32849     {
32850       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features const *>( &rhs );
32851       return *this;
32852     }
32853 
32854 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32855     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
32856     {
32857       pNext = pNext_;
32858       return *this;
32859     }
32860 
setMaintenance4VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32861     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT
32862     {
32863       maintenance4 = maintenance4_;
32864       return *this;
32865     }
32866 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
32867 
32868 
operator VkPhysicalDeviceMaintenance4Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32869     operator VkPhysicalDeviceMaintenance4Features const &() const VULKAN_HPP_NOEXCEPT
32870     {
32871       return *reinterpret_cast<const VkPhysicalDeviceMaintenance4Features*>( this );
32872     }
32873 
operator VkPhysicalDeviceMaintenance4Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32874     operator VkPhysicalDeviceMaintenance4Features &() VULKAN_HPP_NOEXCEPT
32875     {
32876       return *reinterpret_cast<VkPhysicalDeviceMaintenance4Features*>( this );
32877     }
32878 
32879 #if defined( VULKAN_HPP_USE_REFLECT )
32880 #if 14 <= VULKAN_HPP_CPP_VERSION
32881     auto
32882 #else
32883     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
32884 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32885       reflect() const VULKAN_HPP_NOEXCEPT
32886     {
32887       return std::tie( sType, pNext, maintenance4 );
32888     }
32889 #endif
32890 
32891 
32892 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
32893 auto operator<=>( PhysicalDeviceMaintenance4Features const & ) const = default;
32894 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32895     bool operator==( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT
32896     {
32897 #if defined( VULKAN_HPP_USE_REFLECT )
32898       return this->reflect() == rhs.reflect();
32899 #else
32900       return ( sType == rhs.sType )
32901           && ( pNext == rhs.pNext )
32902           && ( maintenance4 == rhs.maintenance4 );
32903 #endif
32904     }
32905 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features32906     bool operator!=( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT
32907     {
32908       return !operator==( rhs );
32909     }
32910 #endif
32911 
32912     public:
32913     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance4Features;
32914     void * pNext = {};
32915     VULKAN_HPP_NAMESPACE::Bool32 maintenance4 = {};
32916 
32917   };
32918 
32919   template <>
32920   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance4Features>
32921   {
32922     using Type = PhysicalDeviceMaintenance4Features;
32923   };
32924   using PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features;
32925 
32926   struct PhysicalDeviceMaintenance4Properties
32927   {
32928     using NativeType = VkPhysicalDeviceMaintenance4Properties;
32929 
32930     static const bool allowDuplicate = false;
32931     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance4Properties;
32932 
32933 
32934 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMaintenance4PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties32935 VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties(VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
32936     : pNext( pNext_ ), maxBufferSize( maxBufferSize_ )
32937     {}
32938 
32939     VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32940 
PhysicalDeviceMaintenance4PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties32941     PhysicalDeviceMaintenance4Properties( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT
32942       : PhysicalDeviceMaintenance4Properties( *reinterpret_cast<PhysicalDeviceMaintenance4Properties const *>( &rhs ) )
32943     {}
32944 
32945 
32946     PhysicalDeviceMaintenance4Properties & operator=( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
32947 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
32948 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties32949     PhysicalDeviceMaintenance4Properties & operator=( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT
32950     {
32951       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties const *>( &rhs );
32952       return *this;
32953     }
32954 
32955 
operator VkPhysicalDeviceMaintenance4Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties32956     operator VkPhysicalDeviceMaintenance4Properties const &() const VULKAN_HPP_NOEXCEPT
32957     {
32958       return *reinterpret_cast<const VkPhysicalDeviceMaintenance4Properties*>( this );
32959     }
32960 
operator VkPhysicalDeviceMaintenance4Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties32961     operator VkPhysicalDeviceMaintenance4Properties &() VULKAN_HPP_NOEXCEPT
32962     {
32963       return *reinterpret_cast<VkPhysicalDeviceMaintenance4Properties*>( this );
32964     }
32965 
32966 #if defined( VULKAN_HPP_USE_REFLECT )
32967 #if 14 <= VULKAN_HPP_CPP_VERSION
32968     auto
32969 #else
32970     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
32971 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties32972       reflect() const VULKAN_HPP_NOEXCEPT
32973     {
32974       return std::tie( sType, pNext, maxBufferSize );
32975     }
32976 #endif
32977 
32978 
32979 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
32980 auto operator<=>( PhysicalDeviceMaintenance4Properties const & ) const = default;
32981 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties32982     bool operator==( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
32983     {
32984 #if defined( VULKAN_HPP_USE_REFLECT )
32985       return this->reflect() == rhs.reflect();
32986 #else
32987       return ( sType == rhs.sType )
32988           && ( pNext == rhs.pNext )
32989           && ( maxBufferSize == rhs.maxBufferSize );
32990 #endif
32991     }
32992 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties32993     bool operator!=( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
32994     {
32995       return !operator==( rhs );
32996     }
32997 #endif
32998 
32999     public:
33000     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance4Properties;
33001     void * pNext = {};
33002     VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize = {};
33003 
33004   };
33005 
33006   template <>
33007   struct CppType<StructureType, StructureType::ePhysicalDeviceMaintenance4Properties>
33008   {
33009     using Type = PhysicalDeviceMaintenance4Properties;
33010   };
33011   using PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties;
33012 
33013   struct PhysicalDeviceMemoryBudgetPropertiesEXT
33014   {
33015     using NativeType = VkPhysicalDeviceMemoryBudgetPropertiesEXT;
33016 
33017     static const bool allowDuplicate = false;
33018     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
33019 
33020 
33021 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryBudgetPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT33022 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT(std::array<VULKAN_HPP_NAMESPACE::DeviceSize,VK_MAX_MEMORY_HEAPS> const & heapBudget_ = {}, std::array<VULKAN_HPP_NAMESPACE::DeviceSize,VK_MAX_MEMORY_HEAPS> const & heapUsage_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33023     : pNext( pNext_ ), heapBudget( heapBudget_ ), heapUsage( heapUsage_ )
33024     {}
33025 
33026     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33027 
PhysicalDeviceMemoryBudgetPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT33028     PhysicalDeviceMemoryBudgetPropertiesEXT( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33029       : PhysicalDeviceMemoryBudgetPropertiesEXT( *reinterpret_cast<PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs ) )
33030     {}
33031 
33032 
33033     PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33034 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33035 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT33036     PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33037     {
33038       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT const *>( &rhs );
33039       return *this;
33040     }
33041 
33042 
operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT33043     operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
33044     {
33045       return *reinterpret_cast<const VkPhysicalDeviceMemoryBudgetPropertiesEXT*>( this );
33046     }
33047 
operator VkPhysicalDeviceMemoryBudgetPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT33048     operator VkPhysicalDeviceMemoryBudgetPropertiesEXT &() VULKAN_HPP_NOEXCEPT
33049     {
33050       return *reinterpret_cast<VkPhysicalDeviceMemoryBudgetPropertiesEXT*>( this );
33051     }
33052 
33053 #if defined( VULKAN_HPP_USE_REFLECT )
33054 #if 14 <= VULKAN_HPP_CPP_VERSION
33055     auto
33056 #else
33057     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> const &>
33058 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT33059       reflect() const VULKAN_HPP_NOEXCEPT
33060     {
33061       return std::tie( sType, pNext, heapBudget, heapUsage );
33062     }
33063 #endif
33064 
33065 
33066 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33067 auto operator<=>( PhysicalDeviceMemoryBudgetPropertiesEXT const & ) const = default;
33068 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT33069     bool operator==( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33070     {
33071 #if defined( VULKAN_HPP_USE_REFLECT )
33072       return this->reflect() == rhs.reflect();
33073 #else
33074       return ( sType == rhs.sType )
33075           && ( pNext == rhs.pNext )
33076           && ( heapBudget == rhs.heapBudget )
33077           && ( heapUsage == rhs.heapUsage );
33078 #endif
33079     }
33080 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT33081     bool operator!=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33082     {
33083       return !operator==( rhs );
33084     }
33085 #endif
33086 
33087     public:
33088     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT;
33089     void * pNext = {};
33090     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapBudget = {};
33091     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::DeviceSize, VK_MAX_MEMORY_HEAPS> heapUsage = {};
33092 
33093   };
33094 
33095   template <>
33096   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT>
33097   {
33098     using Type = PhysicalDeviceMemoryBudgetPropertiesEXT;
33099   };
33100 
33101   struct PhysicalDeviceMemoryProperties
33102   {
33103     using NativeType = VkPhysicalDeviceMemoryProperties;
33104 
33105 
33106 
33107 
33108 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties33109 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties(uint32_t memoryTypeCount_ = {}, std::array<VULKAN_HPP_NAMESPACE::MemoryType,VK_MAX_MEMORY_TYPES> const & memoryTypes_ = {}, uint32_t memoryHeapCount_ = {}, std::array<VULKAN_HPP_NAMESPACE::MemoryHeap,VK_MAX_MEMORY_HEAPS> const & memoryHeaps_ = {}) VULKAN_HPP_NOEXCEPT
33110     : memoryTypeCount( memoryTypeCount_ ), memoryTypes( memoryTypes_ ), memoryHeapCount( memoryHeapCount_ ), memoryHeaps( memoryHeaps_ )
33111     {}
33112 
33113     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33114 
PhysicalDeviceMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties33115     PhysicalDeviceMemoryProperties( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
33116       : PhysicalDeviceMemoryProperties( *reinterpret_cast<PhysicalDeviceMemoryProperties const *>( &rhs ) )
33117     {}
33118 
33119 
33120     PhysicalDeviceMemoryProperties & operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33121 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33122 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties33123     PhysicalDeviceMemoryProperties & operator=( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
33124     {
33125       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const *>( &rhs );
33126       return *this;
33127     }
33128 
33129 
operator VkPhysicalDeviceMemoryProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties33130     operator VkPhysicalDeviceMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
33131     {
33132       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>( this );
33133     }
33134 
operator VkPhysicalDeviceMemoryProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties33135     operator VkPhysicalDeviceMemoryProperties &() VULKAN_HPP_NOEXCEPT
33136     {
33137       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( this );
33138     }
33139 
33140 #if defined( VULKAN_HPP_USE_REFLECT )
33141 #if 14 <= VULKAN_HPP_CPP_VERSION
33142     auto
33143 #else
33144     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> const &>
33145 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties33146       reflect() const VULKAN_HPP_NOEXCEPT
33147     {
33148       return std::tie( memoryTypeCount, memoryTypes, memoryHeapCount, memoryHeaps );
33149     }
33150 #endif
33151 
33152 
33153 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33154 auto operator<=>( PhysicalDeviceMemoryProperties const & ) const = default;
33155 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties33156     bool operator==( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
33157     {
33158 #if defined( VULKAN_HPP_USE_REFLECT )
33159       return this->reflect() == rhs.reflect();
33160 #else
33161       return ( memoryTypeCount == rhs.memoryTypeCount )
33162           && ( memoryTypes == rhs.memoryTypes )
33163           && ( memoryHeapCount == rhs.memoryHeapCount )
33164           && ( memoryHeaps == rhs.memoryHeaps );
33165 #endif
33166     }
33167 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties33168     bool operator!=( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
33169     {
33170       return !operator==( rhs );
33171     }
33172 #endif
33173 
33174     public:
33175     uint32_t memoryTypeCount = {};
33176     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryType, VK_MAX_MEMORY_TYPES> memoryTypes = {};
33177     uint32_t memoryHeapCount = {};
33178     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::MemoryHeap, VK_MAX_MEMORY_HEAPS> memoryHeaps = {};
33179 
33180   };
33181 
33182   struct PhysicalDeviceMemoryProperties2
33183   {
33184     using NativeType = VkPhysicalDeviceMemoryProperties2;
33185 
33186     static const bool allowDuplicate = false;
33187     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryProperties2;
33188 
33189 
33190 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMemoryProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties233191 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2(VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33192     : pNext( pNext_ ), memoryProperties( memoryProperties_ )
33193     {}
33194 
33195     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33196 
PhysicalDeviceMemoryProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties233197     PhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
33198       : PhysicalDeviceMemoryProperties2( *reinterpret_cast<PhysicalDeviceMemoryProperties2 const *>( &rhs ) )
33199     {}
33200 
33201 
33202     PhysicalDeviceMemoryProperties2 & operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33203 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33204 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties233205     PhysicalDeviceMemoryProperties2 & operator=( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
33206     {
33207       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 const *>( &rhs );
33208       return *this;
33209     }
33210 
33211 
operator VkPhysicalDeviceMemoryProperties2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties233212     operator VkPhysicalDeviceMemoryProperties2 const &() const VULKAN_HPP_NOEXCEPT
33213     {
33214       return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2*>( this );
33215     }
33216 
operator VkPhysicalDeviceMemoryProperties2&VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties233217     operator VkPhysicalDeviceMemoryProperties2 &() VULKAN_HPP_NOEXCEPT
33218     {
33219       return *reinterpret_cast<VkPhysicalDeviceMemoryProperties2*>( this );
33220     }
33221 
33222 #if defined( VULKAN_HPP_USE_REFLECT )
33223 #if 14 <= VULKAN_HPP_CPP_VERSION
33224     auto
33225 #else
33226     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const &>
33227 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties233228       reflect() const VULKAN_HPP_NOEXCEPT
33229     {
33230       return std::tie( sType, pNext, memoryProperties );
33231     }
33232 #endif
33233 
33234 
33235 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33236 auto operator<=>( PhysicalDeviceMemoryProperties2 const & ) const = default;
33237 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties233238     bool operator==( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
33239     {
33240 #if defined( VULKAN_HPP_USE_REFLECT )
33241       return this->reflect() == rhs.reflect();
33242 #else
33243       return ( sType == rhs.sType )
33244           && ( pNext == rhs.pNext )
33245           && ( memoryProperties == rhs.memoryProperties );
33246 #endif
33247     }
33248 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties233249     bool operator!=( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
33250     {
33251       return !operator==( rhs );
33252     }
33253 #endif
33254 
33255     public:
33256     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2;
33257     void * pNext = {};
33258     VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties = {};
33259 
33260   };
33261 
33262   template <>
33263   struct CppType<StructureType, StructureType::ePhysicalDeviceMemoryProperties2>
33264   {
33265     using Type = PhysicalDeviceMemoryProperties2;
33266   };
33267   using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2;
33268 
33269   struct PhysicalDeviceMultiviewFeatures
33270   {
33271     using NativeType = VkPhysicalDeviceMultiviewFeatures;
33272 
33273     static const bool allowDuplicate = false;
33274     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewFeatures;
33275 
33276 
33277 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33278 VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures(VULKAN_HPP_NAMESPACE::Bool32 multiview_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33279     : pNext( pNext_ ), multiview( multiview_ ), multiviewGeometryShader( multiviewGeometryShader_ ), multiviewTessellationShader( multiviewTessellationShader_ )
33280     {}
33281 
33282     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33283 
PhysicalDeviceMultiviewFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33284     PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
33285       : PhysicalDeviceMultiviewFeatures( *reinterpret_cast<PhysicalDeviceMultiviewFeatures const *>( &rhs ) )
33286     {}
33287 
33288 
33289     PhysicalDeviceMultiviewFeatures & operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33290 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33291 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33292     PhysicalDeviceMultiviewFeatures & operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
33293     {
33294       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures const *>( &rhs );
33295       return *this;
33296     }
33297 
33298 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33299     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
33300     {
33301       pNext = pNext_;
33302       return *this;
33303     }
33304 
setMultiviewVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33305     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT
33306     {
33307       multiview = multiview_;
33308       return *this;
33309     }
33310 
setMultiviewGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33311     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT
33312     {
33313       multiviewGeometryShader = multiviewGeometryShader_;
33314       return *this;
33315     }
33316 
setMultiviewTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33317     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT
33318     {
33319       multiviewTessellationShader = multiviewTessellationShader_;
33320       return *this;
33321     }
33322 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33323 
33324 
operator VkPhysicalDeviceMultiviewFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33325     operator VkPhysicalDeviceMultiviewFeatures const &() const VULKAN_HPP_NOEXCEPT
33326     {
33327       return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeatures*>( this );
33328     }
33329 
operator VkPhysicalDeviceMultiviewFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33330     operator VkPhysicalDeviceMultiviewFeatures &() VULKAN_HPP_NOEXCEPT
33331     {
33332       return *reinterpret_cast<VkPhysicalDeviceMultiviewFeatures*>( this );
33333     }
33334 
33335 #if defined( VULKAN_HPP_USE_REFLECT )
33336 #if 14 <= VULKAN_HPP_CPP_VERSION
33337     auto
33338 #else
33339     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
33340 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33341       reflect() const VULKAN_HPP_NOEXCEPT
33342     {
33343       return std::tie( sType, pNext, multiview, multiviewGeometryShader, multiviewTessellationShader );
33344     }
33345 #endif
33346 
33347 
33348 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33349 auto operator<=>( PhysicalDeviceMultiviewFeatures const & ) const = default;
33350 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33351     bool operator==( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
33352     {
33353 #if defined( VULKAN_HPP_USE_REFLECT )
33354       return this->reflect() == rhs.reflect();
33355 #else
33356       return ( sType == rhs.sType )
33357           && ( pNext == rhs.pNext )
33358           && ( multiview == rhs.multiview )
33359           && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
33360           && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
33361 #endif
33362     }
33363 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures33364     bool operator!=( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
33365     {
33366       return !operator==( rhs );
33367     }
33368 #endif
33369 
33370     public:
33371     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures;
33372     void * pNext = {};
33373     VULKAN_HPP_NAMESPACE::Bool32 multiview = {};
33374     VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader = {};
33375     VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader = {};
33376 
33377   };
33378 
33379   template <>
33380   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewFeatures>
33381   {
33382     using Type = PhysicalDeviceMultiviewFeatures;
33383   };
33384   using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures;
33385 
33386   struct PhysicalDeviceMultiviewProperties
33387   {
33388     using NativeType = VkPhysicalDeviceMultiviewProperties;
33389 
33390     static const bool allowDuplicate = false;
33391     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewProperties;
33392 
33393 
33394 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceMultiviewPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties33395 VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties(uint32_t maxMultiviewViewCount_ = {}, uint32_t maxMultiviewInstanceIndex_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33396     : pNext( pNext_ ), maxMultiviewViewCount( maxMultiviewViewCount_ ), maxMultiviewInstanceIndex( maxMultiviewInstanceIndex_ )
33397     {}
33398 
33399     VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33400 
PhysicalDeviceMultiviewPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties33401     PhysicalDeviceMultiviewProperties( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
33402       : PhysicalDeviceMultiviewProperties( *reinterpret_cast<PhysicalDeviceMultiviewProperties const *>( &rhs ) )
33403     {}
33404 
33405 
33406     PhysicalDeviceMultiviewProperties & operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33407 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33408 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties33409     PhysicalDeviceMultiviewProperties & operator=( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT
33410     {
33411       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties const *>( &rhs );
33412       return *this;
33413     }
33414 
33415 
operator VkPhysicalDeviceMultiviewProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties33416     operator VkPhysicalDeviceMultiviewProperties const &() const VULKAN_HPP_NOEXCEPT
33417     {
33418       return *reinterpret_cast<const VkPhysicalDeviceMultiviewProperties*>( this );
33419     }
33420 
operator VkPhysicalDeviceMultiviewProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties33421     operator VkPhysicalDeviceMultiviewProperties &() VULKAN_HPP_NOEXCEPT
33422     {
33423       return *reinterpret_cast<VkPhysicalDeviceMultiviewProperties*>( this );
33424     }
33425 
33426 #if defined( VULKAN_HPP_USE_REFLECT )
33427 #if 14 <= VULKAN_HPP_CPP_VERSION
33428     auto
33429 #else
33430     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &>
33431 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties33432       reflect() const VULKAN_HPP_NOEXCEPT
33433     {
33434       return std::tie( sType, pNext, maxMultiviewViewCount, maxMultiviewInstanceIndex );
33435     }
33436 #endif
33437 
33438 
33439 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33440 auto operator<=>( PhysicalDeviceMultiviewProperties const & ) const = default;
33441 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties33442     bool operator==( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
33443     {
33444 #if defined( VULKAN_HPP_USE_REFLECT )
33445       return this->reflect() == rhs.reflect();
33446 #else
33447       return ( sType == rhs.sType )
33448           && ( pNext == rhs.pNext )
33449           && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
33450           && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
33451 #endif
33452     }
33453 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties33454     bool operator!=( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
33455     {
33456       return !operator==( rhs );
33457     }
33458 #endif
33459 
33460     public:
33461     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties;
33462     void * pNext = {};
33463     uint32_t maxMultiviewViewCount = {};
33464     uint32_t maxMultiviewInstanceIndex = {};
33465 
33466   };
33467 
33468   template <>
33469   struct CppType<StructureType, StructureType::ePhysicalDeviceMultiviewProperties>
33470   {
33471     using Type = PhysicalDeviceMultiviewProperties;
33472   };
33473   using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties;
33474 
33475   struct PhysicalDevicePCIBusInfoPropertiesEXT
33476   {
33477     using NativeType = VkPhysicalDevicePCIBusInfoPropertiesEXT;
33478 
33479     static const bool allowDuplicate = false;
33480     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
33481 
33482 
33483 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePCIBusInfoPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT33484 VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT(uint32_t pciDomain_ = {}, uint32_t pciBus_ = {}, uint32_t pciDevice_ = {}, uint32_t pciFunction_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33485     : pNext( pNext_ ), pciDomain( pciDomain_ ), pciBus( pciBus_ ), pciDevice( pciDevice_ ), pciFunction( pciFunction_ )
33486     {}
33487 
33488     VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33489 
PhysicalDevicePCIBusInfoPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT33490     PhysicalDevicePCIBusInfoPropertiesEXT( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33491       : PhysicalDevicePCIBusInfoPropertiesEXT( *reinterpret_cast<PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs ) )
33492     {}
33493 
33494 
33495     PhysicalDevicePCIBusInfoPropertiesEXT & operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33496 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33497 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT33498     PhysicalDevicePCIBusInfoPropertiesEXT & operator=( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
33499     {
33500       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT const *>( &rhs );
33501       return *this;
33502     }
33503 
33504 
operator VkPhysicalDevicePCIBusInfoPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT33505     operator VkPhysicalDevicePCIBusInfoPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
33506     {
33507       return *reinterpret_cast<const VkPhysicalDevicePCIBusInfoPropertiesEXT*>( this );
33508     }
33509 
operator VkPhysicalDevicePCIBusInfoPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT33510     operator VkPhysicalDevicePCIBusInfoPropertiesEXT &() VULKAN_HPP_NOEXCEPT
33511     {
33512       return *reinterpret_cast<VkPhysicalDevicePCIBusInfoPropertiesEXT*>( this );
33513     }
33514 
33515 #if defined( VULKAN_HPP_USE_REFLECT )
33516 #if 14 <= VULKAN_HPP_CPP_VERSION
33517     auto
33518 #else
33519     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &>
33520 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT33521       reflect() const VULKAN_HPP_NOEXCEPT
33522     {
33523       return std::tie( sType, pNext, pciDomain, pciBus, pciDevice, pciFunction );
33524     }
33525 #endif
33526 
33527 
33528 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33529 auto operator<=>( PhysicalDevicePCIBusInfoPropertiesEXT const & ) const = default;
33530 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT33531     bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33532     {
33533 #if defined( VULKAN_HPP_USE_REFLECT )
33534       return this->reflect() == rhs.reflect();
33535 #else
33536       return ( sType == rhs.sType )
33537           && ( pNext == rhs.pNext )
33538           && ( pciDomain == rhs.pciDomain )
33539           && ( pciBus == rhs.pciBus )
33540           && ( pciDevice == rhs.pciDevice )
33541           && ( pciFunction == rhs.pciFunction );
33542 #endif
33543     }
33544 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT33545     bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
33546     {
33547       return !operator==( rhs );
33548     }
33549 #endif
33550 
33551     public:
33552     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT;
33553     void * pNext = {};
33554     uint32_t pciDomain = {};
33555     uint32_t pciBus = {};
33556     uint32_t pciDevice = {};
33557     uint32_t pciFunction = {};
33558 
33559   };
33560 
33561   template <>
33562   struct CppType<StructureType, StructureType::ePhysicalDevicePciBusInfoPropertiesEXT>
33563   {
33564     using Type = PhysicalDevicePCIBusInfoPropertiesEXT;
33565   };
33566 
33567   struct PhysicalDevicePerformanceQueryFeaturesKHR
33568   {
33569     using NativeType = VkPhysicalDevicePerformanceQueryFeaturesKHR;
33570 
33571     static const bool allowDuplicate = false;
33572     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
33573 
33574 
33575 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerformanceQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33576 VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ = {}, VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33577     : pNext( pNext_ ), performanceCounterQueryPools( performanceCounterQueryPools_ ), performanceCounterMultipleQueryPools( performanceCounterMultipleQueryPools_ )
33578     {}
33579 
33580     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33581 
PhysicalDevicePerformanceQueryFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33582     PhysicalDevicePerformanceQueryFeaturesKHR( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
33583       : PhysicalDevicePerformanceQueryFeaturesKHR( *reinterpret_cast<PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs ) )
33584     {}
33585 
33586 
33587     PhysicalDevicePerformanceQueryFeaturesKHR & operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33588 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33589 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33590     PhysicalDevicePerformanceQueryFeaturesKHR & operator=( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
33591     {
33592       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR const *>( &rhs );
33593       return *this;
33594     }
33595 
33596 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33597     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
33598     {
33599       pNext = pNext_;
33600       return *this;
33601     }
33602 
setPerformanceCounterQueryPoolsVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33603     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPerformanceCounterQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ ) VULKAN_HPP_NOEXCEPT
33604     {
33605       performanceCounterQueryPools = performanceCounterQueryPools_;
33606       return *this;
33607     }
33608 
setPerformanceCounterMultipleQueryPoolsVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33609     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPerformanceCounterMultipleQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ ) VULKAN_HPP_NOEXCEPT
33610     {
33611       performanceCounterMultipleQueryPools = performanceCounterMultipleQueryPools_;
33612       return *this;
33613     }
33614 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33615 
33616 
operator VkPhysicalDevicePerformanceQueryFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33617     operator VkPhysicalDevicePerformanceQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
33618     {
33619       return *reinterpret_cast<const VkPhysicalDevicePerformanceQueryFeaturesKHR*>( this );
33620     }
33621 
operator VkPhysicalDevicePerformanceQueryFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33622     operator VkPhysicalDevicePerformanceQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT
33623     {
33624       return *reinterpret_cast<VkPhysicalDevicePerformanceQueryFeaturesKHR*>( this );
33625     }
33626 
33627 #if defined( VULKAN_HPP_USE_REFLECT )
33628 #if 14 <= VULKAN_HPP_CPP_VERSION
33629     auto
33630 #else
33631     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
33632 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33633       reflect() const VULKAN_HPP_NOEXCEPT
33634     {
33635       return std::tie( sType, pNext, performanceCounterQueryPools, performanceCounterMultipleQueryPools );
33636     }
33637 #endif
33638 
33639 
33640 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33641 auto operator<=>( PhysicalDevicePerformanceQueryFeaturesKHR const & ) const = default;
33642 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33643     bool operator==( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
33644     {
33645 #if defined( VULKAN_HPP_USE_REFLECT )
33646       return this->reflect() == rhs.reflect();
33647 #else
33648       return ( sType == rhs.sType )
33649           && ( pNext == rhs.pNext )
33650           && ( performanceCounterQueryPools == rhs.performanceCounterQueryPools )
33651           && ( performanceCounterMultipleQueryPools == rhs.performanceCounterMultipleQueryPools );
33652 #endif
33653     }
33654 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR33655     bool operator!=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
33656     {
33657       return !operator==( rhs );
33658     }
33659 #endif
33660 
33661     public:
33662     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR;
33663     void * pNext = {};
33664     VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools = {};
33665     VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools = {};
33666 
33667   };
33668 
33669   template <>
33670   struct CppType<StructureType, StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR>
33671   {
33672     using Type = PhysicalDevicePerformanceQueryFeaturesKHR;
33673   };
33674 
33675   struct PhysicalDevicePerformanceQueryPropertiesKHR
33676   {
33677     using NativeType = VkPhysicalDevicePerformanceQueryPropertiesKHR;
33678 
33679     static const bool allowDuplicate = false;
33680     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
33681 
33682 
33683 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePerformanceQueryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR33684 VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR(VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33685     : pNext( pNext_ ), allowCommandBufferQueryCopies( allowCommandBufferQueryCopies_ )
33686     {}
33687 
33688     VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33689 
PhysicalDevicePerformanceQueryPropertiesKHRVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR33690     PhysicalDevicePerformanceQueryPropertiesKHR( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
33691       : PhysicalDevicePerformanceQueryPropertiesKHR( *reinterpret_cast<PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs ) )
33692     {}
33693 
33694 
33695     PhysicalDevicePerformanceQueryPropertiesKHR & operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33696 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33697 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR33698     PhysicalDevicePerformanceQueryPropertiesKHR & operator=( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
33699     {
33700       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR const *>( &rhs );
33701       return *this;
33702     }
33703 
33704 
operator VkPhysicalDevicePerformanceQueryPropertiesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR33705     operator VkPhysicalDevicePerformanceQueryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT
33706     {
33707       return *reinterpret_cast<const VkPhysicalDevicePerformanceQueryPropertiesKHR*>( this );
33708     }
33709 
operator VkPhysicalDevicePerformanceQueryPropertiesKHR&VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR33710     operator VkPhysicalDevicePerformanceQueryPropertiesKHR &() VULKAN_HPP_NOEXCEPT
33711     {
33712       return *reinterpret_cast<VkPhysicalDevicePerformanceQueryPropertiesKHR*>( this );
33713     }
33714 
33715 #if defined( VULKAN_HPP_USE_REFLECT )
33716 #if 14 <= VULKAN_HPP_CPP_VERSION
33717     auto
33718 #else
33719     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
33720 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR33721       reflect() const VULKAN_HPP_NOEXCEPT
33722     {
33723       return std::tie( sType, pNext, allowCommandBufferQueryCopies );
33724     }
33725 #endif
33726 
33727 
33728 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33729 auto operator<=>( PhysicalDevicePerformanceQueryPropertiesKHR const & ) const = default;
33730 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR33731     bool operator==( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
33732     {
33733 #if defined( VULKAN_HPP_USE_REFLECT )
33734       return this->reflect() == rhs.reflect();
33735 #else
33736       return ( sType == rhs.sType )
33737           && ( pNext == rhs.pNext )
33738           && ( allowCommandBufferQueryCopies == rhs.allowCommandBufferQueryCopies );
33739 #endif
33740     }
33741 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR33742     bool operator!=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
33743     {
33744       return !operator==( rhs );
33745     }
33746 #endif
33747 
33748     public:
33749     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR;
33750     void * pNext = {};
33751     VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies = {};
33752 
33753   };
33754 
33755   template <>
33756   struct CppType<StructureType, StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR>
33757   {
33758     using Type = PhysicalDevicePerformanceQueryPropertiesKHR;
33759   };
33760 
33761   struct PhysicalDevicePipelineCreationCacheControlFeatures
33762   {
33763     using NativeType = VkPhysicalDevicePipelineCreationCacheControlFeatures;
33764 
33765     static const bool allowDuplicate = false;
33766     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures;
33767 
33768 
33769 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePipelineCreationCacheControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33770 VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeatures(VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33771     : pNext( pNext_ ), pipelineCreationCacheControl( pipelineCreationCacheControl_ )
33772     {}
33773 
33774     VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeatures( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33775 
PhysicalDevicePipelineCreationCacheControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33776     PhysicalDevicePipelineCreationCacheControlFeatures( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
33777       : PhysicalDevicePipelineCreationCacheControlFeatures( *reinterpret_cast<PhysicalDevicePipelineCreationCacheControlFeatures const *>( &rhs ) )
33778     {}
33779 
33780 
33781     PhysicalDevicePipelineCreationCacheControlFeatures & operator=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33782 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33783 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33784     PhysicalDevicePipelineCreationCacheControlFeatures & operator=( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
33785     {
33786       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures const *>( &rhs );
33787       return *this;
33788     }
33789 
33790 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33791     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
33792     {
33793       pNext = pNext_;
33794       return *this;
33795     }
33796 
setPipelineCreationCacheControlVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33797     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures & setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT
33798     {
33799       pipelineCreationCacheControl = pipelineCreationCacheControl_;
33800       return *this;
33801     }
33802 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33803 
33804 
operator VkPhysicalDevicePipelineCreationCacheControlFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33805     operator VkPhysicalDevicePipelineCreationCacheControlFeatures const &() const VULKAN_HPP_NOEXCEPT
33806     {
33807       return *reinterpret_cast<const VkPhysicalDevicePipelineCreationCacheControlFeatures*>( this );
33808     }
33809 
operator VkPhysicalDevicePipelineCreationCacheControlFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33810     operator VkPhysicalDevicePipelineCreationCacheControlFeatures &() VULKAN_HPP_NOEXCEPT
33811     {
33812       return *reinterpret_cast<VkPhysicalDevicePipelineCreationCacheControlFeatures*>( this );
33813     }
33814 
33815 #if defined( VULKAN_HPP_USE_REFLECT )
33816 #if 14 <= VULKAN_HPP_CPP_VERSION
33817     auto
33818 #else
33819     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
33820 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33821       reflect() const VULKAN_HPP_NOEXCEPT
33822     {
33823       return std::tie( sType, pNext, pipelineCreationCacheControl );
33824     }
33825 #endif
33826 
33827 
33828 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33829 auto operator<=>( PhysicalDevicePipelineCreationCacheControlFeatures const & ) const = default;
33830 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33831     bool operator==( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
33832     {
33833 #if defined( VULKAN_HPP_USE_REFLECT )
33834       return this->reflect() == rhs.reflect();
33835 #else
33836       return ( sType == rhs.sType )
33837           && ( pNext == rhs.pNext )
33838           && ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl );
33839 #endif
33840     }
33841 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures33842     bool operator!=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
33843     {
33844       return !operator==( rhs );
33845     }
33846 #endif
33847 
33848     public:
33849     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures;
33850     void * pNext = {};
33851     VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl = {};
33852 
33853   };
33854 
33855   template <>
33856   struct CppType<StructureType, StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures>
33857   {
33858     using Type = PhysicalDevicePipelineCreationCacheControlFeatures;
33859   };
33860   using PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeatures;
33861 
33862   struct PhysicalDevicePointClippingProperties
33863   {
33864     using NativeType = VkPhysicalDevicePointClippingProperties;
33865 
33866     static const bool allowDuplicate = false;
33867     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePointClippingProperties;
33868 
33869 
33870 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePointClippingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties33871 VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties(VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33872     : pNext( pNext_ ), pointClippingBehavior( pointClippingBehavior_ )
33873     {}
33874 
33875     VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33876 
PhysicalDevicePointClippingPropertiesVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties33877     PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
33878       : PhysicalDevicePointClippingProperties( *reinterpret_cast<PhysicalDevicePointClippingProperties const *>( &rhs ) )
33879     {}
33880 
33881 
33882     PhysicalDevicePointClippingProperties & operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33883 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33884 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties33885     PhysicalDevicePointClippingProperties & operator=( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT
33886     {
33887       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties const *>( &rhs );
33888       return *this;
33889     }
33890 
33891 
operator VkPhysicalDevicePointClippingProperties const&VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties33892     operator VkPhysicalDevicePointClippingProperties const &() const VULKAN_HPP_NOEXCEPT
33893     {
33894       return *reinterpret_cast<const VkPhysicalDevicePointClippingProperties*>( this );
33895     }
33896 
operator VkPhysicalDevicePointClippingProperties&VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties33897     operator VkPhysicalDevicePointClippingProperties &() VULKAN_HPP_NOEXCEPT
33898     {
33899       return *reinterpret_cast<VkPhysicalDevicePointClippingProperties*>( this );
33900     }
33901 
33902 #if defined( VULKAN_HPP_USE_REFLECT )
33903 #if 14 <= VULKAN_HPP_CPP_VERSION
33904     auto
33905 #else
33906     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PointClippingBehavior const &>
33907 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties33908       reflect() const VULKAN_HPP_NOEXCEPT
33909     {
33910       return std::tie( sType, pNext, pointClippingBehavior );
33911     }
33912 #endif
33913 
33914 
33915 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
33916 auto operator<=>( PhysicalDevicePointClippingProperties const & ) const = default;
33917 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties33918     bool operator==( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
33919     {
33920 #if defined( VULKAN_HPP_USE_REFLECT )
33921       return this->reflect() == rhs.reflect();
33922 #else
33923       return ( sType == rhs.sType )
33924           && ( pNext == rhs.pNext )
33925           && ( pointClippingBehavior == rhs.pointClippingBehavior );
33926 #endif
33927     }
33928 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties33929     bool operator!=( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
33930     {
33931       return !operator==( rhs );
33932     }
33933 #endif
33934 
33935     public:
33936     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePointClippingProperties;
33937     void * pNext = {};
33938     VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
33939 
33940   };
33941 
33942   template <>
33943   struct CppType<StructureType, StructureType::ePhysicalDevicePointClippingProperties>
33944   {
33945     using Type = PhysicalDevicePointClippingProperties;
33946   };
33947   using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties;
33948 
33949   struct PhysicalDevicePrivateDataFeatures
33950   {
33951     using NativeType = VkPhysicalDevicePrivateDataFeatures;
33952 
33953     static const bool allowDuplicate = false;
33954     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePrivateDataFeatures;
33955 
33956 
33957 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePrivateDataFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures33958 VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeatures(VULKAN_HPP_NAMESPACE::Bool32 privateData_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
33959     : pNext( pNext_ ), privateData( privateData_ )
33960     {}
33961 
33962     VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeatures( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33963 
PhysicalDevicePrivateDataFeaturesVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures33964     PhysicalDevicePrivateDataFeatures( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
33965       : PhysicalDevicePrivateDataFeatures( *reinterpret_cast<PhysicalDevicePrivateDataFeatures const *>( &rhs ) )
33966     {}
33967 
33968 
33969     PhysicalDevicePrivateDataFeatures & operator=( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
33970 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
33971 
operator =VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures33972     PhysicalDevicePrivateDataFeatures & operator=( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
33973     {
33974       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures const *>( &rhs );
33975       return *this;
33976     }
33977 
33978 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures33979     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
33980     {
33981       pNext = pNext_;
33982       return *this;
33983     }
33984 
setPrivateDataVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures33985     VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT
33986     {
33987       privateData = privateData_;
33988       return *this;
33989     }
33990 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
33991 
33992 
operator VkPhysicalDevicePrivateDataFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures33993     operator VkPhysicalDevicePrivateDataFeatures const &() const VULKAN_HPP_NOEXCEPT
33994     {
33995       return *reinterpret_cast<const VkPhysicalDevicePrivateDataFeatures*>( this );
33996     }
33997 
operator VkPhysicalDevicePrivateDataFeatures&VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures33998     operator VkPhysicalDevicePrivateDataFeatures &() VULKAN_HPP_NOEXCEPT
33999     {
34000       return *reinterpret_cast<VkPhysicalDevicePrivateDataFeatures*>( this );
34001     }
34002 
34003 #if defined( VULKAN_HPP_USE_REFLECT )
34004 #if 14 <= VULKAN_HPP_CPP_VERSION
34005     auto
34006 #else
34007     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
34008 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures34009       reflect() const VULKAN_HPP_NOEXCEPT
34010     {
34011       return std::tie( sType, pNext, privateData );
34012     }
34013 #endif
34014 
34015 
34016 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34017 auto operator<=>( PhysicalDevicePrivateDataFeatures const & ) const = default;
34018 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures34019     bool operator==( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
34020     {
34021 #if defined( VULKAN_HPP_USE_REFLECT )
34022       return this->reflect() == rhs.reflect();
34023 #else
34024       return ( sType == rhs.sType )
34025           && ( pNext == rhs.pNext )
34026           && ( privateData == rhs.privateData );
34027 #endif
34028     }
34029 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures34030     bool operator!=( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
34031     {
34032       return !operator==( rhs );
34033     }
34034 #endif
34035 
34036     public:
34037     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePrivateDataFeatures;
34038     void * pNext = {};
34039     VULKAN_HPP_NAMESPACE::Bool32 privateData = {};
34040 
34041   };
34042 
34043   template <>
34044   struct CppType<StructureType, StructureType::ePhysicalDevicePrivateDataFeatures>
34045   {
34046     using Type = PhysicalDevicePrivateDataFeatures;
34047   };
34048   using PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures;
34049 
34050   struct PhysicalDeviceSparseProperties
34051   {
34052     using NativeType = VkPhysicalDeviceSparseProperties;
34053 
34054 
34055 
34056 
34057 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSparsePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties34058 VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties(VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape_ = {}, VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape_ = {}, VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape_ = {}, VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize_ = {}, VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict_ = {}) VULKAN_HPP_NOEXCEPT
34059     : residencyStandard2DBlockShape( residencyStandard2DBlockShape_ ), residencyStandard2DMultisampleBlockShape( residencyStandard2DMultisampleBlockShape_ ), residencyStandard3DBlockShape( residencyStandard3DBlockShape_ ), residencyAlignedMipSize( residencyAlignedMipSize_ ), residencyNonResidentStrict( residencyNonResidentStrict_ )
34060     {}
34061 
34062     VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34063 
PhysicalDeviceSparsePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties34064     PhysicalDeviceSparseProperties( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
34065       : PhysicalDeviceSparseProperties( *reinterpret_cast<PhysicalDeviceSparseProperties const *>( &rhs ) )
34066     {}
34067 
34068 
34069     PhysicalDeviceSparseProperties & operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34070 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34071 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties34072     PhysicalDeviceSparseProperties & operator=( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT
34073     {
34074       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const *>( &rhs );
34075       return *this;
34076     }
34077 
34078 
operator VkPhysicalDeviceSparseProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties34079     operator VkPhysicalDeviceSparseProperties const &() const VULKAN_HPP_NOEXCEPT
34080     {
34081       return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>( this );
34082     }
34083 
operator VkPhysicalDeviceSparseProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties34084     operator VkPhysicalDeviceSparseProperties &() VULKAN_HPP_NOEXCEPT
34085     {
34086       return *reinterpret_cast<VkPhysicalDeviceSparseProperties*>( this );
34087     }
34088 
34089 #if defined( VULKAN_HPP_USE_REFLECT )
34090 #if 14 <= VULKAN_HPP_CPP_VERSION
34091     auto
34092 #else
34093     std::tuple<VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
34094 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties34095       reflect() const VULKAN_HPP_NOEXCEPT
34096     {
34097       return std::tie( residencyStandard2DBlockShape, residencyStandard2DMultisampleBlockShape, residencyStandard3DBlockShape, residencyAlignedMipSize, residencyNonResidentStrict );
34098     }
34099 #endif
34100 
34101 
34102 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34103 auto operator<=>( PhysicalDeviceSparseProperties const & ) const = default;
34104 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties34105     bool operator==( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
34106     {
34107 #if defined( VULKAN_HPP_USE_REFLECT )
34108       return this->reflect() == rhs.reflect();
34109 #else
34110       return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
34111           && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
34112           && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
34113           && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
34114           && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
34115 #endif
34116     }
34117 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties34118     bool operator!=( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
34119     {
34120       return !operator==( rhs );
34121     }
34122 #endif
34123 
34124     public:
34125     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape = {};
34126     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape = {};
34127     VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape = {};
34128     VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize = {};
34129     VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict = {};
34130 
34131   };
34132 
34133   struct PhysicalDeviceProperties
34134   {
34135     using NativeType = VkPhysicalDeviceProperties;
34136 
34137 
34138 
34139 
34140 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties34141 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties(uint32_t apiVersion_ = {}, uint32_t driverVersion_ = {}, uint32_t vendorID_ = {}, uint32_t deviceID_ = {}, VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType_ = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther, std::array<char,VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const & deviceName_ = {}, std::array<uint8_t,VK_UUID_SIZE> const & pipelineCacheUUID_ = {}, VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits limits_ = {}, VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties sparseProperties_ = {}) VULKAN_HPP_NOEXCEPT
34142     : apiVersion( apiVersion_ ), driverVersion( driverVersion_ ), vendorID( vendorID_ ), deviceID( deviceID_ ), deviceType( deviceType_ ), deviceName( deviceName_ ), pipelineCacheUUID( pipelineCacheUUID_ ), limits( limits_ ), sparseProperties( sparseProperties_ )
34143     {}
34144 
34145     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34146 
PhysicalDevicePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties34147     PhysicalDeviceProperties( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
34148       : PhysicalDeviceProperties( *reinterpret_cast<PhysicalDeviceProperties const *>( &rhs ) )
34149     {}
34150 
34151 
34152     PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34153 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34154 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties34155     PhysicalDeviceProperties & operator=( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT
34156     {
34157       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const *>( &rhs );
34158       return *this;
34159     }
34160 
34161 
operator VkPhysicalDeviceProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties34162     operator VkPhysicalDeviceProperties const &() const VULKAN_HPP_NOEXCEPT
34163     {
34164       return *reinterpret_cast<const VkPhysicalDeviceProperties*>( this );
34165     }
34166 
operator VkPhysicalDeviceProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties34167     operator VkPhysicalDeviceProperties &() VULKAN_HPP_NOEXCEPT
34168     {
34169       return *reinterpret_cast<VkPhysicalDeviceProperties*>( this );
34170     }
34171 
34172 #if defined( VULKAN_HPP_USE_REFLECT )
34173 #if 14 <= VULKAN_HPP_CPP_VERSION
34174     auto
34175 #else
34176     std::tuple<uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceType const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const &>
34177 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties34178       reflect() const VULKAN_HPP_NOEXCEPT
34179     {
34180       return std::tie( apiVersion, driverVersion, vendorID, deviceID, deviceType, deviceName, pipelineCacheUUID, limits, sparseProperties );
34181     }
34182 #endif
34183 
34184 
34185 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34186 auto operator<=>( PhysicalDeviceProperties const & ) const = default;
34187 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties34188     bool operator==( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
34189     {
34190 #if defined( VULKAN_HPP_USE_REFLECT )
34191       return this->reflect() == rhs.reflect();
34192 #else
34193       return ( apiVersion == rhs.apiVersion )
34194           && ( driverVersion == rhs.driverVersion )
34195           && ( vendorID == rhs.vendorID )
34196           && ( deviceID == rhs.deviceID )
34197           && ( deviceType == rhs.deviceType )
34198           && ( deviceName == rhs.deviceName )
34199           && ( pipelineCacheUUID == rhs.pipelineCacheUUID )
34200           && ( limits == rhs.limits )
34201           && ( sparseProperties == rhs.sparseProperties );
34202 #endif
34203     }
34204 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties34205     bool operator!=( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
34206     {
34207       return !operator==( rhs );
34208     }
34209 #endif
34210 
34211     public:
34212     uint32_t apiVersion = {};
34213     uint32_t driverVersion = {};
34214     uint32_t vendorID = {};
34215     uint32_t deviceID = {};
34216     VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther;
34217     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE> deviceName = {};
34218     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineCacheUUID = {};
34219     VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits limits = {};
34220     VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties sparseProperties = {};
34221 
34222   };
34223 
34224   struct PhysicalDeviceProperties2
34225   {
34226     using NativeType = VkPhysicalDeviceProperties2;
34227 
34228     static const bool allowDuplicate = false;
34229     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProperties2;
34230 
34231 
34232 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties234233 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2(VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34234     : pNext( pNext_ ), properties( properties_ )
34235     {}
34236 
34237     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34238 
PhysicalDeviceProperties2VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties234239     PhysicalDeviceProperties2( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
34240       : PhysicalDeviceProperties2( *reinterpret_cast<PhysicalDeviceProperties2 const *>( &rhs ) )
34241     {}
34242 
34243 
34244     PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34245 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34246 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties234247     PhysicalDeviceProperties2 & operator=( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
34248     {
34249       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const *>( &rhs );
34250       return *this;
34251     }
34252 
34253 
operator VkPhysicalDeviceProperties2 const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties234254     operator VkPhysicalDeviceProperties2 const &() const VULKAN_HPP_NOEXCEPT
34255     {
34256       return *reinterpret_cast<const VkPhysicalDeviceProperties2*>( this );
34257     }
34258 
operator VkPhysicalDeviceProperties2&VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties234259     operator VkPhysicalDeviceProperties2 &() VULKAN_HPP_NOEXCEPT
34260     {
34261       return *reinterpret_cast<VkPhysicalDeviceProperties2*>( this );
34262     }
34263 
34264 #if defined( VULKAN_HPP_USE_REFLECT )
34265 #if 14 <= VULKAN_HPP_CPP_VERSION
34266     auto
34267 #else
34268     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const &>
34269 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProperties234270       reflect() const VULKAN_HPP_NOEXCEPT
34271     {
34272       return std::tie( sType, pNext, properties );
34273     }
34274 #endif
34275 
34276 
34277 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34278 auto operator<=>( PhysicalDeviceProperties2 const & ) const = default;
34279 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties234280     bool operator==( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
34281     {
34282 #if defined( VULKAN_HPP_USE_REFLECT )
34283       return this->reflect() == rhs.reflect();
34284 #else
34285       return ( sType == rhs.sType )
34286           && ( pNext == rhs.pNext )
34287           && ( properties == rhs.properties );
34288 #endif
34289     }
34290 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties234291     bool operator!=( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
34292     {
34293       return !operator==( rhs );
34294     }
34295 #endif
34296 
34297     public:
34298     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProperties2;
34299     void * pNext = {};
34300     VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties = {};
34301 
34302   };
34303 
34304   template <>
34305   struct CppType<StructureType, StructureType::ePhysicalDeviceProperties2>
34306   {
34307     using Type = PhysicalDeviceProperties2;
34308   };
34309   using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2;
34310 
34311   struct PhysicalDeviceProtectedMemoryFeatures
34312   {
34313     using NativeType = VkPhysicalDeviceProtectedMemoryFeatures;
34314 
34315     static const bool allowDuplicate = false;
34316     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
34317 
34318 
34319 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProtectedMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34320 VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures(VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34321     : pNext( pNext_ ), protectedMemory( protectedMemory_ )
34322     {}
34323 
34324     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34325 
PhysicalDeviceProtectedMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34326     PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
34327       : PhysicalDeviceProtectedMemoryFeatures( *reinterpret_cast<PhysicalDeviceProtectedMemoryFeatures const *>( &rhs ) )
34328     {}
34329 
34330 
34331     PhysicalDeviceProtectedMemoryFeatures & operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34332 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34333 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34334     PhysicalDeviceProtectedMemoryFeatures & operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
34335     {
34336       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures const *>( &rhs );
34337       return *this;
34338     }
34339 
34340 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34341     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
34342     {
34343       pNext = pNext_;
34344       return *this;
34345     }
34346 
setProtectedMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34347     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT
34348     {
34349       protectedMemory = protectedMemory_;
34350       return *this;
34351     }
34352 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34353 
34354 
operator VkPhysicalDeviceProtectedMemoryFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34355     operator VkPhysicalDeviceProtectedMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT
34356     {
34357       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryFeatures*>( this );
34358     }
34359 
operator VkPhysicalDeviceProtectedMemoryFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34360     operator VkPhysicalDeviceProtectedMemoryFeatures &() VULKAN_HPP_NOEXCEPT
34361     {
34362       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryFeatures*>( this );
34363     }
34364 
34365 #if defined( VULKAN_HPP_USE_REFLECT )
34366 #if 14 <= VULKAN_HPP_CPP_VERSION
34367     auto
34368 #else
34369     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
34370 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34371       reflect() const VULKAN_HPP_NOEXCEPT
34372     {
34373       return std::tie( sType, pNext, protectedMemory );
34374     }
34375 #endif
34376 
34377 
34378 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34379 auto operator<=>( PhysicalDeviceProtectedMemoryFeatures const & ) const = default;
34380 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34381     bool operator==( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
34382     {
34383 #if defined( VULKAN_HPP_USE_REFLECT )
34384       return this->reflect() == rhs.reflect();
34385 #else
34386       return ( sType == rhs.sType )
34387           && ( pNext == rhs.pNext )
34388           && ( protectedMemory == rhs.protectedMemory );
34389 #endif
34390     }
34391 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures34392     bool operator!=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
34393     {
34394       return !operator==( rhs );
34395     }
34396 #endif
34397 
34398     public:
34399     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures;
34400     void * pNext = {};
34401     VULKAN_HPP_NAMESPACE::Bool32 protectedMemory = {};
34402 
34403   };
34404 
34405   template <>
34406   struct CppType<StructureType, StructureType::ePhysicalDeviceProtectedMemoryFeatures>
34407   {
34408     using Type = PhysicalDeviceProtectedMemoryFeatures;
34409   };
34410 
34411   struct PhysicalDeviceProtectedMemoryProperties
34412   {
34413     using NativeType = VkPhysicalDeviceProtectedMemoryProperties;
34414 
34415     static const bool allowDuplicate = false;
34416     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProtectedMemoryProperties;
34417 
34418 
34419 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceProtectedMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties34420 VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties(VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34421     : pNext( pNext_ ), protectedNoFault( protectedNoFault_ )
34422     {}
34423 
34424     VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34425 
PhysicalDeviceProtectedMemoryPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties34426     PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
34427       : PhysicalDeviceProtectedMemoryProperties( *reinterpret_cast<PhysicalDeviceProtectedMemoryProperties const *>( &rhs ) )
34428     {}
34429 
34430 
34431     PhysicalDeviceProtectedMemoryProperties & operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34432 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34433 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties34434     PhysicalDeviceProtectedMemoryProperties & operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT
34435     {
34436       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties const *>( &rhs );
34437       return *this;
34438     }
34439 
34440 
operator VkPhysicalDeviceProtectedMemoryProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties34441     operator VkPhysicalDeviceProtectedMemoryProperties const &() const VULKAN_HPP_NOEXCEPT
34442     {
34443       return *reinterpret_cast<const VkPhysicalDeviceProtectedMemoryProperties*>( this );
34444     }
34445 
operator VkPhysicalDeviceProtectedMemoryProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties34446     operator VkPhysicalDeviceProtectedMemoryProperties &() VULKAN_HPP_NOEXCEPT
34447     {
34448       return *reinterpret_cast<VkPhysicalDeviceProtectedMemoryProperties*>( this );
34449     }
34450 
34451 #if defined( VULKAN_HPP_USE_REFLECT )
34452 #if 14 <= VULKAN_HPP_CPP_VERSION
34453     auto
34454 #else
34455     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
34456 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties34457       reflect() const VULKAN_HPP_NOEXCEPT
34458     {
34459       return std::tie( sType, pNext, protectedNoFault );
34460     }
34461 #endif
34462 
34463 
34464 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34465 auto operator<=>( PhysicalDeviceProtectedMemoryProperties const & ) const = default;
34466 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties34467     bool operator==( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
34468     {
34469 #if defined( VULKAN_HPP_USE_REFLECT )
34470       return this->reflect() == rhs.reflect();
34471 #else
34472       return ( sType == rhs.sType )
34473           && ( pNext == rhs.pNext )
34474           && ( protectedNoFault == rhs.protectedNoFault );
34475 #endif
34476     }
34477 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties34478     bool operator!=( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
34479     {
34480       return !operator==( rhs );
34481     }
34482 #endif
34483 
34484     public:
34485     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties;
34486     void * pNext = {};
34487     VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault = {};
34488 
34489   };
34490 
34491   template <>
34492   struct CppType<StructureType, StructureType::ePhysicalDeviceProtectedMemoryProperties>
34493   {
34494     using Type = PhysicalDeviceProtectedMemoryProperties;
34495   };
34496 
34497   struct PhysicalDeviceRobustness2FeaturesEXT
34498   {
34499     using NativeType = VkPhysicalDeviceRobustness2FeaturesEXT;
34500 
34501     static const bool allowDuplicate = false;
34502     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
34503 
34504 
34505 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRobustness2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34506 VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34507     : pNext( pNext_ ), robustBufferAccess2( robustBufferAccess2_ ), robustImageAccess2( robustImageAccess2_ ), nullDescriptor( nullDescriptor_ )
34508     {}
34509 
34510     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34511 
PhysicalDeviceRobustness2FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34512     PhysicalDeviceRobustness2FeaturesEXT( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34513       : PhysicalDeviceRobustness2FeaturesEXT( *reinterpret_cast<PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs ) )
34514     {}
34515 
34516 
34517     PhysicalDeviceRobustness2FeaturesEXT & operator=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34518 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34519 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34520     PhysicalDeviceRobustness2FeaturesEXT & operator=( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34521     {
34522       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT const *>( &rhs );
34523       return *this;
34524     }
34525 
34526 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34527     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
34528     {
34529       pNext = pNext_;
34530       return *this;
34531     }
34532 
setRobustBufferAccess2VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34533     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setRobustBufferAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ ) VULKAN_HPP_NOEXCEPT
34534     {
34535       robustBufferAccess2 = robustBufferAccess2_;
34536       return *this;
34537     }
34538 
setRobustImageAccess2VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34539     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setRobustImageAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ ) VULKAN_HPP_NOEXCEPT
34540     {
34541       robustImageAccess2 = robustImageAccess2_;
34542       return *this;
34543     }
34544 
setNullDescriptorVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34545     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & setNullDescriptor( VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ ) VULKAN_HPP_NOEXCEPT
34546     {
34547       nullDescriptor = nullDescriptor_;
34548       return *this;
34549     }
34550 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34551 
34552 
operator VkPhysicalDeviceRobustness2FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34553     operator VkPhysicalDeviceRobustness2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
34554     {
34555       return *reinterpret_cast<const VkPhysicalDeviceRobustness2FeaturesEXT*>( this );
34556     }
34557 
operator VkPhysicalDeviceRobustness2FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34558     operator VkPhysicalDeviceRobustness2FeaturesEXT &() VULKAN_HPP_NOEXCEPT
34559     {
34560       return *reinterpret_cast<VkPhysicalDeviceRobustness2FeaturesEXT*>( this );
34561     }
34562 
34563 #if defined( VULKAN_HPP_USE_REFLECT )
34564 #if 14 <= VULKAN_HPP_CPP_VERSION
34565     auto
34566 #else
34567     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
34568 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34569       reflect() const VULKAN_HPP_NOEXCEPT
34570     {
34571       return std::tie( sType, pNext, robustBufferAccess2, robustImageAccess2, nullDescriptor );
34572     }
34573 #endif
34574 
34575 
34576 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34577 auto operator<=>( PhysicalDeviceRobustness2FeaturesEXT const & ) const = default;
34578 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34579     bool operator==( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34580     {
34581 #if defined( VULKAN_HPP_USE_REFLECT )
34582       return this->reflect() == rhs.reflect();
34583 #else
34584       return ( sType == rhs.sType )
34585           && ( pNext == rhs.pNext )
34586           && ( robustBufferAccess2 == rhs.robustBufferAccess2 )
34587           && ( robustImageAccess2 == rhs.robustImageAccess2 )
34588           && ( nullDescriptor == rhs.nullDescriptor );
34589 #endif
34590     }
34591 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT34592     bool operator!=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34593     {
34594       return !operator==( rhs );
34595     }
34596 #endif
34597 
34598     public:
34599     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2FeaturesEXT;
34600     void * pNext = {};
34601     VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2 = {};
34602     VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2 = {};
34603     VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor = {};
34604 
34605   };
34606 
34607   template <>
34608   struct CppType<StructureType, StructureType::ePhysicalDeviceRobustness2FeaturesEXT>
34609   {
34610     using Type = PhysicalDeviceRobustness2FeaturesEXT;
34611   };
34612 
34613   struct PhysicalDeviceRobustness2PropertiesEXT
34614   {
34615     using NativeType = VkPhysicalDeviceRobustness2PropertiesEXT;
34616 
34617     static const bool allowDuplicate = false;
34618     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
34619 
34620 
34621 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceRobustness2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT34622 VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT(VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34623     : pNext( pNext_ ), robustStorageBufferAccessSizeAlignment( robustStorageBufferAccessSizeAlignment_ ), robustUniformBufferAccessSizeAlignment( robustUniformBufferAccessSizeAlignment_ )
34624     {}
34625 
34626     VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34627 
PhysicalDeviceRobustness2PropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT34628     PhysicalDeviceRobustness2PropertiesEXT( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34629       : PhysicalDeviceRobustness2PropertiesEXT( *reinterpret_cast<PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs ) )
34630     {}
34631 
34632 
34633     PhysicalDeviceRobustness2PropertiesEXT & operator=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34634 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34635 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT34636     PhysicalDeviceRobustness2PropertiesEXT & operator=( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34637     {
34638       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT const *>( &rhs );
34639       return *this;
34640     }
34641 
34642 
operator VkPhysicalDeviceRobustness2PropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT34643     operator VkPhysicalDeviceRobustness2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
34644     {
34645       return *reinterpret_cast<const VkPhysicalDeviceRobustness2PropertiesEXT*>( this );
34646     }
34647 
operator VkPhysicalDeviceRobustness2PropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT34648     operator VkPhysicalDeviceRobustness2PropertiesEXT &() VULKAN_HPP_NOEXCEPT
34649     {
34650       return *reinterpret_cast<VkPhysicalDeviceRobustness2PropertiesEXT*>( this );
34651     }
34652 
34653 #if defined( VULKAN_HPP_USE_REFLECT )
34654 #if 14 <= VULKAN_HPP_CPP_VERSION
34655     auto
34656 #else
34657     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
34658 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT34659       reflect() const VULKAN_HPP_NOEXCEPT
34660     {
34661       return std::tie( sType, pNext, robustStorageBufferAccessSizeAlignment, robustUniformBufferAccessSizeAlignment );
34662     }
34663 #endif
34664 
34665 
34666 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34667 auto operator<=>( PhysicalDeviceRobustness2PropertiesEXT const & ) const = default;
34668 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT34669     bool operator==( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34670     {
34671 #if defined( VULKAN_HPP_USE_REFLECT )
34672       return this->reflect() == rhs.reflect();
34673 #else
34674       return ( sType == rhs.sType )
34675           && ( pNext == rhs.pNext )
34676           && ( robustStorageBufferAccessSizeAlignment == rhs.robustStorageBufferAccessSizeAlignment )
34677           && ( robustUniformBufferAccessSizeAlignment == rhs.robustUniformBufferAccessSizeAlignment );
34678 #endif
34679     }
34680 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT34681     bool operator!=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34682     {
34683       return !operator==( rhs );
34684     }
34685 #endif
34686 
34687     public:
34688     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2PropertiesEXT;
34689     void * pNext = {};
34690     VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment = {};
34691     VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment = {};
34692 
34693   };
34694 
34695   template <>
34696   struct CppType<StructureType, StructureType::ePhysicalDeviceRobustness2PropertiesEXT>
34697   {
34698     using Type = PhysicalDeviceRobustness2PropertiesEXT;
34699   };
34700 
34701   struct PhysicalDeviceSampleLocationsPropertiesEXT
34702   {
34703     using NativeType = VkPhysicalDeviceSampleLocationsPropertiesEXT;
34704 
34705     static const bool allowDuplicate = false;
34706     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
34707 
34708 
34709 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSampleLocationsPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT34710 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT(VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {}, std::array<float,2> const & sampleLocationCoordinateRange_ = {}, uint32_t sampleLocationSubPixelBits_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variableSampleLocations_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34711     : pNext( pNext_ ), sampleLocationSampleCounts( sampleLocationSampleCounts_ ), maxSampleLocationGridSize( maxSampleLocationGridSize_ ), sampleLocationCoordinateRange( sampleLocationCoordinateRange_ ), sampleLocationSubPixelBits( sampleLocationSubPixelBits_ ), variableSampleLocations( variableSampleLocations_ )
34712     {}
34713 
34714     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34715 
PhysicalDeviceSampleLocationsPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT34716     PhysicalDeviceSampleLocationsPropertiesEXT( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34717       : PhysicalDeviceSampleLocationsPropertiesEXT( *reinterpret_cast<PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs ) )
34718     {}
34719 
34720 
34721     PhysicalDeviceSampleLocationsPropertiesEXT & operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34722 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34723 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT34724     PhysicalDeviceSampleLocationsPropertiesEXT & operator=( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
34725     {
34726       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT const *>( &rhs );
34727       return *this;
34728     }
34729 
34730 
operator VkPhysicalDeviceSampleLocationsPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT34731     operator VkPhysicalDeviceSampleLocationsPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
34732     {
34733       return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>( this );
34734     }
34735 
operator VkPhysicalDeviceSampleLocationsPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT34736     operator VkPhysicalDeviceSampleLocationsPropertiesEXT &() VULKAN_HPP_NOEXCEPT
34737     {
34738       return *reinterpret_cast<VkPhysicalDeviceSampleLocationsPropertiesEXT*>( this );
34739     }
34740 
34741 #if defined( VULKAN_HPP_USE_REFLECT )
34742 #if 14 <= VULKAN_HPP_CPP_VERSION
34743     auto
34744 #else
34745     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
34746 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT34747       reflect() const VULKAN_HPP_NOEXCEPT
34748     {
34749       return std::tie( sType, pNext, sampleLocationSampleCounts, maxSampleLocationGridSize, sampleLocationCoordinateRange, sampleLocationSubPixelBits, variableSampleLocations );
34750     }
34751 #endif
34752 
34753 
34754 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34755 auto operator<=>( PhysicalDeviceSampleLocationsPropertiesEXT const & ) const = default;
34756 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT34757     bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34758     {
34759 #if defined( VULKAN_HPP_USE_REFLECT )
34760       return this->reflect() == rhs.reflect();
34761 #else
34762       return ( sType == rhs.sType )
34763           && ( pNext == rhs.pNext )
34764           && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
34765           && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
34766           && ( sampleLocationCoordinateRange == rhs.sampleLocationCoordinateRange )
34767           && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
34768           && ( variableSampleLocations == rhs.variableSampleLocations );
34769 #endif
34770     }
34771 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT34772     bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
34773     {
34774       return !operator==( rhs );
34775     }
34776 #endif
34777 
34778     public:
34779     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
34780     void * pNext = {};
34781     VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts = {};
34782     VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize = {};
34783     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<float, 2> sampleLocationCoordinateRange = {};
34784     uint32_t sampleLocationSubPixelBits = {};
34785     VULKAN_HPP_NAMESPACE::Bool32 variableSampleLocations = {};
34786 
34787   };
34788 
34789   template <>
34790   struct CppType<StructureType, StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT>
34791   {
34792     using Type = PhysicalDeviceSampleLocationsPropertiesEXT;
34793   };
34794 
34795   struct PhysicalDeviceSamplerFilterMinmaxProperties
34796   {
34797     using NativeType = VkPhysicalDeviceSamplerFilterMinmaxProperties;
34798 
34799     static const bool allowDuplicate = false;
34800     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
34801 
34802 
34803 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSamplerFilterMinmaxPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties34804 VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties(VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {}, VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34805     : pNext( pNext_ ), filterMinmaxSingleComponentFormats( filterMinmaxSingleComponentFormats_ ), filterMinmaxImageComponentMapping( filterMinmaxImageComponentMapping_ )
34806     {}
34807 
34808     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34809 
PhysicalDeviceSamplerFilterMinmaxPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties34810     PhysicalDeviceSamplerFilterMinmaxProperties( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
34811       : PhysicalDeviceSamplerFilterMinmaxProperties( *reinterpret_cast<PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs ) )
34812     {}
34813 
34814 
34815     PhysicalDeviceSamplerFilterMinmaxProperties & operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34816 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34817 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties34818     PhysicalDeviceSamplerFilterMinmaxProperties & operator=( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT
34819     {
34820       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties const *>( &rhs );
34821       return *this;
34822     }
34823 
34824 
operator VkPhysicalDeviceSamplerFilterMinmaxProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties34825     operator VkPhysicalDeviceSamplerFilterMinmaxProperties const &() const VULKAN_HPP_NOEXCEPT
34826     {
34827       return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxProperties*>( this );
34828     }
34829 
operator VkPhysicalDeviceSamplerFilterMinmaxProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties34830     operator VkPhysicalDeviceSamplerFilterMinmaxProperties &() VULKAN_HPP_NOEXCEPT
34831     {
34832       return *reinterpret_cast<VkPhysicalDeviceSamplerFilterMinmaxProperties*>( this );
34833     }
34834 
34835 #if defined( VULKAN_HPP_USE_REFLECT )
34836 #if 14 <= VULKAN_HPP_CPP_VERSION
34837     auto
34838 #else
34839     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
34840 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties34841       reflect() const VULKAN_HPP_NOEXCEPT
34842     {
34843       return std::tie( sType, pNext, filterMinmaxSingleComponentFormats, filterMinmaxImageComponentMapping );
34844     }
34845 #endif
34846 
34847 
34848 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34849 auto operator<=>( PhysicalDeviceSamplerFilterMinmaxProperties const & ) const = default;
34850 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties34851     bool operator==( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
34852     {
34853 #if defined( VULKAN_HPP_USE_REFLECT )
34854       return this->reflect() == rhs.reflect();
34855 #else
34856       return ( sType == rhs.sType )
34857           && ( pNext == rhs.pNext )
34858           && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
34859           && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
34860 #endif
34861     }
34862 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties34863     bool operator!=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
34864     {
34865       return !operator==( rhs );
34866     }
34867 #endif
34868 
34869     public:
34870     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties;
34871     void * pNext = {};
34872     VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats = {};
34873     VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping = {};
34874 
34875   };
34876 
34877   template <>
34878   struct CppType<StructureType, StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties>
34879   {
34880     using Type = PhysicalDeviceSamplerFilterMinmaxProperties;
34881   };
34882   using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties;
34883 
34884   struct PhysicalDeviceSamplerYcbcrConversionFeatures
34885   {
34886     using NativeType = VkPhysicalDeviceSamplerYcbcrConversionFeatures;
34887 
34888     static const bool allowDuplicate = false;
34889     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
34890 
34891 
34892 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSamplerYcbcrConversionFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34893 VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures(VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34894     : pNext( pNext_ ), samplerYcbcrConversion( samplerYcbcrConversion_ )
34895     {}
34896 
34897     VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34898 
PhysicalDeviceSamplerYcbcrConversionFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34899     PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
34900       : PhysicalDeviceSamplerYcbcrConversionFeatures( *reinterpret_cast<PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs ) )
34901     {}
34902 
34903 
34904     PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34905 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
34906 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34907     PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
34908     {
34909       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures const *>( &rhs );
34910       return *this;
34911     }
34912 
34913 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34914     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
34915     {
34916       pNext = pNext_;
34917       return *this;
34918     }
34919 
setSamplerYcbcrConversionVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34920     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT
34921     {
34922       samplerYcbcrConversion = samplerYcbcrConversion_;
34923       return *this;
34924     }
34925 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
34926 
34927 
operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34928     operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const &() const VULKAN_HPP_NOEXCEPT
34929     {
34930       return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeatures*>( this );
34931     }
34932 
operator VkPhysicalDeviceSamplerYcbcrConversionFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34933     operator VkPhysicalDeviceSamplerYcbcrConversionFeatures &() VULKAN_HPP_NOEXCEPT
34934     {
34935       return *reinterpret_cast<VkPhysicalDeviceSamplerYcbcrConversionFeatures*>( this );
34936     }
34937 
34938 #if defined( VULKAN_HPP_USE_REFLECT )
34939 #if 14 <= VULKAN_HPP_CPP_VERSION
34940     auto
34941 #else
34942     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
34943 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34944       reflect() const VULKAN_HPP_NOEXCEPT
34945     {
34946       return std::tie( sType, pNext, samplerYcbcrConversion );
34947     }
34948 #endif
34949 
34950 
34951 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
34952 auto operator<=>( PhysicalDeviceSamplerYcbcrConversionFeatures const & ) const = default;
34953 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34954     bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
34955     {
34956 #if defined( VULKAN_HPP_USE_REFLECT )
34957       return this->reflect() == rhs.reflect();
34958 #else
34959       return ( sType == rhs.sType )
34960           && ( pNext == rhs.pNext )
34961           && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
34962 #endif
34963     }
34964 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures34965     bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
34966     {
34967       return !operator==( rhs );
34968     }
34969 #endif
34970 
34971     public:
34972     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures;
34973     void * pNext = {};
34974     VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion = {};
34975 
34976   };
34977 
34978   template <>
34979   struct CppType<StructureType, StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures>
34980   {
34981     using Type = PhysicalDeviceSamplerYcbcrConversionFeatures;
34982   };
34983   using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures;
34984 
34985   struct PhysicalDeviceScalarBlockLayoutFeatures
34986   {
34987     using NativeType = VkPhysicalDeviceScalarBlockLayoutFeatures;
34988 
34989     static const bool allowDuplicate = false;
34990     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
34991 
34992 
34993 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceScalarBlockLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures34994 VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures(VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
34995     : pNext( pNext_ ), scalarBlockLayout( scalarBlockLayout_ )
34996     {}
34997 
34998     VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
34999 
PhysicalDeviceScalarBlockLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35000     PhysicalDeviceScalarBlockLayoutFeatures( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
35001       : PhysicalDeviceScalarBlockLayoutFeatures( *reinterpret_cast<PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs ) )
35002     {}
35003 
35004 
35005     PhysicalDeviceScalarBlockLayoutFeatures & operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35006 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35007 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35008     PhysicalDeviceScalarBlockLayoutFeatures & operator=( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
35009     {
35010       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures const *>( &rhs );
35011       return *this;
35012     }
35013 
35014 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35015     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35016     {
35017       pNext = pNext_;
35018       return *this;
35019     }
35020 
setScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35021     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
35022     {
35023       scalarBlockLayout = scalarBlockLayout_;
35024       return *this;
35025     }
35026 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35027 
35028 
operator VkPhysicalDeviceScalarBlockLayoutFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35029     operator VkPhysicalDeviceScalarBlockLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT
35030     {
35031       return *reinterpret_cast<const VkPhysicalDeviceScalarBlockLayoutFeatures*>( this );
35032     }
35033 
operator VkPhysicalDeviceScalarBlockLayoutFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35034     operator VkPhysicalDeviceScalarBlockLayoutFeatures &() VULKAN_HPP_NOEXCEPT
35035     {
35036       return *reinterpret_cast<VkPhysicalDeviceScalarBlockLayoutFeatures*>( this );
35037     }
35038 
35039 #if defined( VULKAN_HPP_USE_REFLECT )
35040 #if 14 <= VULKAN_HPP_CPP_VERSION
35041     auto
35042 #else
35043     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35044 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35045       reflect() const VULKAN_HPP_NOEXCEPT
35046     {
35047       return std::tie( sType, pNext, scalarBlockLayout );
35048     }
35049 #endif
35050 
35051 
35052 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35053 auto operator<=>( PhysicalDeviceScalarBlockLayoutFeatures const & ) const = default;
35054 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35055     bool operator==( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
35056     {
35057 #if defined( VULKAN_HPP_USE_REFLECT )
35058       return this->reflect() == rhs.reflect();
35059 #else
35060       return ( sType == rhs.sType )
35061           && ( pNext == rhs.pNext )
35062           && ( scalarBlockLayout == rhs.scalarBlockLayout );
35063 #endif
35064     }
35065 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures35066     bool operator!=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
35067     {
35068       return !operator==( rhs );
35069     }
35070 #endif
35071 
35072     public:
35073     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures;
35074     void * pNext = {};
35075     VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout = {};
35076 
35077   };
35078 
35079   template <>
35080   struct CppType<StructureType, StructureType::ePhysicalDeviceScalarBlockLayoutFeatures>
35081   {
35082     using Type = PhysicalDeviceScalarBlockLayoutFeatures;
35083   };
35084   using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures;
35085 
35086   struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures
35087   {
35088     using NativeType = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
35089 
35090     static const bool allowDuplicate = false;
35091     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
35092 
35093 
35094 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSeparateDepthStencilLayoutsFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35095 VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures(VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
35096     : pNext( pNext_ ), separateDepthStencilLayouts( separateDepthStencilLayouts_ )
35097     {}
35098 
35099     VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35100 
PhysicalDeviceSeparateDepthStencilLayoutsFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35101     PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
35102       : PhysicalDeviceSeparateDepthStencilLayoutsFeatures( *reinterpret_cast<PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs ) )
35103     {}
35104 
35105 
35106     PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35107 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35108 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35109     PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
35110     {
35111       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures const *>( &rhs );
35112       return *this;
35113     }
35114 
35115 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35116     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35117     {
35118       pNext = pNext_;
35119       return *this;
35120     }
35121 
setSeparateDepthStencilLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35122     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT
35123     {
35124       separateDepthStencilLayouts = separateDepthStencilLayouts_;
35125       return *this;
35126     }
35127 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35128 
35129 
operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35130     operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &() const VULKAN_HPP_NOEXCEPT
35131     {
35132       return *reinterpret_cast<const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>( this );
35133     }
35134 
operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35135     operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &() VULKAN_HPP_NOEXCEPT
35136     {
35137       return *reinterpret_cast<VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*>( 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 &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35145 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35146       reflect() const VULKAN_HPP_NOEXCEPT
35147     {
35148       return std::tie( sType, pNext, separateDepthStencilLayouts );
35149     }
35150 #endif
35151 
35152 
35153 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35154 auto operator<=>( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & ) const = default;
35155 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35156     bool operator==( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
35157     {
35158 #if defined( VULKAN_HPP_USE_REFLECT )
35159       return this->reflect() == rhs.reflect();
35160 #else
35161       return ( sType == rhs.sType )
35162           && ( pNext == rhs.pNext )
35163           && ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts );
35164 #endif
35165     }
35166 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures35167     bool operator!=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
35168     {
35169       return !operator==( rhs );
35170     }
35171 #endif
35172 
35173     public:
35174     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures;
35175     void * pNext = {};
35176     VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts = {};
35177 
35178   };
35179 
35180   template <>
35181   struct CppType<StructureType, StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures>
35182   {
35183     using Type = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
35184   };
35185   using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures;
35186 
35187   struct PhysicalDeviceShaderAtomicFloatFeaturesEXT
35188   {
35189     using NativeType = VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
35190 
35191     static const bool allowDuplicate = false;
35192     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
35193 
35194 
35195 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicFloatFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35196 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
35197     : pNext( pNext_ ), shaderBufferFloat32Atomics( shaderBufferFloat32Atomics_ ), shaderBufferFloat32AtomicAdd( shaderBufferFloat32AtomicAdd_ ), shaderBufferFloat64Atomics( shaderBufferFloat64Atomics_ ), shaderBufferFloat64AtomicAdd( shaderBufferFloat64AtomicAdd_ ), shaderSharedFloat32Atomics( shaderSharedFloat32Atomics_ ), shaderSharedFloat32AtomicAdd( shaderSharedFloat32AtomicAdd_ ), shaderSharedFloat64Atomics( shaderSharedFloat64Atomics_ ), shaderSharedFloat64AtomicAdd( shaderSharedFloat64AtomicAdd_ ), shaderImageFloat32Atomics( shaderImageFloat32Atomics_ ), shaderImageFloat32AtomicAdd( shaderImageFloat32AtomicAdd_ ), sparseImageFloat32Atomics( sparseImageFloat32Atomics_ ), sparseImageFloat32AtomicAdd( sparseImageFloat32AtomicAdd_ )
35198     {}
35199 
35200     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35201 
PhysicalDeviceShaderAtomicFloatFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35202     PhysicalDeviceShaderAtomicFloatFeaturesEXT( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35203       : PhysicalDeviceShaderAtomicFloatFeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs ) )
35204     {}
35205 
35206 
35207     PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35208 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35209 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35210     PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35211     {
35212       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT const *>( &rhs );
35213       return *this;
35214     }
35215 
35216 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35217     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35218     {
35219       pNext = pNext_;
35220       return *this;
35221     }
35222 
setShaderBufferFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35223     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
35224     {
35225       shaderBufferFloat32Atomics = shaderBufferFloat32Atomics_;
35226       return *this;
35227     }
35228 
setShaderBufferFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35229     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
35230     {
35231       shaderBufferFloat32AtomicAdd = shaderBufferFloat32AtomicAdd_;
35232       return *this;
35233     }
35234 
setShaderBufferFloat64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35235     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT
35236     {
35237       shaderBufferFloat64Atomics = shaderBufferFloat64Atomics_;
35238       return *this;
35239     }
35240 
setShaderBufferFloat64AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35241     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
35242     {
35243       shaderBufferFloat64AtomicAdd = shaderBufferFloat64AtomicAdd_;
35244       return *this;
35245     }
35246 
setShaderSharedFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35247     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
35248     {
35249       shaderSharedFloat32Atomics = shaderSharedFloat32Atomics_;
35250       return *this;
35251     }
35252 
setShaderSharedFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35253     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
35254     {
35255       shaderSharedFloat32AtomicAdd = shaderSharedFloat32AtomicAdd_;
35256       return *this;
35257     }
35258 
setShaderSharedFloat64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35259     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT
35260     {
35261       shaderSharedFloat64Atomics = shaderSharedFloat64Atomics_;
35262       return *this;
35263     }
35264 
setShaderSharedFloat64AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35265     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
35266     {
35267       shaderSharedFloat64AtomicAdd = shaderSharedFloat64AtomicAdd_;
35268       return *this;
35269     }
35270 
setShaderImageFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35271     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
35272     {
35273       shaderImageFloat32Atomics = shaderImageFloat32Atomics_;
35274       return *this;
35275     }
35276 
setShaderImageFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35277     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
35278     {
35279       shaderImageFloat32AtomicAdd = shaderImageFloat32AtomicAdd_;
35280       return *this;
35281     }
35282 
setSparseImageFloat32AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35283     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setSparseImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT
35284     {
35285       sparseImageFloat32Atomics = sparseImageFloat32Atomics_;
35286       return *this;
35287     }
35288 
setSparseImageFloat32AtomicAddVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35289     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setSparseImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT
35290     {
35291       sparseImageFloat32AtomicAdd = sparseImageFloat32AtomicAdd_;
35292       return *this;
35293     }
35294 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35295 
35296 
operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35297     operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
35298     {
35299       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>( this );
35300     }
35301 
operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35302     operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &() VULKAN_HPP_NOEXCEPT
35303     {
35304       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*>( this );
35305     }
35306 
35307 #if defined( VULKAN_HPP_USE_REFLECT )
35308 #if 14 <= VULKAN_HPP_CPP_VERSION
35309     auto
35310 #else
35311     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35312 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35313       reflect() const VULKAN_HPP_NOEXCEPT
35314     {
35315       return std::tie( sType, pNext, shaderBufferFloat32Atomics, shaderBufferFloat32AtomicAdd, shaderBufferFloat64Atomics, shaderBufferFloat64AtomicAdd, shaderSharedFloat32Atomics, shaderSharedFloat32AtomicAdd, shaderSharedFloat64Atomics, shaderSharedFloat64AtomicAdd, shaderImageFloat32Atomics, shaderImageFloat32AtomicAdd, sparseImageFloat32Atomics, sparseImageFloat32AtomicAdd );
35316     }
35317 #endif
35318 
35319 
35320 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35321 auto operator<=>( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & ) const = default;
35322 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35323     bool operator==( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35324     {
35325 #if defined( VULKAN_HPP_USE_REFLECT )
35326       return this->reflect() == rhs.reflect();
35327 #else
35328       return ( sType == rhs.sType )
35329           && ( pNext == rhs.pNext )
35330           && ( shaderBufferFloat32Atomics == rhs.shaderBufferFloat32Atomics )
35331           && ( shaderBufferFloat32AtomicAdd == rhs.shaderBufferFloat32AtomicAdd )
35332           && ( shaderBufferFloat64Atomics == rhs.shaderBufferFloat64Atomics )
35333           && ( shaderBufferFloat64AtomicAdd == rhs.shaderBufferFloat64AtomicAdd )
35334           && ( shaderSharedFloat32Atomics == rhs.shaderSharedFloat32Atomics )
35335           && ( shaderSharedFloat32AtomicAdd == rhs.shaderSharedFloat32AtomicAdd )
35336           && ( shaderSharedFloat64Atomics == rhs.shaderSharedFloat64Atomics )
35337           && ( shaderSharedFloat64AtomicAdd == rhs.shaderSharedFloat64AtomicAdd )
35338           && ( shaderImageFloat32Atomics == rhs.shaderImageFloat32Atomics )
35339           && ( shaderImageFloat32AtomicAdd == rhs.shaderImageFloat32AtomicAdd )
35340           && ( sparseImageFloat32Atomics == rhs.sparseImageFloat32Atomics )
35341           && ( sparseImageFloat32AtomicAdd == rhs.sparseImageFloat32AtomicAdd );
35342 #endif
35343     }
35344 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT35345     bool operator!=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35346     {
35347       return !operator==( rhs );
35348     }
35349 #endif
35350 
35351     public:
35352     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT;
35353     void * pNext = {};
35354     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics = {};
35355     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd = {};
35356     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics = {};
35357     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd = {};
35358     VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics = {};
35359     VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd = {};
35360     VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics = {};
35361     VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd = {};
35362     VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics = {};
35363     VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd = {};
35364     VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics = {};
35365     VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd = {};
35366 
35367   };
35368 
35369   template <>
35370   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT>
35371   {
35372     using Type = PhysicalDeviceShaderAtomicFloatFeaturesEXT;
35373   };
35374 
35375   struct PhysicalDeviceShaderAtomicInt64Features
35376   {
35377     using NativeType = VkPhysicalDeviceShaderAtomicInt64Features;
35378 
35379     static const bool allowDuplicate = false;
35380     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
35381 
35382 
35383 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderAtomicInt64FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35384 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features(VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
35385     : pNext( pNext_ ), shaderBufferInt64Atomics( shaderBufferInt64Atomics_ ), shaderSharedInt64Atomics( shaderSharedInt64Atomics_ )
35386     {}
35387 
35388     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35389 
PhysicalDeviceShaderAtomicInt64FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35390     PhysicalDeviceShaderAtomicInt64Features( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
35391       : PhysicalDeviceShaderAtomicInt64Features( *reinterpret_cast<PhysicalDeviceShaderAtomicInt64Features const *>( &rhs ) )
35392     {}
35393 
35394 
35395     PhysicalDeviceShaderAtomicInt64Features & operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35396 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35397 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35398     PhysicalDeviceShaderAtomicInt64Features & operator=( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT
35399     {
35400       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features const *>( &rhs );
35401       return *this;
35402     }
35403 
35404 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35405     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35406     {
35407       pNext = pNext_;
35408       return *this;
35409     }
35410 
setShaderBufferInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35411     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
35412     {
35413       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
35414       return *this;
35415     }
35416 
setShaderSharedInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35417     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
35418     {
35419       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
35420       return *this;
35421     }
35422 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35423 
35424 
operator VkPhysicalDeviceShaderAtomicInt64Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35425     operator VkPhysicalDeviceShaderAtomicInt64Features const &() const VULKAN_HPP_NOEXCEPT
35426     {
35427       return *reinterpret_cast<const VkPhysicalDeviceShaderAtomicInt64Features*>( this );
35428     }
35429 
operator VkPhysicalDeviceShaderAtomicInt64Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35430     operator VkPhysicalDeviceShaderAtomicInt64Features &() VULKAN_HPP_NOEXCEPT
35431     {
35432       return *reinterpret_cast<VkPhysicalDeviceShaderAtomicInt64Features*>( this );
35433     }
35434 
35435 #if defined( VULKAN_HPP_USE_REFLECT )
35436 #if 14 <= VULKAN_HPP_CPP_VERSION
35437     auto
35438 #else
35439     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35440 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35441       reflect() const VULKAN_HPP_NOEXCEPT
35442     {
35443       return std::tie( sType, pNext, shaderBufferInt64Atomics, shaderSharedInt64Atomics );
35444     }
35445 #endif
35446 
35447 
35448 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35449 auto operator<=>( PhysicalDeviceShaderAtomicInt64Features const & ) const = default;
35450 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35451     bool operator==( PhysicalDeviceShaderAtomicInt64Features 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 )
35457           && ( pNext == rhs.pNext )
35458           && ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics )
35459           && ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics );
35460 #endif
35461     }
35462 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features35463     bool operator!=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT
35464     {
35465       return !operator==( rhs );
35466     }
35467 #endif
35468 
35469     public:
35470     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64Features;
35471     void * pNext = {};
35472     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics = {};
35473     VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics = {};
35474 
35475   };
35476 
35477   template <>
35478   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderAtomicInt64Features>
35479   {
35480     using Type = PhysicalDeviceShaderAtomicInt64Features;
35481   };
35482   using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features;
35483 
35484   struct PhysicalDeviceShaderClockFeaturesKHR
35485   {
35486     using NativeType = VkPhysicalDeviceShaderClockFeaturesKHR;
35487 
35488     static const bool allowDuplicate = false;
35489     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
35490 
35491 
35492 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderClockFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35493 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
35494     : pNext( pNext_ ), shaderSubgroupClock( shaderSubgroupClock_ ), shaderDeviceClock( shaderDeviceClock_ )
35495     {}
35496 
35497     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35498 
PhysicalDeviceShaderClockFeaturesKHRVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35499     PhysicalDeviceShaderClockFeaturesKHR( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
35500       : PhysicalDeviceShaderClockFeaturesKHR( *reinterpret_cast<PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs ) )
35501     {}
35502 
35503 
35504     PhysicalDeviceShaderClockFeaturesKHR & operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35505 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35506 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35507     PhysicalDeviceShaderClockFeaturesKHR & operator=( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
35508     {
35509       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR const *>( &rhs );
35510       return *this;
35511     }
35512 
35513 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35514     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35515     {
35516       pNext = pNext_;
35517       return *this;
35518     }
35519 
setShaderSubgroupClockVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35520     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setShaderSubgroupClock( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ ) VULKAN_HPP_NOEXCEPT
35521     {
35522       shaderSubgroupClock = shaderSubgroupClock_;
35523       return *this;
35524     }
35525 
setShaderDeviceClockVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35526     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setShaderDeviceClock( VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ ) VULKAN_HPP_NOEXCEPT
35527     {
35528       shaderDeviceClock = shaderDeviceClock_;
35529       return *this;
35530     }
35531 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35532 
35533 
operator VkPhysicalDeviceShaderClockFeaturesKHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35534     operator VkPhysicalDeviceShaderClockFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT
35535     {
35536       return *reinterpret_cast<const VkPhysicalDeviceShaderClockFeaturesKHR*>( this );
35537     }
35538 
operator VkPhysicalDeviceShaderClockFeaturesKHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35539     operator VkPhysicalDeviceShaderClockFeaturesKHR &() VULKAN_HPP_NOEXCEPT
35540     {
35541       return *reinterpret_cast<VkPhysicalDeviceShaderClockFeaturesKHR*>( this );
35542     }
35543 
35544 #if defined( VULKAN_HPP_USE_REFLECT )
35545 #if 14 <= VULKAN_HPP_CPP_VERSION
35546     auto
35547 #else
35548     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35549 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35550       reflect() const VULKAN_HPP_NOEXCEPT
35551     {
35552       return std::tie( sType, pNext, shaderSubgroupClock, shaderDeviceClock );
35553     }
35554 #endif
35555 
35556 
35557 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35558 auto operator<=>( PhysicalDeviceShaderClockFeaturesKHR const & ) const = default;
35559 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35560     bool operator==( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
35561     {
35562 #if defined( VULKAN_HPP_USE_REFLECT )
35563       return this->reflect() == rhs.reflect();
35564 #else
35565       return ( sType == rhs.sType )
35566           && ( pNext == rhs.pNext )
35567           && ( shaderSubgroupClock == rhs.shaderSubgroupClock )
35568           && ( shaderDeviceClock == rhs.shaderDeviceClock );
35569 #endif
35570     }
35571 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR35572     bool operator!=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
35573     {
35574       return !operator==( rhs );
35575     }
35576 #endif
35577 
35578     public:
35579     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR;
35580     void * pNext = {};
35581     VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock = {};
35582     VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock = {};
35583 
35584   };
35585 
35586   template <>
35587   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderClockFeaturesKHR>
35588   {
35589     using Type = PhysicalDeviceShaderClockFeaturesKHR;
35590   };
35591 
35592   struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures
35593   {
35594     using NativeType = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;
35595 
35596     static const bool allowDuplicate = false;
35597     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures;
35598 
35599 
35600 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderDemoteToHelperInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35601 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
35602     : pNext( pNext_ ), shaderDemoteToHelperInvocation( shaderDemoteToHelperInvocation_ )
35603     {}
35604 
35605     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeatures( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35606 
PhysicalDeviceShaderDemoteToHelperInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35607     PhysicalDeviceShaderDemoteToHelperInvocationFeatures( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
35608       : PhysicalDeviceShaderDemoteToHelperInvocationFeatures( *reinterpret_cast<PhysicalDeviceShaderDemoteToHelperInvocationFeatures const *>( &rhs ) )
35609     {}
35610 
35611 
35612     PhysicalDeviceShaderDemoteToHelperInvocationFeatures & operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35613 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35614 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35615     PhysicalDeviceShaderDemoteToHelperInvocationFeatures & operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
35616     {
35617       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures const *>( &rhs );
35618       return *this;
35619     }
35620 
35621 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35622     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35623     {
35624       pNext = pNext_;
35625       return *this;
35626     }
35627 
setShaderDemoteToHelperInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35628     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures & setShaderDemoteToHelperInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT
35629     {
35630       shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_;
35631       return *this;
35632     }
35633 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35634 
35635 
operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35636     operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT
35637     {
35638       return *reinterpret_cast<const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures*>( this );
35639     }
35640 
operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35641     operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures &() VULKAN_HPP_NOEXCEPT
35642     {
35643       return *reinterpret_cast<VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures*>( this );
35644     }
35645 
35646 #if defined( VULKAN_HPP_USE_REFLECT )
35647 #if 14 <= VULKAN_HPP_CPP_VERSION
35648     auto
35649 #else
35650     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35651 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35652       reflect() const VULKAN_HPP_NOEXCEPT
35653     {
35654       return std::tie( sType, pNext, shaderDemoteToHelperInvocation );
35655     }
35656 #endif
35657 
35658 
35659 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35660 auto operator<=>( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & ) const = default;
35661 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35662     bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
35663     {
35664 #if defined( VULKAN_HPP_USE_REFLECT )
35665       return this->reflect() == rhs.reflect();
35666 #else
35667       return ( sType == rhs.sType )
35668           && ( pNext == rhs.pNext )
35669           && ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation );
35670 #endif
35671     }
35672 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures35673     bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
35674     {
35675       return !operator==( rhs );
35676     }
35677 #endif
35678 
35679     public:
35680     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures;
35681     void * pNext = {};
35682     VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation = {};
35683 
35684   };
35685 
35686   template <>
35687   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures>
35688   {
35689     using Type = PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
35690   };
35691   using PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeatures;
35692 
35693   struct PhysicalDeviceShaderDrawParametersFeatures
35694   {
35695     using NativeType = VkPhysicalDeviceShaderDrawParametersFeatures;
35696 
35697     static const bool allowDuplicate = false;
35698     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
35699 
35700 
35701 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderDrawParametersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35702 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
35703     : pNext( pNext_ ), shaderDrawParameters( shaderDrawParameters_ )
35704     {}
35705 
35706     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35707 
PhysicalDeviceShaderDrawParametersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35708     PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
35709       : PhysicalDeviceShaderDrawParametersFeatures( *reinterpret_cast<PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs ) )
35710     {}
35711 
35712 
35713     PhysicalDeviceShaderDrawParametersFeatures & operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35714 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35715 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35716     PhysicalDeviceShaderDrawParametersFeatures & operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
35717     {
35718       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures const *>( &rhs );
35719       return *this;
35720     }
35721 
35722 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35723     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35724     {
35725       pNext = pNext_;
35726       return *this;
35727     }
35728 
setShaderDrawParametersVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35729     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT
35730     {
35731       shaderDrawParameters = shaderDrawParameters_;
35732       return *this;
35733     }
35734 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35735 
35736 
operator VkPhysicalDeviceShaderDrawParametersFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35737     operator VkPhysicalDeviceShaderDrawParametersFeatures const &() const VULKAN_HPP_NOEXCEPT
35738     {
35739       return *reinterpret_cast<const VkPhysicalDeviceShaderDrawParametersFeatures*>( this );
35740     }
35741 
operator VkPhysicalDeviceShaderDrawParametersFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35742     operator VkPhysicalDeviceShaderDrawParametersFeatures &() VULKAN_HPP_NOEXCEPT
35743     {
35744       return *reinterpret_cast<VkPhysicalDeviceShaderDrawParametersFeatures*>( this );
35745     }
35746 
35747 #if defined( VULKAN_HPP_USE_REFLECT )
35748 #if 14 <= VULKAN_HPP_CPP_VERSION
35749     auto
35750 #else
35751     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35752 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35753       reflect() const VULKAN_HPP_NOEXCEPT
35754     {
35755       return std::tie( sType, pNext, shaderDrawParameters );
35756     }
35757 #endif
35758 
35759 
35760 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35761 auto operator<=>( PhysicalDeviceShaderDrawParametersFeatures const & ) const = default;
35762 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35763     bool operator==( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
35764     {
35765 #if defined( VULKAN_HPP_USE_REFLECT )
35766       return this->reflect() == rhs.reflect();
35767 #else
35768       return ( sType == rhs.sType )
35769           && ( pNext == rhs.pNext )
35770           && ( shaderDrawParameters == rhs.shaderDrawParameters );
35771 #endif
35772     }
35773 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures35774     bool operator!=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
35775     {
35776       return !operator==( rhs );
35777     }
35778 #endif
35779 
35780     public:
35781     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures;
35782     void * pNext = {};
35783     VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters = {};
35784 
35785   };
35786 
35787   template <>
35788   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderDrawParametersFeatures>
35789   {
35790     using Type = PhysicalDeviceShaderDrawParametersFeatures;
35791   };
35792   using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures;
35793 
35794   struct PhysicalDeviceShaderFloat16Int8Features
35795   {
35796     using NativeType = VkPhysicalDeviceShaderFloat16Int8Features;
35797 
35798     static const bool allowDuplicate = false;
35799     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
35800 
35801 
35802 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderFloat16Int8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35803 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features(VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
35804     : pNext( pNext_ ), shaderFloat16( shaderFloat16_ ), shaderInt8( shaderInt8_ )
35805     {}
35806 
35807     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35808 
PhysicalDeviceShaderFloat16Int8FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35809     PhysicalDeviceShaderFloat16Int8Features( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
35810       : PhysicalDeviceShaderFloat16Int8Features( *reinterpret_cast<PhysicalDeviceShaderFloat16Int8Features const *>( &rhs ) )
35811     {}
35812 
35813 
35814     PhysicalDeviceShaderFloat16Int8Features & operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35815 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35816 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35817     PhysicalDeviceShaderFloat16Int8Features & operator=( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT
35818     {
35819       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features const *>( &rhs );
35820       return *this;
35821     }
35822 
35823 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35824     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35825     {
35826       pNext = pNext_;
35827       return *this;
35828     }
35829 
setShaderFloat16VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35830     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT
35831     {
35832       shaderFloat16 = shaderFloat16_;
35833       return *this;
35834     }
35835 
setShaderInt8VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35836     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT
35837     {
35838       shaderInt8 = shaderInt8_;
35839       return *this;
35840     }
35841 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35842 
35843 
operator VkPhysicalDeviceShaderFloat16Int8Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35844     operator VkPhysicalDeviceShaderFloat16Int8Features const &() const VULKAN_HPP_NOEXCEPT
35845     {
35846       return *reinterpret_cast<const VkPhysicalDeviceShaderFloat16Int8Features*>( this );
35847     }
35848 
operator VkPhysicalDeviceShaderFloat16Int8Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35849     operator VkPhysicalDeviceShaderFloat16Int8Features &() VULKAN_HPP_NOEXCEPT
35850     {
35851       return *reinterpret_cast<VkPhysicalDeviceShaderFloat16Int8Features*>( this );
35852     }
35853 
35854 #if defined( VULKAN_HPP_USE_REFLECT )
35855 #if 14 <= VULKAN_HPP_CPP_VERSION
35856     auto
35857 #else
35858     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35859 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35860       reflect() const VULKAN_HPP_NOEXCEPT
35861     {
35862       return std::tie( sType, pNext, shaderFloat16, shaderInt8 );
35863     }
35864 #endif
35865 
35866 
35867 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35868 auto operator<=>( PhysicalDeviceShaderFloat16Int8Features const & ) const = default;
35869 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35870     bool operator==( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
35871     {
35872 #if defined( VULKAN_HPP_USE_REFLECT )
35873       return this->reflect() == rhs.reflect();
35874 #else
35875       return ( sType == rhs.sType )
35876           && ( pNext == rhs.pNext )
35877           && ( shaderFloat16 == rhs.shaderFloat16 )
35878           && ( shaderInt8 == rhs.shaderInt8 );
35879 #endif
35880     }
35881 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features35882     bool operator!=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT
35883     {
35884       return !operator==( rhs );
35885     }
35886 #endif
35887 
35888     public:
35889     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderFloat16Int8Features;
35890     void * pNext = {};
35891     VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16 = {};
35892     VULKAN_HPP_NAMESPACE::Bool32 shaderInt8 = {};
35893 
35894   };
35895 
35896   template <>
35897   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderFloat16Int8Features>
35898   {
35899     using Type = PhysicalDeviceShaderFloat16Int8Features;
35900   };
35901   using PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
35902   using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features;
35903 
35904   struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT
35905   {
35906     using NativeType = VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
35907 
35908     static const bool allowDuplicate = false;
35909     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
35910 
35911 
35912 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderImageAtomicInt64FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35913 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
35914     : pNext( pNext_ ), shaderImageInt64Atomics( shaderImageInt64Atomics_ ), sparseImageInt64Atomics( sparseImageInt64Atomics_ )
35915     {}
35916 
35917     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35918 
PhysicalDeviceShaderImageAtomicInt64FeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35919     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35920       : PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( *reinterpret_cast<PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs ) )
35921     {}
35922 
35923 
35924     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
35925 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
35926 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35927     PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
35928     {
35929       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *>( &rhs );
35930       return *this;
35931     }
35932 
35933 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35934     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
35935     {
35936       pNext = pNext_;
35937       return *this;
35938     }
35939 
setShaderImageInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35940     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setShaderImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
35941     {
35942       shaderImageInt64Atomics = shaderImageInt64Atomics_;
35943       return *this;
35944     }
35945 
setSparseImageInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35946     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setSparseImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
35947     {
35948       sparseImageInt64Atomics = sparseImageInt64Atomics_;
35949       return *this;
35950     }
35951 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
35952 
35953 
operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35954     operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
35955     {
35956       return *reinterpret_cast<const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>( this );
35957     }
35958 
operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35959     operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &() VULKAN_HPP_NOEXCEPT
35960     {
35961       return *reinterpret_cast<VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*>( this );
35962     }
35963 
35964 #if defined( VULKAN_HPP_USE_REFLECT )
35965 #if 14 <= VULKAN_HPP_CPP_VERSION
35966     auto
35967 #else
35968     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
35969 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35970       reflect() const VULKAN_HPP_NOEXCEPT
35971     {
35972       return std::tie( sType, pNext, shaderImageInt64Atomics, sparseImageInt64Atomics );
35973     }
35974 #endif
35975 
35976 
35977 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
35978 auto operator<=>( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & ) const = default;
35979 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35980     bool operator==( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35981     {
35982 #if defined( VULKAN_HPP_USE_REFLECT )
35983       return this->reflect() == rhs.reflect();
35984 #else
35985       return ( sType == rhs.sType )
35986           && ( pNext == rhs.pNext )
35987           && ( shaderImageInt64Atomics == rhs.shaderImageInt64Atomics )
35988           && ( sparseImageInt64Atomics == rhs.sparseImageInt64Atomics );
35989 #endif
35990     }
35991 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT35992     bool operator!=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
35993     {
35994       return !operator==( rhs );
35995     }
35996 #endif
35997 
35998     public:
35999     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
36000     void * pNext = {};
36001     VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics = {};
36002     VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics = {};
36003 
36004   };
36005 
36006   template <>
36007   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT>
36008   {
36009     using Type = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
36010   };
36011 
36012   struct PhysicalDeviceShaderIntegerDotProductFeatures
36013   {
36014     using NativeType = VkPhysicalDeviceShaderIntegerDotProductFeatures;
36015 
36016     static const bool allowDuplicate = false;
36017     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures;
36018 
36019 
36020 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerDotProductFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36021 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36022     : pNext( pNext_ ), shaderIntegerDotProduct( shaderIntegerDotProduct_ )
36023     {}
36024 
36025     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeatures( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36026 
PhysicalDeviceShaderIntegerDotProductFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36027     PhysicalDeviceShaderIntegerDotProductFeatures( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
36028       : PhysicalDeviceShaderIntegerDotProductFeatures( *reinterpret_cast<PhysicalDeviceShaderIntegerDotProductFeatures const *>( &rhs ) )
36029     {}
36030 
36031 
36032     PhysicalDeviceShaderIntegerDotProductFeatures & operator=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36033 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36034 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36035     PhysicalDeviceShaderIntegerDotProductFeatures & operator=( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
36036     {
36037       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures const *>( &rhs );
36038       return *this;
36039     }
36040 
36041 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36042     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36043     {
36044       pNext = pNext_;
36045       return *this;
36046     }
36047 
setShaderIntegerDotProductVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36048     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures & setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT
36049     {
36050       shaderIntegerDotProduct = shaderIntegerDotProduct_;
36051       return *this;
36052     }
36053 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36054 
36055 
operator VkPhysicalDeviceShaderIntegerDotProductFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36056     operator VkPhysicalDeviceShaderIntegerDotProductFeatures const &() const VULKAN_HPP_NOEXCEPT
36057     {
36058       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductFeatures*>( this );
36059     }
36060 
operator VkPhysicalDeviceShaderIntegerDotProductFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36061     operator VkPhysicalDeviceShaderIntegerDotProductFeatures &() VULKAN_HPP_NOEXCEPT
36062     {
36063       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductFeatures*>( this );
36064     }
36065 
36066 #if defined( VULKAN_HPP_USE_REFLECT )
36067 #if 14 <= VULKAN_HPP_CPP_VERSION
36068     auto
36069 #else
36070     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36071 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36072       reflect() const VULKAN_HPP_NOEXCEPT
36073     {
36074       return std::tie( sType, pNext, shaderIntegerDotProduct );
36075     }
36076 #endif
36077 
36078 
36079 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36080 auto operator<=>( PhysicalDeviceShaderIntegerDotProductFeatures const & ) const = default;
36081 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36082     bool operator==( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
36083     {
36084 #if defined( VULKAN_HPP_USE_REFLECT )
36085       return this->reflect() == rhs.reflect();
36086 #else
36087       return ( sType == rhs.sType )
36088           && ( pNext == rhs.pNext )
36089           && ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct );
36090 #endif
36091     }
36092 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures36093     bool operator!=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
36094     {
36095       return !operator==( rhs );
36096     }
36097 #endif
36098 
36099     public:
36100     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures;
36101     void * pNext = {};
36102     VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct = {};
36103 
36104   };
36105 
36106   template <>
36107   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures>
36108   {
36109     using Type = PhysicalDeviceShaderIntegerDotProductFeatures;
36110   };
36111   using PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeatures;
36112 
36113   struct PhysicalDeviceShaderIntegerDotProductProperties
36114   {
36115     using NativeType = VkPhysicalDeviceShaderIntegerDotProductProperties;
36116 
36117     static const bool allowDuplicate = false;
36118     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties;
36119 
36120 
36121 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderIntegerDotProductPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties36122 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductProperties(VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36123     : pNext( pNext_ ), integerDotProduct8BitUnsignedAccelerated( integerDotProduct8BitUnsignedAccelerated_ ), integerDotProduct8BitSignedAccelerated( integerDotProduct8BitSignedAccelerated_ ), integerDotProduct8BitMixedSignednessAccelerated( integerDotProduct8BitMixedSignednessAccelerated_ ), integerDotProduct4x8BitPackedUnsignedAccelerated( integerDotProduct4x8BitPackedUnsignedAccelerated_ ), integerDotProduct4x8BitPackedSignedAccelerated( integerDotProduct4x8BitPackedSignedAccelerated_ ), integerDotProduct4x8BitPackedMixedSignednessAccelerated( integerDotProduct4x8BitPackedMixedSignednessAccelerated_ ), integerDotProduct16BitUnsignedAccelerated( integerDotProduct16BitUnsignedAccelerated_ ), integerDotProduct16BitSignedAccelerated( integerDotProduct16BitSignedAccelerated_ ), integerDotProduct16BitMixedSignednessAccelerated( integerDotProduct16BitMixedSignednessAccelerated_ ), integerDotProduct32BitUnsignedAccelerated( integerDotProduct32BitUnsignedAccelerated_ ), integerDotProduct32BitSignedAccelerated( integerDotProduct32BitSignedAccelerated_ ), integerDotProduct32BitMixedSignednessAccelerated( integerDotProduct32BitMixedSignednessAccelerated_ ), integerDotProduct64BitUnsignedAccelerated( integerDotProduct64BitUnsignedAccelerated_ ), integerDotProduct64BitSignedAccelerated( integerDotProduct64BitSignedAccelerated_ ), integerDotProduct64BitMixedSignednessAccelerated( integerDotProduct64BitMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating8BitUnsignedAccelerated( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating8BitSignedAccelerated( integerDotProductAccumulatingSaturating8BitSignedAccelerated_ ), integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ ), integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating16BitUnsignedAccelerated( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating16BitSignedAccelerated( integerDotProductAccumulatingSaturating16BitSignedAccelerated_ ), integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating32BitUnsignedAccelerated( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating32BitSignedAccelerated( integerDotProductAccumulatingSaturating32BitSignedAccelerated_ ), integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating64BitUnsignedAccelerated( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating64BitSignedAccelerated( integerDotProductAccumulatingSaturating64BitSignedAccelerated_ ), integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ )
36124     {}
36125 
36126     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductProperties( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36127 
PhysicalDeviceShaderIntegerDotProductPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties36128     PhysicalDeviceShaderIntegerDotProductProperties( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36129       : PhysicalDeviceShaderIntegerDotProductProperties( *reinterpret_cast<PhysicalDeviceShaderIntegerDotProductProperties const *>( &rhs ) )
36130     {}
36131 
36132 
36133     PhysicalDeviceShaderIntegerDotProductProperties & operator=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36134 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36135 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties36136     PhysicalDeviceShaderIntegerDotProductProperties & operator=( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36137     {
36138       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties const *>( &rhs );
36139       return *this;
36140     }
36141 
36142 
operator VkPhysicalDeviceShaderIntegerDotProductProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties36143     operator VkPhysicalDeviceShaderIntegerDotProductProperties const &() const VULKAN_HPP_NOEXCEPT
36144     {
36145       return *reinterpret_cast<const VkPhysicalDeviceShaderIntegerDotProductProperties*>( this );
36146     }
36147 
operator VkPhysicalDeviceShaderIntegerDotProductProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties36148     operator VkPhysicalDeviceShaderIntegerDotProductProperties &() VULKAN_HPP_NOEXCEPT
36149     {
36150       return *reinterpret_cast<VkPhysicalDeviceShaderIntegerDotProductProperties*>( this );
36151     }
36152 
36153 #if defined( VULKAN_HPP_USE_REFLECT )
36154 #if 14 <= VULKAN_HPP_CPP_VERSION
36155     auto
36156 #else
36157     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36158 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties36159       reflect() const VULKAN_HPP_NOEXCEPT
36160     {
36161       return std::tie( sType, pNext, integerDotProduct8BitUnsignedAccelerated, integerDotProduct8BitSignedAccelerated, integerDotProduct8BitMixedSignednessAccelerated, integerDotProduct4x8BitPackedUnsignedAccelerated, integerDotProduct4x8BitPackedSignedAccelerated, integerDotProduct4x8BitPackedMixedSignednessAccelerated, integerDotProduct16BitUnsignedAccelerated, integerDotProduct16BitSignedAccelerated, integerDotProduct16BitMixedSignednessAccelerated, integerDotProduct32BitUnsignedAccelerated, integerDotProduct32BitSignedAccelerated, integerDotProduct32BitMixedSignednessAccelerated, integerDotProduct64BitUnsignedAccelerated, integerDotProduct64BitSignedAccelerated, integerDotProduct64BitMixedSignednessAccelerated, integerDotProductAccumulatingSaturating8BitUnsignedAccelerated, integerDotProductAccumulatingSaturating8BitSignedAccelerated, integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated, integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated, integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated, integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated, integerDotProductAccumulatingSaturating16BitUnsignedAccelerated, integerDotProductAccumulatingSaturating16BitSignedAccelerated, integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated, integerDotProductAccumulatingSaturating32BitUnsignedAccelerated, integerDotProductAccumulatingSaturating32BitSignedAccelerated, integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated, integerDotProductAccumulatingSaturating64BitUnsignedAccelerated, integerDotProductAccumulatingSaturating64BitSignedAccelerated, integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
36162     }
36163 #endif
36164 
36165 
36166 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36167 auto operator<=>( PhysicalDeviceShaderIntegerDotProductProperties const & ) const = default;
36168 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties36169     bool operator==( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36170     {
36171 #if defined( VULKAN_HPP_USE_REFLECT )
36172       return this->reflect() == rhs.reflect();
36173 #else
36174       return ( sType == rhs.sType )
36175           && ( pNext == rhs.pNext )
36176           && ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated )
36177           && ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated )
36178           && ( integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated )
36179           && ( integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated )
36180           && ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated )
36181           && ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated )
36182           && ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated )
36183           && ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated )
36184           && ( integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated )
36185           && ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated )
36186           && ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated )
36187           && ( integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated )
36188           && ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated )
36189           && ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated )
36190           && ( integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated )
36191           && ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated )
36192           && ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated )
36193           && ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated )
36194           && ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated )
36195           && ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated )
36196           && ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated )
36197           && ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated )
36198           && ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated )
36199           && ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated )
36200           && ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated )
36201           && ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated )
36202           && ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated )
36203           && ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated )
36204           && ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated )
36205           && ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
36206 #endif
36207     }
36208 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties36209     bool operator!=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36210     {
36211       return !operator==( rhs );
36212     }
36213 #endif
36214 
36215     public:
36216     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties;
36217     void * pNext = {};
36218     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated = {};
36219     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated = {};
36220     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated = {};
36221     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated = {};
36222     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated = {};
36223     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated = {};
36224     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated = {};
36225     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated = {};
36226     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated = {};
36227     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated = {};
36228     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated = {};
36229     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated = {};
36230     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated = {};
36231     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated = {};
36232     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated = {};
36233     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = {};
36234     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated = {};
36235     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = {};
36236     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = {};
36237     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = {};
36238     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {};
36239     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = {};
36240     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated = {};
36241     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = {};
36242     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = {};
36243     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated = {};
36244     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = {};
36245     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = {};
36246     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated = {};
36247     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = {};
36248 
36249   };
36250 
36251   template <>
36252   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderIntegerDotProductProperties>
36253   {
36254     using Type = PhysicalDeviceShaderIntegerDotProductProperties;
36255   };
36256   using PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductProperties;
36257 
36258   struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures
36259   {
36260     using NativeType = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
36261 
36262     static const bool allowDuplicate = false;
36263     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
36264 
36265 
36266 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36267 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36268     : pNext( pNext_ ), shaderSubgroupExtendedTypes( shaderSubgroupExtendedTypes_ )
36269     {}
36270 
36271     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36272 
PhysicalDeviceShaderSubgroupExtendedTypesFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36273     PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
36274       : PhysicalDeviceShaderSubgroupExtendedTypesFeatures( *reinterpret_cast<PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs ) )
36275     {}
36276 
36277 
36278     PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36279 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36280 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36281     PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
36282     {
36283       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures const *>( &rhs );
36284       return *this;
36285     }
36286 
36287 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36288     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36289     {
36290       pNext = pNext_;
36291       return *this;
36292     }
36293 
setShaderSubgroupExtendedTypesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36294     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT
36295     {
36296       shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
36297       return *this;
36298     }
36299 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36300 
36301 
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36302     operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &() const VULKAN_HPP_NOEXCEPT
36303     {
36304       return *reinterpret_cast<const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>( this );
36305     }
36306 
operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36307     operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &() VULKAN_HPP_NOEXCEPT
36308     {
36309       return *reinterpret_cast<VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*>( this );
36310     }
36311 
36312 #if defined( VULKAN_HPP_USE_REFLECT )
36313 #if 14 <= VULKAN_HPP_CPP_VERSION
36314     auto
36315 #else
36316     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36317 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36318       reflect() const VULKAN_HPP_NOEXCEPT
36319     {
36320       return std::tie( sType, pNext, shaderSubgroupExtendedTypes );
36321     }
36322 #endif
36323 
36324 
36325 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36326 auto operator<=>( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & ) const = default;
36327 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36328     bool operator==( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
36329     {
36330 #if defined( VULKAN_HPP_USE_REFLECT )
36331       return this->reflect() == rhs.reflect();
36332 #else
36333       return ( sType == rhs.sType )
36334           && ( pNext == rhs.pNext )
36335           && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes );
36336 #endif
36337     }
36338 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures36339     bool operator!=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
36340     {
36341       return !operator==( rhs );
36342     }
36343 #endif
36344 
36345     public:
36346     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures;
36347     void * pNext = {};
36348     VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes = {};
36349 
36350   };
36351 
36352   template <>
36353   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures>
36354   {
36355     using Type = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
36356   };
36357   using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures;
36358 
36359   struct PhysicalDeviceShaderTerminateInvocationFeatures
36360   {
36361     using NativeType = VkPhysicalDeviceShaderTerminateInvocationFeatures;
36362 
36363     static const bool allowDuplicate = false;
36364     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures;
36365 
36366 
36367 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceShaderTerminateInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36368 VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36369     : pNext( pNext_ ), shaderTerminateInvocation( shaderTerminateInvocation_ )
36370     {}
36371 
36372     VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeatures( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36373 
PhysicalDeviceShaderTerminateInvocationFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36374     PhysicalDeviceShaderTerminateInvocationFeatures( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
36375       : PhysicalDeviceShaderTerminateInvocationFeatures( *reinterpret_cast<PhysicalDeviceShaderTerminateInvocationFeatures const *>( &rhs ) )
36376     {}
36377 
36378 
36379     PhysicalDeviceShaderTerminateInvocationFeatures & operator=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36380 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36381 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36382     PhysicalDeviceShaderTerminateInvocationFeatures & operator=( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
36383     {
36384       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures const *>( &rhs );
36385       return *this;
36386     }
36387 
36388 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36389     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36390     {
36391       pNext = pNext_;
36392       return *this;
36393     }
36394 
setShaderTerminateInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36395     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures & setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT
36396     {
36397       shaderTerminateInvocation = shaderTerminateInvocation_;
36398       return *this;
36399     }
36400 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36401 
36402 
operator VkPhysicalDeviceShaderTerminateInvocationFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36403     operator VkPhysicalDeviceShaderTerminateInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT
36404     {
36405       return *reinterpret_cast<const VkPhysicalDeviceShaderTerminateInvocationFeatures*>( this );
36406     }
36407 
operator VkPhysicalDeviceShaderTerminateInvocationFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36408     operator VkPhysicalDeviceShaderTerminateInvocationFeatures &() VULKAN_HPP_NOEXCEPT
36409     {
36410       return *reinterpret_cast<VkPhysicalDeviceShaderTerminateInvocationFeatures*>( this );
36411     }
36412 
36413 #if defined( VULKAN_HPP_USE_REFLECT )
36414 #if 14 <= VULKAN_HPP_CPP_VERSION
36415     auto
36416 #else
36417     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36418 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36419       reflect() const VULKAN_HPP_NOEXCEPT
36420     {
36421       return std::tie( sType, pNext, shaderTerminateInvocation );
36422     }
36423 #endif
36424 
36425 
36426 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36427 auto operator<=>( PhysicalDeviceShaderTerminateInvocationFeatures const & ) const = default;
36428 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36429     bool operator==( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
36430     {
36431 #if defined( VULKAN_HPP_USE_REFLECT )
36432       return this->reflect() == rhs.reflect();
36433 #else
36434       return ( sType == rhs.sType )
36435           && ( pNext == rhs.pNext )
36436           && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation );
36437 #endif
36438     }
36439 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures36440     bool operator!=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
36441     {
36442       return !operator==( rhs );
36443     }
36444 #endif
36445 
36446     public:
36447     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures;
36448     void * pNext = {};
36449     VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation = {};
36450 
36451   };
36452 
36453   template <>
36454   struct CppType<StructureType, StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures>
36455   {
36456     using Type = PhysicalDeviceShaderTerminateInvocationFeatures;
36457   };
36458   using PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeatures;
36459 
36460   struct PhysicalDeviceSubgroupProperties
36461   {
36462     using NativeType = VkPhysicalDeviceSubgroupProperties;
36463 
36464     static const bool allowDuplicate = false;
36465     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupProperties;
36466 
36467 
36468 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties36469 VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties(uint32_t subgroupSize_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedStages_ = {}, VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations_ = {}, VULKAN_HPP_NAMESPACE::Bool32 quadOperationsInAllStages_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36470     : pNext( pNext_ ), subgroupSize( subgroupSize_ ), supportedStages( supportedStages_ ), supportedOperations( supportedOperations_ ), quadOperationsInAllStages( quadOperationsInAllStages_ )
36471     {}
36472 
36473     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36474 
PhysicalDeviceSubgroupPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties36475     PhysicalDeviceSubgroupProperties( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36476       : PhysicalDeviceSubgroupProperties( *reinterpret_cast<PhysicalDeviceSubgroupProperties const *>( &rhs ) )
36477     {}
36478 
36479 
36480     PhysicalDeviceSubgroupProperties & operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36481 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36482 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties36483     PhysicalDeviceSubgroupProperties & operator=( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36484     {
36485       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties const *>( &rhs );
36486       return *this;
36487     }
36488 
36489 
operator VkPhysicalDeviceSubgroupProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties36490     operator VkPhysicalDeviceSubgroupProperties const &() const VULKAN_HPP_NOEXCEPT
36491     {
36492       return *reinterpret_cast<const VkPhysicalDeviceSubgroupProperties*>( this );
36493     }
36494 
operator VkPhysicalDeviceSubgroupProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties36495     operator VkPhysicalDeviceSubgroupProperties &() VULKAN_HPP_NOEXCEPT
36496     {
36497       return *reinterpret_cast<VkPhysicalDeviceSubgroupProperties*>( this );
36498     }
36499 
36500 #if defined( VULKAN_HPP_USE_REFLECT )
36501 #if 14 <= VULKAN_HPP_CPP_VERSION
36502     auto
36503 #else
36504     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36505 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties36506       reflect() const VULKAN_HPP_NOEXCEPT
36507     {
36508       return std::tie( sType, pNext, subgroupSize, supportedStages, supportedOperations, quadOperationsInAllStages );
36509     }
36510 #endif
36511 
36512 
36513 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36514 auto operator<=>( PhysicalDeviceSubgroupProperties const & ) const = default;
36515 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties36516     bool operator==( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36517     {
36518 #if defined( VULKAN_HPP_USE_REFLECT )
36519       return this->reflect() == rhs.reflect();
36520 #else
36521       return ( sType == rhs.sType )
36522           && ( pNext == rhs.pNext )
36523           && ( subgroupSize == rhs.subgroupSize )
36524           && ( supportedStages == rhs.supportedStages )
36525           && ( supportedOperations == rhs.supportedOperations )
36526           && ( quadOperationsInAllStages == rhs.quadOperationsInAllStages );
36527 #endif
36528     }
36529 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties36530     bool operator!=( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36531     {
36532       return !operator==( rhs );
36533     }
36534 #endif
36535 
36536     public:
36537     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties;
36538     void * pNext = {};
36539     uint32_t subgroupSize = {};
36540     VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedStages = {};
36541     VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations = {};
36542     VULKAN_HPP_NAMESPACE::Bool32 quadOperationsInAllStages = {};
36543 
36544   };
36545 
36546   template <>
36547   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupProperties>
36548   {
36549     using Type = PhysicalDeviceSubgroupProperties;
36550   };
36551 
36552   struct PhysicalDeviceSubgroupSizeControlFeatures
36553   {
36554     using NativeType = VkPhysicalDeviceSubgroupSizeControlFeatures;
36555 
36556     static const bool allowDuplicate = false;
36557     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures;
36558 
36559 
36560 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupSizeControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36561 VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures(VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ = {}, VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36562     : pNext( pNext_ ), subgroupSizeControl( subgroupSizeControl_ ), computeFullSubgroups( computeFullSubgroups_ )
36563     {}
36564 
36565     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36566 
PhysicalDeviceSubgroupSizeControlFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36567     PhysicalDeviceSubgroupSizeControlFeatures( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
36568       : PhysicalDeviceSubgroupSizeControlFeatures( *reinterpret_cast<PhysicalDeviceSubgroupSizeControlFeatures const *>( &rhs ) )
36569     {}
36570 
36571 
36572     PhysicalDeviceSubgroupSizeControlFeatures & operator=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36573 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36574 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36575     PhysicalDeviceSubgroupSizeControlFeatures & operator=( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
36576     {
36577       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures const *>( &rhs );
36578       return *this;
36579     }
36580 
36581 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36582     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36583     {
36584       pNext = pNext_;
36585       return *this;
36586     }
36587 
setSubgroupSizeControlVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36588     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT
36589     {
36590       subgroupSizeControl = subgroupSizeControl_;
36591       return *this;
36592     }
36593 
setComputeFullSubgroupsVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36594     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT
36595     {
36596       computeFullSubgroups = computeFullSubgroups_;
36597       return *this;
36598     }
36599 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36600 
36601 
operator VkPhysicalDeviceSubgroupSizeControlFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36602     operator VkPhysicalDeviceSubgroupSizeControlFeatures const &() const VULKAN_HPP_NOEXCEPT
36603     {
36604       return *reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlFeatures*>( this );
36605     }
36606 
operator VkPhysicalDeviceSubgroupSizeControlFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36607     operator VkPhysicalDeviceSubgroupSizeControlFeatures &() VULKAN_HPP_NOEXCEPT
36608     {
36609       return *reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlFeatures*>( this );
36610     }
36611 
36612 #if defined( VULKAN_HPP_USE_REFLECT )
36613 #if 14 <= VULKAN_HPP_CPP_VERSION
36614     auto
36615 #else
36616     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36617 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36618       reflect() const VULKAN_HPP_NOEXCEPT
36619     {
36620       return std::tie( sType, pNext, subgroupSizeControl, computeFullSubgroups );
36621     }
36622 #endif
36623 
36624 
36625 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36626 auto operator<=>( PhysicalDeviceSubgroupSizeControlFeatures const & ) const = default;
36627 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36628     bool operator==( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
36629     {
36630 #if defined( VULKAN_HPP_USE_REFLECT )
36631       return this->reflect() == rhs.reflect();
36632 #else
36633       return ( sType == rhs.sType )
36634           && ( pNext == rhs.pNext )
36635           && ( subgroupSizeControl == rhs.subgroupSizeControl )
36636           && ( computeFullSubgroups == rhs.computeFullSubgroups );
36637 #endif
36638     }
36639 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures36640     bool operator!=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
36641     {
36642       return !operator==( rhs );
36643     }
36644 #endif
36645 
36646     public:
36647     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures;
36648     void * pNext = {};
36649     VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl = {};
36650     VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups = {};
36651 
36652   };
36653 
36654   template <>
36655   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupSizeControlFeatures>
36656   {
36657     using Type = PhysicalDeviceSubgroupSizeControlFeatures;
36658   };
36659   using PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures;
36660 
36661   struct PhysicalDeviceSubgroupSizeControlProperties
36662   {
36663     using NativeType = VkPhysicalDeviceSubgroupSizeControlProperties;
36664 
36665     static const bool allowDuplicate = false;
36666     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupSizeControlProperties;
36667 
36668 
36669 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSubgroupSizeControlPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties36670 VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties(uint32_t minSubgroupSize_ = {}, uint32_t maxSubgroupSize_ = {}, uint32_t maxComputeWorkgroupSubgroups_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36671     : pNext( pNext_ ), minSubgroupSize( minSubgroupSize_ ), maxSubgroupSize( maxSubgroupSize_ ), maxComputeWorkgroupSubgroups( maxComputeWorkgroupSubgroups_ ), requiredSubgroupSizeStages( requiredSubgroupSizeStages_ )
36672     {}
36673 
36674     VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36675 
PhysicalDeviceSubgroupSizeControlPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties36676     PhysicalDeviceSubgroupSizeControlProperties( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36677       : PhysicalDeviceSubgroupSizeControlProperties( *reinterpret_cast<PhysicalDeviceSubgroupSizeControlProperties const *>( &rhs ) )
36678     {}
36679 
36680 
36681     PhysicalDeviceSubgroupSizeControlProperties & operator=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36682 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36683 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties36684     PhysicalDeviceSubgroupSizeControlProperties & operator=( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT
36685     {
36686       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties const *>( &rhs );
36687       return *this;
36688     }
36689 
36690 
operator VkPhysicalDeviceSubgroupSizeControlProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties36691     operator VkPhysicalDeviceSubgroupSizeControlProperties const &() const VULKAN_HPP_NOEXCEPT
36692     {
36693       return *reinterpret_cast<const VkPhysicalDeviceSubgroupSizeControlProperties*>( this );
36694     }
36695 
operator VkPhysicalDeviceSubgroupSizeControlProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties36696     operator VkPhysicalDeviceSubgroupSizeControlProperties &() VULKAN_HPP_NOEXCEPT
36697     {
36698       return *reinterpret_cast<VkPhysicalDeviceSubgroupSizeControlProperties*>( this );
36699     }
36700 
36701 #if defined( VULKAN_HPP_USE_REFLECT )
36702 #if 14 <= VULKAN_HPP_CPP_VERSION
36703     auto
36704 #else
36705     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &>
36706 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties36707       reflect() const VULKAN_HPP_NOEXCEPT
36708     {
36709       return std::tie( sType, pNext, minSubgroupSize, maxSubgroupSize, maxComputeWorkgroupSubgroups, requiredSubgroupSizeStages );
36710     }
36711 #endif
36712 
36713 
36714 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36715 auto operator<=>( PhysicalDeviceSubgroupSizeControlProperties const & ) const = default;
36716 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties36717     bool operator==( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36718     {
36719 #if defined( VULKAN_HPP_USE_REFLECT )
36720       return this->reflect() == rhs.reflect();
36721 #else
36722       return ( sType == rhs.sType )
36723           && ( pNext == rhs.pNext )
36724           && ( minSubgroupSize == rhs.minSubgroupSize )
36725           && ( maxSubgroupSize == rhs.maxSubgroupSize )
36726           && ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups )
36727           && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages );
36728 #endif
36729     }
36730 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties36731     bool operator!=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
36732     {
36733       return !operator==( rhs );
36734     }
36735 #endif
36736 
36737     public:
36738     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlProperties;
36739     void * pNext = {};
36740     uint32_t minSubgroupSize = {};
36741     uint32_t maxSubgroupSize = {};
36742     uint32_t maxComputeWorkgroupSubgroups = {};
36743     VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages = {};
36744 
36745   };
36746 
36747   template <>
36748   struct CppType<StructureType, StructureType::ePhysicalDeviceSubgroupSizeControlProperties>
36749   {
36750     using Type = PhysicalDeviceSubgroupSizeControlProperties;
36751   };
36752   using PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlProperties;
36753 
36754   struct PhysicalDeviceSurfaceInfo2KHR
36755   {
36756     using NativeType = VkPhysicalDeviceSurfaceInfo2KHR;
36757 
36758     static const bool allowDuplicate = false;
36759     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
36760 
36761 
36762 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSurfaceInfo2KHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36763 VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36764     : pNext( pNext_ ), surface( surface_ )
36765     {}
36766 
36767     VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36768 
PhysicalDeviceSurfaceInfo2KHRVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36769     PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
36770       : PhysicalDeviceSurfaceInfo2KHR( *reinterpret_cast<PhysicalDeviceSurfaceInfo2KHR const *>( &rhs ) )
36771     {}
36772 
36773 
36774     PhysicalDeviceSurfaceInfo2KHR & operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36775 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36776 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36777     PhysicalDeviceSurfaceInfo2KHR & operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
36778     {
36779       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR const *>( &rhs );
36780       return *this;
36781     }
36782 
36783 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36784     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
36785     {
36786       pNext = pNext_;
36787       return *this;
36788     }
36789 
setSurfaceVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36790     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT
36791     {
36792       surface = surface_;
36793       return *this;
36794     }
36795 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36796 
36797 
operator VkPhysicalDeviceSurfaceInfo2KHR const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36798     operator VkPhysicalDeviceSurfaceInfo2KHR const &() const VULKAN_HPP_NOEXCEPT
36799     {
36800       return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( this );
36801     }
36802 
operator VkPhysicalDeviceSurfaceInfo2KHR&VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36803     operator VkPhysicalDeviceSurfaceInfo2KHR &() VULKAN_HPP_NOEXCEPT
36804     {
36805       return *reinterpret_cast<VkPhysicalDeviceSurfaceInfo2KHR*>( this );
36806     }
36807 
36808 #if defined( VULKAN_HPP_USE_REFLECT )
36809 #if 14 <= VULKAN_HPP_CPP_VERSION
36810     auto
36811 #else
36812     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceKHR const &>
36813 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36814       reflect() const VULKAN_HPP_NOEXCEPT
36815     {
36816       return std::tie( sType, pNext, surface );
36817     }
36818 #endif
36819 
36820 
36821 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36822 auto operator<=>( PhysicalDeviceSurfaceInfo2KHR const & ) const = default;
36823 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36824     bool operator==( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
36825     {
36826 #if defined( VULKAN_HPP_USE_REFLECT )
36827       return this->reflect() == rhs.reflect();
36828 #else
36829       return ( sType == rhs.sType )
36830           && ( pNext == rhs.pNext )
36831           && ( surface == rhs.surface );
36832 #endif
36833     }
36834 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR36835     bool operator!=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
36836     {
36837       return !operator==( rhs );
36838     }
36839 #endif
36840 
36841     public:
36842     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
36843     const void * pNext = {};
36844     VULKAN_HPP_NAMESPACE::SurfaceKHR surface = {};
36845 
36846   };
36847 
36848   template <>
36849   struct CppType<StructureType, StructureType::ePhysicalDeviceSurfaceInfo2KHR>
36850   {
36851     using Type = PhysicalDeviceSurfaceInfo2KHR;
36852   };
36853 
36854   struct PhysicalDeviceSynchronization2Features
36855   {
36856     using NativeType = VkPhysicalDeviceSynchronization2Features;
36857 
36858     static const bool allowDuplicate = false;
36859     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSynchronization2Features;
36860 
36861 
36862 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceSynchronization2FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36863 VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features(VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36864     : pNext( pNext_ ), synchronization2( synchronization2_ )
36865     {}
36866 
36867     VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36868 
PhysicalDeviceSynchronization2FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36869     PhysicalDeviceSynchronization2Features( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT
36870       : PhysicalDeviceSynchronization2Features( *reinterpret_cast<PhysicalDeviceSynchronization2Features const *>( &rhs ) )
36871     {}
36872 
36873 
36874     PhysicalDeviceSynchronization2Features & operator=( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36875 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36876 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36877     PhysicalDeviceSynchronization2Features & operator=( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT
36878     {
36879       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features const *>( &rhs );
36880       return *this;
36881     }
36882 
36883 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36884     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36885     {
36886       pNext = pNext_;
36887       return *this;
36888     }
36889 
setSynchronization2VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36890     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT
36891     {
36892       synchronization2 = synchronization2_;
36893       return *this;
36894     }
36895 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36896 
36897 
operator VkPhysicalDeviceSynchronization2Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36898     operator VkPhysicalDeviceSynchronization2Features const &() const VULKAN_HPP_NOEXCEPT
36899     {
36900       return *reinterpret_cast<const VkPhysicalDeviceSynchronization2Features*>( this );
36901     }
36902 
operator VkPhysicalDeviceSynchronization2Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36903     operator VkPhysicalDeviceSynchronization2Features &() VULKAN_HPP_NOEXCEPT
36904     {
36905       return *reinterpret_cast<VkPhysicalDeviceSynchronization2Features*>( this );
36906     }
36907 
36908 #if defined( VULKAN_HPP_USE_REFLECT )
36909 #if 14 <= VULKAN_HPP_CPP_VERSION
36910     auto
36911 #else
36912     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
36913 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36914       reflect() const VULKAN_HPP_NOEXCEPT
36915     {
36916       return std::tie( sType, pNext, synchronization2 );
36917     }
36918 #endif
36919 
36920 
36921 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
36922 auto operator<=>( PhysicalDeviceSynchronization2Features const & ) const = default;
36923 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36924     bool operator==( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT
36925     {
36926 #if defined( VULKAN_HPP_USE_REFLECT )
36927       return this->reflect() == rhs.reflect();
36928 #else
36929       return ( sType == rhs.sType )
36930           && ( pNext == rhs.pNext )
36931           && ( synchronization2 == rhs.synchronization2 );
36932 #endif
36933     }
36934 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features36935     bool operator!=( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT
36936     {
36937       return !operator==( rhs );
36938     }
36939 #endif
36940 
36941     public:
36942     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSynchronization2Features;
36943     void * pNext = {};
36944     VULKAN_HPP_NAMESPACE::Bool32 synchronization2 = {};
36945 
36946   };
36947 
36948   template <>
36949   struct CppType<StructureType, StructureType::ePhysicalDeviceSynchronization2Features>
36950   {
36951     using Type = PhysicalDeviceSynchronization2Features;
36952   };
36953   using PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features;
36954 
36955   struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT
36956   {
36957     using NativeType = VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
36958 
36959     static const bool allowDuplicate = false;
36960     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
36961 
36962 
36963 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTexelBufferAlignmentFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT36964 VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
36965     : pNext( pNext_ ), texelBufferAlignment( texelBufferAlignment_ )
36966     {}
36967 
36968     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36969 
PhysicalDeviceTexelBufferAlignmentFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT36970     PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
36971       : PhysicalDeviceTexelBufferAlignmentFeaturesEXT( *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs ) )
36972     {}
36973 
36974 
36975     PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
36976 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
36977 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT36978     PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
36979     {
36980       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT const *>( &rhs );
36981       return *this;
36982     }
36983 
36984 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT36985     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
36986     {
36987       pNext = pNext_;
36988       return *this;
36989     }
36990 
setTexelBufferAlignmentVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT36991     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setTexelBufferAlignment( VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ ) VULKAN_HPP_NOEXCEPT
36992     {
36993       texelBufferAlignment = texelBufferAlignment_;
36994       return *this;
36995     }
36996 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
36997 
36998 
operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT36999     operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
37000     {
37001       return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>( this );
37002     }
37003 
operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT37004     operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &() VULKAN_HPP_NOEXCEPT
37005     {
37006       return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*>( this );
37007     }
37008 
37009 #if defined( VULKAN_HPP_USE_REFLECT )
37010 #if 14 <= VULKAN_HPP_CPP_VERSION
37011     auto
37012 #else
37013     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37014 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT37015       reflect() const VULKAN_HPP_NOEXCEPT
37016     {
37017       return std::tie( sType, pNext, texelBufferAlignment );
37018     }
37019 #endif
37020 
37021 
37022 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37023 auto operator<=>( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & ) const = default;
37024 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT37025     bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37026     {
37027 #if defined( VULKAN_HPP_USE_REFLECT )
37028       return this->reflect() == rhs.reflect();
37029 #else
37030       return ( sType == rhs.sType )
37031           && ( pNext == rhs.pNext )
37032           && ( texelBufferAlignment == rhs.texelBufferAlignment );
37033 #endif
37034     }
37035 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT37036     bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37037     {
37038       return !operator==( rhs );
37039     }
37040 #endif
37041 
37042     public:
37043     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT;
37044     void * pNext = {};
37045     VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment = {};
37046 
37047   };
37048 
37049   template <>
37050   struct CppType<StructureType, StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT>
37051   {
37052     using Type = PhysicalDeviceTexelBufferAlignmentFeaturesEXT;
37053   };
37054 
37055   struct PhysicalDeviceTexelBufferAlignmentProperties
37056   {
37057     using NativeType = VkPhysicalDeviceTexelBufferAlignmentProperties;
37058 
37059     static const bool allowDuplicate = false;
37060     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties;
37061 
37062 
37063 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTexelBufferAlignmentPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties37064 VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties(VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37065     : pNext( pNext_ ), storageTexelBufferOffsetAlignmentBytes( storageTexelBufferOffsetAlignmentBytes_ ), storageTexelBufferOffsetSingleTexelAlignment( storageTexelBufferOffsetSingleTexelAlignment_ ), uniformTexelBufferOffsetAlignmentBytes( uniformTexelBufferOffsetAlignmentBytes_ ), uniformTexelBufferOffsetSingleTexelAlignment( uniformTexelBufferOffsetSingleTexelAlignment_ )
37066     {}
37067 
37068     VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37069 
PhysicalDeviceTexelBufferAlignmentPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties37070     PhysicalDeviceTexelBufferAlignmentProperties( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37071       : PhysicalDeviceTexelBufferAlignmentProperties( *reinterpret_cast<PhysicalDeviceTexelBufferAlignmentProperties const *>( &rhs ) )
37072     {}
37073 
37074 
37075     PhysicalDeviceTexelBufferAlignmentProperties & operator=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37076 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37077 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties37078     PhysicalDeviceTexelBufferAlignmentProperties & operator=( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37079     {
37080       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties const *>( &rhs );
37081       return *this;
37082     }
37083 
37084 
operator VkPhysicalDeviceTexelBufferAlignmentProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties37085     operator VkPhysicalDeviceTexelBufferAlignmentProperties const &() const VULKAN_HPP_NOEXCEPT
37086     {
37087       return *reinterpret_cast<const VkPhysicalDeviceTexelBufferAlignmentProperties*>( this );
37088     }
37089 
operator VkPhysicalDeviceTexelBufferAlignmentProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties37090     operator VkPhysicalDeviceTexelBufferAlignmentProperties &() VULKAN_HPP_NOEXCEPT
37091     {
37092       return *reinterpret_cast<VkPhysicalDeviceTexelBufferAlignmentProperties*>( this );
37093     }
37094 
37095 #if defined( VULKAN_HPP_USE_REFLECT )
37096 #if 14 <= VULKAN_HPP_CPP_VERSION
37097     auto
37098 #else
37099     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37100 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties37101       reflect() const VULKAN_HPP_NOEXCEPT
37102     {
37103       return std::tie( sType, pNext, storageTexelBufferOffsetAlignmentBytes, storageTexelBufferOffsetSingleTexelAlignment, uniformTexelBufferOffsetAlignmentBytes, uniformTexelBufferOffsetSingleTexelAlignment );
37104     }
37105 #endif
37106 
37107 
37108 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37109 auto operator<=>( PhysicalDeviceTexelBufferAlignmentProperties const & ) const = default;
37110 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties37111     bool operator==( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37112     {
37113 #if defined( VULKAN_HPP_USE_REFLECT )
37114       return this->reflect() == rhs.reflect();
37115 #else
37116       return ( sType == rhs.sType )
37117           && ( pNext == rhs.pNext )
37118           && ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes )
37119           && ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment )
37120           && ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes )
37121           && ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment );
37122 #endif
37123     }
37124 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties37125     bool operator!=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37126     {
37127       return !operator==( rhs );
37128     }
37129 #endif
37130 
37131     public:
37132     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties;
37133     void * pNext = {};
37134     VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes = {};
37135     VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment = {};
37136     VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes = {};
37137     VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment = {};
37138 
37139   };
37140 
37141   template <>
37142   struct CppType<StructureType, StructureType::ePhysicalDeviceTexelBufferAlignmentProperties>
37143   {
37144     using Type = PhysicalDeviceTexelBufferAlignmentProperties;
37145   };
37146   using PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentProperties;
37147 
37148   struct PhysicalDeviceTextureCompressionASTCHDRFeatures
37149   {
37150     using NativeType = VkPhysicalDeviceTextureCompressionASTCHDRFeatures;
37151 
37152     static const bool allowDuplicate = false;
37153     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures;
37154 
37155 
37156 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTextureCompressionASTCHDRFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37157 VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeatures(VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37158     : pNext( pNext_ ), textureCompressionASTC_HDR( textureCompressionASTC_HDR_ )
37159     {}
37160 
37161     VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeatures( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37162 
PhysicalDeviceTextureCompressionASTCHDRFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37163     PhysicalDeviceTextureCompressionASTCHDRFeatures( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
37164       : PhysicalDeviceTextureCompressionASTCHDRFeatures( *reinterpret_cast<PhysicalDeviceTextureCompressionASTCHDRFeatures const *>( &rhs ) )
37165     {}
37166 
37167 
37168     PhysicalDeviceTextureCompressionASTCHDRFeatures & operator=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37169 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37170 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37171     PhysicalDeviceTextureCompressionASTCHDRFeatures & operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
37172     {
37173       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures const *>( &rhs );
37174       return *this;
37175     }
37176 
37177 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37178     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
37179     {
37180       pNext = pNext_;
37181       return *this;
37182     }
37183 
setTextureCompressionASTC_HDRVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37184     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures & setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT
37185     {
37186       textureCompressionASTC_HDR = textureCompressionASTC_HDR_;
37187       return *this;
37188     }
37189 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37190 
37191 
operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37192     operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const &() const VULKAN_HPP_NOEXCEPT
37193     {
37194       return *reinterpret_cast<const VkPhysicalDeviceTextureCompressionASTCHDRFeatures*>( this );
37195     }
37196 
operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37197     operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures &() VULKAN_HPP_NOEXCEPT
37198     {
37199       return *reinterpret_cast<VkPhysicalDeviceTextureCompressionASTCHDRFeatures*>( this );
37200     }
37201 
37202 #if defined( VULKAN_HPP_USE_REFLECT )
37203 #if 14 <= VULKAN_HPP_CPP_VERSION
37204     auto
37205 #else
37206     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37207 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37208       reflect() const VULKAN_HPP_NOEXCEPT
37209     {
37210       return std::tie( sType, pNext, textureCompressionASTC_HDR );
37211     }
37212 #endif
37213 
37214 
37215 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37216 auto operator<=>( PhysicalDeviceTextureCompressionASTCHDRFeatures const & ) const = default;
37217 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37218     bool operator==( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
37219     {
37220 #if defined( VULKAN_HPP_USE_REFLECT )
37221       return this->reflect() == rhs.reflect();
37222 #else
37223       return ( sType == rhs.sType )
37224           && ( pNext == rhs.pNext )
37225           && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR );
37226 #endif
37227     }
37228 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures37229     bool operator!=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
37230     {
37231       return !operator==( rhs );
37232     }
37233 #endif
37234 
37235     public:
37236     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures;
37237     void * pNext = {};
37238     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR = {};
37239 
37240   };
37241 
37242   template <>
37243   struct CppType<StructureType, StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures>
37244   {
37245     using Type = PhysicalDeviceTextureCompressionASTCHDRFeatures;
37246   };
37247   using PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeatures;
37248 
37249   struct PhysicalDeviceTimelineSemaphoreFeatures
37250   {
37251     using NativeType = VkPhysicalDeviceTimelineSemaphoreFeatures;
37252 
37253     static const bool allowDuplicate = false;
37254     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
37255 
37256 
37257 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTimelineSemaphoreFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37258 VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures(VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37259     : pNext( pNext_ ), timelineSemaphore( timelineSemaphore_ )
37260     {}
37261 
37262     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37263 
PhysicalDeviceTimelineSemaphoreFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37264     PhysicalDeviceTimelineSemaphoreFeatures( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
37265       : PhysicalDeviceTimelineSemaphoreFeatures( *reinterpret_cast<PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs ) )
37266     {}
37267 
37268 
37269     PhysicalDeviceTimelineSemaphoreFeatures & operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37270 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37271 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37272     PhysicalDeviceTimelineSemaphoreFeatures & operator=( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
37273     {
37274       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures const *>( &rhs );
37275       return *this;
37276     }
37277 
37278 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37279     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
37280     {
37281       pNext = pNext_;
37282       return *this;
37283     }
37284 
setTimelineSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37285     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT
37286     {
37287       timelineSemaphore = timelineSemaphore_;
37288       return *this;
37289     }
37290 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37291 
37292 
operator VkPhysicalDeviceTimelineSemaphoreFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37293     operator VkPhysicalDeviceTimelineSemaphoreFeatures const &() const VULKAN_HPP_NOEXCEPT
37294     {
37295       return *reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreFeatures*>( this );
37296     }
37297 
operator VkPhysicalDeviceTimelineSemaphoreFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37298     operator VkPhysicalDeviceTimelineSemaphoreFeatures &() VULKAN_HPP_NOEXCEPT
37299     {
37300       return *reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreFeatures*>( this );
37301     }
37302 
37303 #if defined( VULKAN_HPP_USE_REFLECT )
37304 #if 14 <= VULKAN_HPP_CPP_VERSION
37305     auto
37306 #else
37307     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37308 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37309       reflect() const VULKAN_HPP_NOEXCEPT
37310     {
37311       return std::tie( sType, pNext, timelineSemaphore );
37312     }
37313 #endif
37314 
37315 
37316 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37317 auto operator<=>( PhysicalDeviceTimelineSemaphoreFeatures const & ) const = default;
37318 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37319     bool operator==( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
37320     {
37321 #if defined( VULKAN_HPP_USE_REFLECT )
37322       return this->reflect() == rhs.reflect();
37323 #else
37324       return ( sType == rhs.sType )
37325           && ( pNext == rhs.pNext )
37326           && ( timelineSemaphore == rhs.timelineSemaphore );
37327 #endif
37328     }
37329 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures37330     bool operator!=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
37331     {
37332       return !operator==( rhs );
37333     }
37334 #endif
37335 
37336     public:
37337     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures;
37338     void * pNext = {};
37339     VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore = {};
37340 
37341   };
37342 
37343   template <>
37344   struct CppType<StructureType, StructureType::ePhysicalDeviceTimelineSemaphoreFeatures>
37345   {
37346     using Type = PhysicalDeviceTimelineSemaphoreFeatures;
37347   };
37348   using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures;
37349 
37350   struct PhysicalDeviceTimelineSemaphoreProperties
37351   {
37352     using NativeType = VkPhysicalDeviceTimelineSemaphoreProperties;
37353 
37354     static const bool allowDuplicate = false;
37355     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
37356 
37357 
37358 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceTimelineSemaphorePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties37359 VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties(uint64_t maxTimelineSemaphoreValueDifference_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37360     : pNext( pNext_ ), maxTimelineSemaphoreValueDifference( maxTimelineSemaphoreValueDifference_ )
37361     {}
37362 
37363     VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37364 
PhysicalDeviceTimelineSemaphorePropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties37365     PhysicalDeviceTimelineSemaphoreProperties( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37366       : PhysicalDeviceTimelineSemaphoreProperties( *reinterpret_cast<PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs ) )
37367     {}
37368 
37369 
37370     PhysicalDeviceTimelineSemaphoreProperties & operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37371 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37372 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties37373     PhysicalDeviceTimelineSemaphoreProperties & operator=( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37374     {
37375       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties const *>( &rhs );
37376       return *this;
37377     }
37378 
37379 
operator VkPhysicalDeviceTimelineSemaphoreProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties37380     operator VkPhysicalDeviceTimelineSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT
37381     {
37382       return *reinterpret_cast<const VkPhysicalDeviceTimelineSemaphoreProperties*>( this );
37383     }
37384 
operator VkPhysicalDeviceTimelineSemaphoreProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties37385     operator VkPhysicalDeviceTimelineSemaphoreProperties &() VULKAN_HPP_NOEXCEPT
37386     {
37387       return *reinterpret_cast<VkPhysicalDeviceTimelineSemaphoreProperties*>( this );
37388     }
37389 
37390 #if defined( VULKAN_HPP_USE_REFLECT )
37391 #if 14 <= VULKAN_HPP_CPP_VERSION
37392     auto
37393 #else
37394     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint64_t const &>
37395 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties37396       reflect() const VULKAN_HPP_NOEXCEPT
37397     {
37398       return std::tie( sType, pNext, maxTimelineSemaphoreValueDifference );
37399     }
37400 #endif
37401 
37402 
37403 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37404 auto operator<=>( PhysicalDeviceTimelineSemaphoreProperties const & ) const = default;
37405 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties37406     bool operator==( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37407     {
37408 #if defined( VULKAN_HPP_USE_REFLECT )
37409       return this->reflect() == rhs.reflect();
37410 #else
37411       return ( sType == rhs.sType )
37412           && ( pNext == rhs.pNext )
37413           && ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference );
37414 #endif
37415     }
37416 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties37417     bool operator!=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37418     {
37419       return !operator==( rhs );
37420     }
37421 #endif
37422 
37423     public:
37424     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties;
37425     void * pNext = {};
37426     uint64_t maxTimelineSemaphoreValueDifference = {};
37427 
37428   };
37429 
37430   template <>
37431   struct CppType<StructureType, StructureType::ePhysicalDeviceTimelineSemaphoreProperties>
37432   {
37433     using Type = PhysicalDeviceTimelineSemaphoreProperties;
37434   };
37435   using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties;
37436 
37437   struct PhysicalDeviceToolProperties
37438   {
37439     using NativeType = VkPhysicalDeviceToolProperties;
37440 
37441     static const bool allowDuplicate = false;
37442     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceToolProperties;
37443 
37444 
37445 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceToolPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties37446 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties(std::array<char,VK_MAX_EXTENSION_NAME_SIZE> const & name_ = {}, std::array<char,VK_MAX_EXTENSION_NAME_SIZE> const & version_ = {}, VULKAN_HPP_NAMESPACE::ToolPurposeFlags purposes_ = {}, std::array<char,VK_MAX_DESCRIPTION_SIZE> const & description_ = {}, std::array<char,VK_MAX_EXTENSION_NAME_SIZE> const & layer_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37447     : pNext( pNext_ ), name( name_ ), version( version_ ), purposes( purposes_ ), description( description_ ), layer( layer_ )
37448     {}
37449 
37450     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37451 
PhysicalDeviceToolPropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties37452     PhysicalDeviceToolProperties( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37453       : PhysicalDeviceToolProperties( *reinterpret_cast<PhysicalDeviceToolProperties const *>( &rhs ) )
37454     {}
37455 
37456 
37457     PhysicalDeviceToolProperties & operator=( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37458 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37459 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties37460     PhysicalDeviceToolProperties & operator=( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT
37461     {
37462       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties const *>( &rhs );
37463       return *this;
37464     }
37465 
37466 
operator VkPhysicalDeviceToolProperties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties37467     operator VkPhysicalDeviceToolProperties const &() const VULKAN_HPP_NOEXCEPT
37468     {
37469       return *reinterpret_cast<const VkPhysicalDeviceToolProperties*>( this );
37470     }
37471 
operator VkPhysicalDeviceToolProperties&VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties37472     operator VkPhysicalDeviceToolProperties &() VULKAN_HPP_NOEXCEPT
37473     {
37474       return *reinterpret_cast<VkPhysicalDeviceToolProperties*>( this );
37475     }
37476 
37477 #if defined( VULKAN_HPP_USE_REFLECT )
37478 #if 14 <= VULKAN_HPP_CPP_VERSION
37479     auto
37480 #else
37481     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &, VULKAN_HPP_NAMESPACE::ToolPurposeFlags const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> const &>
37482 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties37483       reflect() const VULKAN_HPP_NOEXCEPT
37484     {
37485       return std::tie( sType, pNext, name, version, purposes, description, layer );
37486     }
37487 #endif
37488 
37489 
37490 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37491 auto operator<=>( PhysicalDeviceToolProperties const & ) const = default;
37492 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties37493     bool operator==( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37494     {
37495 #if defined( VULKAN_HPP_USE_REFLECT )
37496       return this->reflect() == rhs.reflect();
37497 #else
37498       return ( sType == rhs.sType )
37499           && ( pNext == rhs.pNext )
37500           && ( name == rhs.name )
37501           && ( version == rhs.version )
37502           && ( purposes == rhs.purposes )
37503           && ( description == rhs.description )
37504           && ( layer == rhs.layer );
37505 #endif
37506     }
37507 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties37508     bool operator!=( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
37509     {
37510       return !operator==( rhs );
37511     }
37512 #endif
37513 
37514     public:
37515     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceToolProperties;
37516     void * pNext = {};
37517     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> name = {};
37518     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> version = {};
37519     VULKAN_HPP_NAMESPACE::ToolPurposeFlags purposes = {};
37520     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DESCRIPTION_SIZE> description = {};
37521     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_EXTENSION_NAME_SIZE> layer = {};
37522 
37523   };
37524 
37525   template <>
37526   struct CppType<StructureType, StructureType::ePhysicalDeviceToolProperties>
37527   {
37528     using Type = PhysicalDeviceToolProperties;
37529   };
37530   using PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties;
37531 
37532   struct PhysicalDeviceUniformBufferStandardLayoutFeatures
37533   {
37534     using NativeType = VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
37535 
37536     static const bool allowDuplicate = false;
37537     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
37538 
37539 
37540 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceUniformBufferStandardLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37541 VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures(VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37542     : pNext( pNext_ ), uniformBufferStandardLayout( uniformBufferStandardLayout_ )
37543     {}
37544 
37545     VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37546 
PhysicalDeviceUniformBufferStandardLayoutFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37547     PhysicalDeviceUniformBufferStandardLayoutFeatures( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
37548       : PhysicalDeviceUniformBufferStandardLayoutFeatures( *reinterpret_cast<PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs ) )
37549     {}
37550 
37551 
37552     PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37553 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37554 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37555     PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
37556     {
37557       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures const *>( &rhs );
37558       return *this;
37559     }
37560 
37561 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37562     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
37563     {
37564       pNext = pNext_;
37565       return *this;
37566     }
37567 
setUniformBufferStandardLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37568     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT
37569     {
37570       uniformBufferStandardLayout = uniformBufferStandardLayout_;
37571       return *this;
37572     }
37573 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37574 
37575 
operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37576     operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT
37577     {
37578       return *reinterpret_cast<const VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>( this );
37579     }
37580 
operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37581     operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures &() VULKAN_HPP_NOEXCEPT
37582     {
37583       return *reinterpret_cast<VkPhysicalDeviceUniformBufferStandardLayoutFeatures*>( this );
37584     }
37585 
37586 #if defined( VULKAN_HPP_USE_REFLECT )
37587 #if 14 <= VULKAN_HPP_CPP_VERSION
37588     auto
37589 #else
37590     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37591 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37592       reflect() const VULKAN_HPP_NOEXCEPT
37593     {
37594       return std::tie( sType, pNext, uniformBufferStandardLayout );
37595     }
37596 #endif
37597 
37598 
37599 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37600 auto operator<=>( PhysicalDeviceUniformBufferStandardLayoutFeatures const & ) const = default;
37601 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37602     bool operator==( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
37603     {
37604 #if defined( VULKAN_HPP_USE_REFLECT )
37605       return this->reflect() == rhs.reflect();
37606 #else
37607       return ( sType == rhs.sType )
37608           && ( pNext == rhs.pNext )
37609           && ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout );
37610 #endif
37611     }
37612 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures37613     bool operator!=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
37614     {
37615       return !operator==( rhs );
37616     }
37617 #endif
37618 
37619     public:
37620     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures;
37621     void * pNext = {};
37622     VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout = {};
37623 
37624   };
37625 
37626   template <>
37627   struct CppType<StructureType, StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures>
37628   {
37629     using Type = PhysicalDeviceUniformBufferStandardLayoutFeatures;
37630   };
37631   using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures;
37632 
37633   struct PhysicalDeviceVariablePointersFeatures
37634   {
37635     using NativeType = VkPhysicalDeviceVariablePointersFeatures;
37636 
37637     static const bool allowDuplicate = false;
37638     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVariablePointersFeatures;
37639 
37640 
37641 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVariablePointersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37642 VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures(VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37643     : pNext( pNext_ ), variablePointersStorageBuffer( variablePointersStorageBuffer_ ), variablePointers( variablePointers_ )
37644     {}
37645 
37646     VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37647 
PhysicalDeviceVariablePointersFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37648     PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
37649       : PhysicalDeviceVariablePointersFeatures( *reinterpret_cast<PhysicalDeviceVariablePointersFeatures const *>( &rhs ) )
37650     {}
37651 
37652 
37653     PhysicalDeviceVariablePointersFeatures & operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37654 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37655 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37656     PhysicalDeviceVariablePointersFeatures & operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
37657     {
37658       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures const *>( &rhs );
37659       return *this;
37660     }
37661 
37662 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37663     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
37664     {
37665       pNext = pNext_;
37666       return *this;
37667     }
37668 
setVariablePointersStorageBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37669     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setVariablePointersStorageBuffer( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
37670     {
37671       variablePointersStorageBuffer = variablePointersStorageBuffer_;
37672       return *this;
37673     }
37674 
setVariablePointersVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37675     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT
37676     {
37677       variablePointers = variablePointers_;
37678       return *this;
37679     }
37680 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37681 
37682 
operator VkPhysicalDeviceVariablePointersFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37683     operator VkPhysicalDeviceVariablePointersFeatures const &() const VULKAN_HPP_NOEXCEPT
37684     {
37685       return *reinterpret_cast<const VkPhysicalDeviceVariablePointersFeatures*>( this );
37686     }
37687 
operator VkPhysicalDeviceVariablePointersFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37688     operator VkPhysicalDeviceVariablePointersFeatures &() VULKAN_HPP_NOEXCEPT
37689     {
37690       return *reinterpret_cast<VkPhysicalDeviceVariablePointersFeatures*>( this );
37691     }
37692 
37693 #if defined( VULKAN_HPP_USE_REFLECT )
37694 #if 14 <= VULKAN_HPP_CPP_VERSION
37695     auto
37696 #else
37697     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37698 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37699       reflect() const VULKAN_HPP_NOEXCEPT
37700     {
37701       return std::tie( sType, pNext, variablePointersStorageBuffer, variablePointers );
37702     }
37703 #endif
37704 
37705 
37706 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37707 auto operator<=>( PhysicalDeviceVariablePointersFeatures const & ) const = default;
37708 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37709     bool operator==( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
37710     {
37711 #if defined( VULKAN_HPP_USE_REFLECT )
37712       return this->reflect() == rhs.reflect();
37713 #else
37714       return ( sType == rhs.sType )
37715           && ( pNext == rhs.pNext )
37716           && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
37717           && ( variablePointers == rhs.variablePointers );
37718 #endif
37719     }
37720 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures37721     bool operator!=( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
37722     {
37723       return !operator==( rhs );
37724     }
37725 #endif
37726 
37727     public:
37728     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVariablePointersFeatures;
37729     void * pNext = {};
37730     VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer = {};
37731     VULKAN_HPP_NAMESPACE::Bool32 variablePointers = {};
37732 
37733   };
37734 
37735   template <>
37736   struct CppType<StructureType, StructureType::ePhysicalDeviceVariablePointersFeatures>
37737   {
37738     using Type = PhysicalDeviceVariablePointersFeatures;
37739   };
37740   using PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures;
37741   using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
37742   using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures;
37743 
37744   struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT
37745   {
37746     using NativeType = VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
37747 
37748     static const bool allowDuplicate = false;
37749     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT;
37750 
37751 
37752 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37753 VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37754     : pNext( pNext_ ), vertexAttributeInstanceRateDivisor( vertexAttributeInstanceRateDivisor_ ), vertexAttributeInstanceRateZeroDivisor( vertexAttributeInstanceRateZeroDivisor_ )
37755     {}
37756 
37757     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37758 
PhysicalDeviceVertexAttributeDivisorFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37759     PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37760       : PhysicalDeviceVertexAttributeDivisorFeaturesEXT( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorFeaturesEXT const *>( &rhs ) )
37761     {}
37762 
37763 
37764     PhysicalDeviceVertexAttributeDivisorFeaturesEXT & operator=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37765 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37766 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37767     PhysicalDeviceVertexAttributeDivisorFeaturesEXT & operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37768     {
37769       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT const *>( &rhs );
37770       return *this;
37771     }
37772 
37773 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37774     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
37775     {
37776       pNext = pNext_;
37777       return *this;
37778     }
37779 
setVertexAttributeInstanceRateDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37780     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ ) VULKAN_HPP_NOEXCEPT
37781     {
37782       vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_;
37783       return *this;
37784     }
37785 
setVertexAttributeInstanceRateZeroDivisorVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37786     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateZeroDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ ) VULKAN_HPP_NOEXCEPT
37787     {
37788       vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_;
37789       return *this;
37790     }
37791 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37792 
37793 
operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37794     operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
37795     {
37796       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>( this );
37797     }
37798 
operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37799     operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT &() VULKAN_HPP_NOEXCEPT
37800     {
37801       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT*>( this );
37802     }
37803 
37804 #if defined( VULKAN_HPP_USE_REFLECT )
37805 #if 14 <= VULKAN_HPP_CPP_VERSION
37806     auto
37807 #else
37808     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37809 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37810       reflect() const VULKAN_HPP_NOEXCEPT
37811     {
37812       return std::tie( sType, pNext, vertexAttributeInstanceRateDivisor, vertexAttributeInstanceRateZeroDivisor );
37813     }
37814 #endif
37815 
37816 
37817 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37818 auto operator<=>( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & ) const = default;
37819 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37820     bool operator==( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37821     {
37822 #if defined( VULKAN_HPP_USE_REFLECT )
37823       return this->reflect() == rhs.reflect();
37824 #else
37825       return ( sType == rhs.sType )
37826           && ( pNext == rhs.pNext )
37827           && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor )
37828           && ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor );
37829 #endif
37830     }
37831 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT37832     bool operator!=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37833     {
37834       return !operator==( rhs );
37835     }
37836 #endif
37837 
37838     public:
37839     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT;
37840     void * pNext = {};
37841     VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor = {};
37842     VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor = {};
37843 
37844   };
37845 
37846   template <>
37847   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT>
37848   {
37849     using Type = PhysicalDeviceVertexAttributeDivisorFeaturesEXT;
37850   };
37851 
37852   struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT
37853   {
37854     using NativeType = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
37855 
37856     static const bool allowDuplicate = false;
37857     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
37858 
37859 
37860 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexAttributeDivisorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT37861 VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT(uint32_t maxVertexAttribDivisor_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37862     : pNext( pNext_ ), maxVertexAttribDivisor( maxVertexAttribDivisor_ )
37863     {}
37864 
37865     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37866 
PhysicalDeviceVertexAttributeDivisorPropertiesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT37867     PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37868       : PhysicalDeviceVertexAttributeDivisorPropertiesEXT( *reinterpret_cast<PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs ) )
37869     {}
37870 
37871 
37872     PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37873 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37874 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT37875     PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37876     {
37877       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT const *>( &rhs );
37878       return *this;
37879     }
37880 
37881 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT37882     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT
37883     {
37884       return *reinterpret_cast<const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>( this );
37885     }
37886 
operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT37887     operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &() VULKAN_HPP_NOEXCEPT
37888     {
37889       return *reinterpret_cast<VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*>( this );
37890     }
37891 
37892 #if defined( VULKAN_HPP_USE_REFLECT )
37893 #if 14 <= VULKAN_HPP_CPP_VERSION
37894     auto
37895 #else
37896     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
37897 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT37898       reflect() const VULKAN_HPP_NOEXCEPT
37899     {
37900       return std::tie( sType, pNext, maxVertexAttribDivisor );
37901     }
37902 #endif
37903 
37904 
37905 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
37906 auto operator<=>( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & ) const = default;
37907 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT37908     bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37909     {
37910 #if defined( VULKAN_HPP_USE_REFLECT )
37911       return this->reflect() == rhs.reflect();
37912 #else
37913       return ( sType == rhs.sType )
37914           && ( pNext == rhs.pNext )
37915           && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor );
37916 #endif
37917     }
37918 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT37919     bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
37920     {
37921       return !operator==( rhs );
37922     }
37923 #endif
37924 
37925     public:
37926     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT;
37927     void * pNext = {};
37928     uint32_t maxVertexAttribDivisor = {};
37929 
37930   };
37931 
37932   template <>
37933   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT>
37934   {
37935     using Type = PhysicalDeviceVertexAttributeDivisorPropertiesEXT;
37936   };
37937 
37938   struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT
37939   {
37940     using NativeType = VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
37941 
37942     static const bool allowDuplicate = false;
37943     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT;
37944 
37945 
37946 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVertexInputDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT37947 VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
37948     : pNext( pNext_ ), vertexInputDynamicState( vertexInputDynamicState_ )
37949     {}
37950 
37951     VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37952 
PhysicalDeviceVertexInputDynamicStateFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT37953     PhysicalDeviceVertexInputDynamicStateFeaturesEXT( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37954       : PhysicalDeviceVertexInputDynamicStateFeaturesEXT( *reinterpret_cast<PhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>( &rhs ) )
37955     {}
37956 
37957 
37958     PhysicalDeviceVertexInputDynamicStateFeaturesEXT & operator=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
37959 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
37960 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT37961     PhysicalDeviceVertexInputDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
37962     {
37963       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT const *>( &rhs );
37964       return *this;
37965     }
37966 
37967 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT37968     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
37969     {
37970       pNext = pNext_;
37971       return *this;
37972     }
37973 
setVertexInputDynamicStateVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT37974     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT & setVertexInputDynamicState( VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState_ ) VULKAN_HPP_NOEXCEPT
37975     {
37976       vertexInputDynamicState = vertexInputDynamicState_;
37977       return *this;
37978     }
37979 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
37980 
37981 
operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT37982     operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
37983     {
37984       return *reinterpret_cast<const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT*>( this );
37985     }
37986 
operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT37987     operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT
37988     {
37989       return *reinterpret_cast<VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT*>( this );
37990     }
37991 
37992 #if defined( VULKAN_HPP_USE_REFLECT )
37993 #if 14 <= VULKAN_HPP_CPP_VERSION
37994     auto
37995 #else
37996     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
37997 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT37998       reflect() const VULKAN_HPP_NOEXCEPT
37999     {
38000       return std::tie( sType, pNext, vertexInputDynamicState );
38001     }
38002 #endif
38003 
38004 
38005 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
38006 auto operator<=>( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & ) const = default;
38007 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT38008     bool operator==( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
38009     {
38010 #if defined( VULKAN_HPP_USE_REFLECT )
38011       return this->reflect() == rhs.reflect();
38012 #else
38013       return ( sType == rhs.sType )
38014           && ( pNext == rhs.pNext )
38015           && ( vertexInputDynamicState == rhs.vertexInputDynamicState );
38016 #endif
38017     }
38018 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT38019     bool operator!=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
38020     {
38021       return !operator==( rhs );
38022     }
38023 #endif
38024 
38025     public:
38026     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT;
38027     void * pNext = {};
38028     VULKAN_HPP_NAMESPACE::Bool32 vertexInputDynamicState = {};
38029 
38030   };
38031 
38032   template <>
38033   struct CppType<StructureType, StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT>
38034   {
38035     using Type = PhysicalDeviceVertexInputDynamicStateFeaturesEXT;
38036   };
38037 
38038   struct PhysicalDeviceVulkan11Features
38039   {
38040     using NativeType = VkPhysicalDeviceVulkan11Features;
38041 
38042     static const bool allowDuplicate = false;
38043     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Features;
38044 
38045 
38046 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan11FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38047 VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features(VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiview_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ = {}, VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {}, VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
38048     : pNext( pNext_ ), storageBuffer16BitAccess( storageBuffer16BitAccess_ ), uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ ), storagePushConstant16( storagePushConstant16_ ), storageInputOutput16( storageInputOutput16_ ), multiview( multiview_ ), multiviewGeometryShader( multiviewGeometryShader_ ), multiviewTessellationShader( multiviewTessellationShader_ ), variablePointersStorageBuffer( variablePointersStorageBuffer_ ), variablePointers( variablePointers_ ), protectedMemory( protectedMemory_ ), samplerYcbcrConversion( samplerYcbcrConversion_ ), shaderDrawParameters( shaderDrawParameters_ )
38049     {}
38050 
38051     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38052 
PhysicalDeviceVulkan11FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38053     PhysicalDeviceVulkan11Features( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
38054       : PhysicalDeviceVulkan11Features( *reinterpret_cast<PhysicalDeviceVulkan11Features const *>( &rhs ) )
38055     {}
38056 
38057 
38058     PhysicalDeviceVulkan11Features & operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38059 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38060 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38061     PhysicalDeviceVulkan11Features & operator=( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT
38062     {
38063       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features const *>( &rhs );
38064       return *this;
38065     }
38066 
38067 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38068     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
38069     {
38070       pNext = pNext_;
38071       return *this;
38072     }
38073 
setStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38074     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
38075     {
38076       storageBuffer16BitAccess = storageBuffer16BitAccess_;
38077       return *this;
38078     }
38079 
setUniformAndStorageBuffer16BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38080     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setUniformAndStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT
38081     {
38082       uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
38083       return *this;
38084     }
38085 
setStoragePushConstant16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38086     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT
38087     {
38088       storagePushConstant16 = storagePushConstant16_;
38089       return *this;
38090     }
38091 
setStorageInputOutput16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38092     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT
38093     {
38094       storageInputOutput16 = storageInputOutput16_;
38095       return *this;
38096     }
38097 
setMultiviewVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38098     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT
38099     {
38100       multiview = multiview_;
38101       return *this;
38102     }
38103 
setMultiviewGeometryShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38104     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT
38105     {
38106       multiviewGeometryShader = multiviewGeometryShader_;
38107       return *this;
38108     }
38109 
setMultiviewTessellationShaderVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38110     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT
38111     {
38112       multiviewTessellationShader = multiviewTessellationShader_;
38113       return *this;
38114     }
38115 
setVariablePointersStorageBufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38116     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setVariablePointersStorageBuffer( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT
38117     {
38118       variablePointersStorageBuffer = variablePointersStorageBuffer_;
38119       return *this;
38120     }
38121 
setVariablePointersVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38122     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT
38123     {
38124       variablePointers = variablePointers_;
38125       return *this;
38126     }
38127 
setProtectedMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38128     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT
38129     {
38130       protectedMemory = protectedMemory_;
38131       return *this;
38132     }
38133 
setSamplerYcbcrConversionVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38134     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT
38135     {
38136       samplerYcbcrConversion = samplerYcbcrConversion_;
38137       return *this;
38138     }
38139 
setShaderDrawParametersVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38140     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT
38141     {
38142       shaderDrawParameters = shaderDrawParameters_;
38143       return *this;
38144     }
38145 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38146 
38147 
operator VkPhysicalDeviceVulkan11Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38148     operator VkPhysicalDeviceVulkan11Features const &() const VULKAN_HPP_NOEXCEPT
38149     {
38150       return *reinterpret_cast<const VkPhysicalDeviceVulkan11Features*>( this );
38151     }
38152 
operator VkPhysicalDeviceVulkan11Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38153     operator VkPhysicalDeviceVulkan11Features &() VULKAN_HPP_NOEXCEPT
38154     {
38155       return *reinterpret_cast<VkPhysicalDeviceVulkan11Features*>( this );
38156     }
38157 
38158 #if defined( VULKAN_HPP_USE_REFLECT )
38159 #if 14 <= VULKAN_HPP_CPP_VERSION
38160     auto
38161 #else
38162     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
38163 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38164       reflect() const VULKAN_HPP_NOEXCEPT
38165     {
38166       return std::tie( sType, pNext, storageBuffer16BitAccess, uniformAndStorageBuffer16BitAccess, storagePushConstant16, storageInputOutput16, multiview, multiviewGeometryShader, multiviewTessellationShader, variablePointersStorageBuffer, variablePointers, protectedMemory, samplerYcbcrConversion, shaderDrawParameters );
38167     }
38168 #endif
38169 
38170 
38171 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
38172 auto operator<=>( PhysicalDeviceVulkan11Features const & ) const = default;
38173 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38174     bool operator==( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT
38175     {
38176 #if defined( VULKAN_HPP_USE_REFLECT )
38177       return this->reflect() == rhs.reflect();
38178 #else
38179       return ( sType == rhs.sType )
38180           && ( pNext == rhs.pNext )
38181           && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
38182           && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
38183           && ( storagePushConstant16 == rhs.storagePushConstant16 )
38184           && ( storageInputOutput16 == rhs.storageInputOutput16 )
38185           && ( multiview == rhs.multiview )
38186           && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
38187           && ( multiviewTessellationShader == rhs.multiviewTessellationShader )
38188           && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
38189           && ( variablePointers == rhs.variablePointers )
38190           && ( protectedMemory == rhs.protectedMemory )
38191           && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion )
38192           && ( shaderDrawParameters == rhs.shaderDrawParameters );
38193 #endif
38194     }
38195 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features38196     bool operator!=( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT
38197     {
38198       return !operator==( rhs );
38199     }
38200 #endif
38201 
38202     public:
38203     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Features;
38204     void * pNext = {};
38205     VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess = {};
38206     VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess = {};
38207     VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16 = {};
38208     VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16 = {};
38209     VULKAN_HPP_NAMESPACE::Bool32 multiview = {};
38210     VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader = {};
38211     VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader = {};
38212     VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer = {};
38213     VULKAN_HPP_NAMESPACE::Bool32 variablePointers = {};
38214     VULKAN_HPP_NAMESPACE::Bool32 protectedMemory = {};
38215     VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion = {};
38216     VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters = {};
38217 
38218   };
38219 
38220   template <>
38221   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan11Features>
38222   {
38223     using Type = PhysicalDeviceVulkan11Features;
38224   };
38225 
38226   struct PhysicalDeviceVulkan11Properties
38227   {
38228     using NativeType = VkPhysicalDeviceVulkan11Properties;
38229 
38230     static const bool allowDuplicate = false;
38231     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Properties;
38232 
38233 
38234 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan11PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties38235 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties(std::array<uint8_t,VK_UUID_SIZE> const & deviceUUID_ = {}, std::array<uint8_t,VK_UUID_SIZE> const & driverUUID_ = {}, std::array<uint8_t,VK_LUID_SIZE> const & deviceLUID_ = {}, uint32_t deviceNodeMask_ = {}, VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid_ = {}, uint32_t subgroupSize_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags subgroupSupportedStages_ = {}, VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags subgroupSupportedOperations_ = {}, VULKAN_HPP_NAMESPACE::Bool32 subgroupQuadOperationsInAllStages_ = {}, VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes, uint32_t maxMultiviewViewCount_ = {}, uint32_t maxMultiviewInstanceIndex_ = {}, VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {}, uint32_t maxPerSetDescriptors_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
38236     : pNext( pNext_ ), deviceUUID( deviceUUID_ ), driverUUID( driverUUID_ ), deviceLUID( deviceLUID_ ), deviceNodeMask( deviceNodeMask_ ), deviceLUIDValid( deviceLUIDValid_ ), subgroupSize( subgroupSize_ ), subgroupSupportedStages( subgroupSupportedStages_ ), subgroupSupportedOperations( subgroupSupportedOperations_ ), subgroupQuadOperationsInAllStages( subgroupQuadOperationsInAllStages_ ), pointClippingBehavior( pointClippingBehavior_ ), maxMultiviewViewCount( maxMultiviewViewCount_ ), maxMultiviewInstanceIndex( maxMultiviewInstanceIndex_ ), protectedNoFault( protectedNoFault_ ), maxPerSetDescriptors( maxPerSetDescriptors_ ), maxMemoryAllocationSize( maxMemoryAllocationSize_ )
38237     {}
38238 
38239     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38240 
PhysicalDeviceVulkan11PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties38241     PhysicalDeviceVulkan11Properties( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
38242       : PhysicalDeviceVulkan11Properties( *reinterpret_cast<PhysicalDeviceVulkan11Properties const *>( &rhs ) )
38243     {}
38244 
38245 
38246     PhysicalDeviceVulkan11Properties & operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38247 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38248 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties38249     PhysicalDeviceVulkan11Properties & operator=( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT
38250     {
38251       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties const *>( &rhs );
38252       return *this;
38253     }
38254 
38255 
operator VkPhysicalDeviceVulkan11Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties38256     operator VkPhysicalDeviceVulkan11Properties const &() const VULKAN_HPP_NOEXCEPT
38257     {
38258       return *reinterpret_cast<const VkPhysicalDeviceVulkan11Properties*>( this );
38259     }
38260 
operator VkPhysicalDeviceVulkan11Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties38261     operator VkPhysicalDeviceVulkan11Properties &() VULKAN_HPP_NOEXCEPT
38262     {
38263       return *reinterpret_cast<VkPhysicalDeviceVulkan11Properties*>( this );
38264     }
38265 
38266 #if defined( VULKAN_HPP_USE_REFLECT )
38267 #if 14 <= VULKAN_HPP_CPP_VERSION
38268     auto
38269 #else
38270     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::PointClippingBehavior const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
38271 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties38272       reflect() const VULKAN_HPP_NOEXCEPT
38273     {
38274       return std::tie( sType, pNext, deviceUUID, driverUUID, deviceLUID, deviceNodeMask, deviceLUIDValid, subgroupSize, subgroupSupportedStages, subgroupSupportedOperations, subgroupQuadOperationsInAllStages, pointClippingBehavior, maxMultiviewViewCount, maxMultiviewInstanceIndex, protectedNoFault, maxPerSetDescriptors, maxMemoryAllocationSize );
38275     }
38276 #endif
38277 
38278 
38279 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
38280 auto operator<=>( PhysicalDeviceVulkan11Properties const & ) const = default;
38281 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties38282     bool operator==( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
38283     {
38284 #if defined( VULKAN_HPP_USE_REFLECT )
38285       return this->reflect() == rhs.reflect();
38286 #else
38287       return ( sType == rhs.sType )
38288           && ( pNext == rhs.pNext )
38289           && ( deviceUUID == rhs.deviceUUID )
38290           && ( driverUUID == rhs.driverUUID )
38291           && ( deviceLUID == rhs.deviceLUID )
38292           && ( deviceNodeMask == rhs.deviceNodeMask )
38293           && ( deviceLUIDValid == rhs.deviceLUIDValid )
38294           && ( subgroupSize == rhs.subgroupSize )
38295           && ( subgroupSupportedStages == rhs.subgroupSupportedStages )
38296           && ( subgroupSupportedOperations == rhs.subgroupSupportedOperations )
38297           && ( subgroupQuadOperationsInAllStages == rhs.subgroupQuadOperationsInAllStages )
38298           && ( pointClippingBehavior == rhs.pointClippingBehavior )
38299           && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
38300           && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex )
38301           && ( protectedNoFault == rhs.protectedNoFault )
38302           && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors )
38303           && ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize );
38304 #endif
38305     }
38306 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties38307     bool operator!=( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
38308     {
38309       return !operator==( rhs );
38310     }
38311 #endif
38312 
38313     public:
38314     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Properties;
38315     void * pNext = {};
38316     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> deviceUUID = {};
38317     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> driverUUID = {};
38318     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_LUID_SIZE> deviceLUID = {};
38319     uint32_t deviceNodeMask = {};
38320     VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid = {};
38321     uint32_t subgroupSize = {};
38322     VULKAN_HPP_NAMESPACE::ShaderStageFlags subgroupSupportedStages = {};
38323     VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags subgroupSupportedOperations = {};
38324     VULKAN_HPP_NAMESPACE::Bool32 subgroupQuadOperationsInAllStages = {};
38325     VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes;
38326     uint32_t maxMultiviewViewCount = {};
38327     uint32_t maxMultiviewInstanceIndex = {};
38328     VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault = {};
38329     uint32_t maxPerSetDescriptors = {};
38330     VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize = {};
38331 
38332   };
38333 
38334   template <>
38335   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan11Properties>
38336   {
38337     using Type = PhysicalDeviceVulkan11Properties;
38338   };
38339 
38340   struct PhysicalDeviceVulkan12Features
38341   {
38342     using NativeType = VkPhysicalDeviceVulkan12Features;
38343 
38344     static const bool allowDuplicate = false;
38345     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Features;
38346 
38347 
38348 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan12FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38349 VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features(VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ = {}, VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ = {}, VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ = {}, VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ = {}, VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {}, VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {}, VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {}, VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
38350     : pNext( pNext_ ), samplerMirrorClampToEdge( samplerMirrorClampToEdge_ ), drawIndirectCount( drawIndirectCount_ ), storageBuffer8BitAccess( storageBuffer8BitAccess_ ), uniformAndStorageBuffer8BitAccess( uniformAndStorageBuffer8BitAccess_ ), storagePushConstant8( storagePushConstant8_ ), shaderBufferInt64Atomics( shaderBufferInt64Atomics_ ), shaderSharedInt64Atomics( shaderSharedInt64Atomics_ ), shaderFloat16( shaderFloat16_ ), shaderInt8( shaderInt8_ ), descriptorIndexing( descriptorIndexing_ ), shaderInputAttachmentArrayDynamicIndexing( shaderInputAttachmentArrayDynamicIndexing_ ), shaderUniformTexelBufferArrayDynamicIndexing( shaderUniformTexelBufferArrayDynamicIndexing_ ), shaderStorageTexelBufferArrayDynamicIndexing( shaderStorageTexelBufferArrayDynamicIndexing_ ), shaderUniformBufferArrayNonUniformIndexing( shaderUniformBufferArrayNonUniformIndexing_ ), shaderSampledImageArrayNonUniformIndexing( shaderSampledImageArrayNonUniformIndexing_ ), shaderStorageBufferArrayNonUniformIndexing( shaderStorageBufferArrayNonUniformIndexing_ ), shaderStorageImageArrayNonUniformIndexing( shaderStorageImageArrayNonUniformIndexing_ ), shaderInputAttachmentArrayNonUniformIndexing( shaderInputAttachmentArrayNonUniformIndexing_ ), shaderUniformTexelBufferArrayNonUniformIndexing( shaderUniformTexelBufferArrayNonUniformIndexing_ ), shaderStorageTexelBufferArrayNonUniformIndexing( shaderStorageTexelBufferArrayNonUniformIndexing_ ), descriptorBindingUniformBufferUpdateAfterBind( descriptorBindingUniformBufferUpdateAfterBind_ ), descriptorBindingSampledImageUpdateAfterBind( descriptorBindingSampledImageUpdateAfterBind_ ), descriptorBindingStorageImageUpdateAfterBind( descriptorBindingStorageImageUpdateAfterBind_ ), descriptorBindingStorageBufferUpdateAfterBind( descriptorBindingStorageBufferUpdateAfterBind_ ), descriptorBindingUniformTexelBufferUpdateAfterBind( descriptorBindingUniformTexelBufferUpdateAfterBind_ ), descriptorBindingStorageTexelBufferUpdateAfterBind( descriptorBindingStorageTexelBufferUpdateAfterBind_ ), descriptorBindingUpdateUnusedWhilePending( descriptorBindingUpdateUnusedWhilePending_ ), descriptorBindingPartiallyBound( descriptorBindingPartiallyBound_ ), descriptorBindingVariableDescriptorCount( descriptorBindingVariableDescriptorCount_ ), runtimeDescriptorArray( runtimeDescriptorArray_ ), samplerFilterMinmax( samplerFilterMinmax_ ), scalarBlockLayout( scalarBlockLayout_ ), imagelessFramebuffer( imagelessFramebuffer_ ), uniformBufferStandardLayout( uniformBufferStandardLayout_ ), shaderSubgroupExtendedTypes( shaderSubgroupExtendedTypes_ ), separateDepthStencilLayouts( separateDepthStencilLayouts_ ), hostQueryReset( hostQueryReset_ ), timelineSemaphore( timelineSemaphore_ ), bufferDeviceAddress( bufferDeviceAddress_ ), bufferDeviceAddressCaptureReplay( bufferDeviceAddressCaptureReplay_ ), bufferDeviceAddressMultiDevice( bufferDeviceAddressMultiDevice_ ), vulkanMemoryModel( vulkanMemoryModel_ ), vulkanMemoryModelDeviceScope( vulkanMemoryModelDeviceScope_ ), vulkanMemoryModelAvailabilityVisibilityChains( vulkanMemoryModelAvailabilityVisibilityChains_ ), shaderOutputViewportIndex( shaderOutputViewportIndex_ ), shaderOutputLayer( shaderOutputLayer_ ), subgroupBroadcastDynamicId( subgroupBroadcastDynamicId_ )
38351     {}
38352 
38353     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38354 
PhysicalDeviceVulkan12FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38355     PhysicalDeviceVulkan12Features( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
38356       : PhysicalDeviceVulkan12Features( *reinterpret_cast<PhysicalDeviceVulkan12Features const *>( &rhs ) )
38357     {}
38358 
38359 
38360     PhysicalDeviceVulkan12Features & operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38361 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38362 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38363     PhysicalDeviceVulkan12Features & operator=( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT
38364     {
38365       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features const *>( &rhs );
38366       return *this;
38367     }
38368 
38369 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38370     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
38371     {
38372       pNext = pNext_;
38373       return *this;
38374     }
38375 
setSamplerMirrorClampToEdgeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38376     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSamplerMirrorClampToEdge( VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ ) VULKAN_HPP_NOEXCEPT
38377     {
38378       samplerMirrorClampToEdge = samplerMirrorClampToEdge_;
38379       return *this;
38380     }
38381 
setDrawIndirectCountVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38382     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDrawIndirectCount( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ ) VULKAN_HPP_NOEXCEPT
38383     {
38384       drawIndirectCount = drawIndirectCount_;
38385       return *this;
38386     }
38387 
setStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38388     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
38389     {
38390       storageBuffer8BitAccess = storageBuffer8BitAccess_;
38391       return *this;
38392     }
38393 
setUniformAndStorageBuffer8BitAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38394     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setUniformAndStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT
38395     {
38396       uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_;
38397       return *this;
38398     }
38399 
setStoragePushConstant8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38400     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT
38401     {
38402       storagePushConstant8 = storagePushConstant8_;
38403       return *this;
38404     }
38405 
setShaderBufferInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38406     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
38407     {
38408       shaderBufferInt64Atomics = shaderBufferInt64Atomics_;
38409       return *this;
38410     }
38411 
setShaderSharedInt64AtomicsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38412     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT
38413     {
38414       shaderSharedInt64Atomics = shaderSharedInt64Atomics_;
38415       return *this;
38416     }
38417 
setShaderFloat16VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38418     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT
38419     {
38420       shaderFloat16 = shaderFloat16_;
38421       return *this;
38422     }
38423 
setShaderInt8VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38424     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT
38425     {
38426       shaderInt8 = shaderInt8_;
38427       return *this;
38428     }
38429 
setDescriptorIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38430     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorIndexing( VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ ) VULKAN_HPP_NOEXCEPT
38431     {
38432       descriptorIndexing = descriptorIndexing_;
38433       return *this;
38434     }
38435 
setShaderInputAttachmentArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38436     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
38437     {
38438       shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_;
38439       return *this;
38440     }
38441 
setShaderUniformTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38442     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
38443     {
38444       shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_;
38445       return *this;
38446     }
38447 
setShaderStorageTexelBufferArrayDynamicIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38448     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT
38449     {
38450       shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_;
38451       return *this;
38452     }
38453 
setShaderUniformBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38454     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
38455     {
38456       shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_;
38457       return *this;
38458     }
38459 
setShaderSampledImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38460     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderSampledImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
38461     {
38462       shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_;
38463       return *this;
38464     }
38465 
setShaderStorageBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38466     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
38467     {
38468       shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_;
38469       return *this;
38470     }
38471 
setShaderStorageImageArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38472     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
38473     {
38474       shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_;
38475       return *this;
38476     }
38477 
setShaderInputAttachmentArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38478     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
38479     {
38480       shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_;
38481       return *this;
38482     }
38483 
setShaderUniformTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38484     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderUniformTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
38485     {
38486       shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_;
38487       return *this;
38488     }
38489 
setShaderStorageTexelBufferArrayNonUniformIndexingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38490     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT
38491     {
38492       shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_;
38493       return *this;
38494     }
38495 
setDescriptorBindingUniformBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38496     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUniformBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
38497     {
38498       descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_;
38499       return *this;
38500     }
38501 
setDescriptorBindingSampledImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38502     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingSampledImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
38503     {
38504       descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_;
38505       return *this;
38506     }
38507 
setDescriptorBindingStorageImageUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38508     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
38509     {
38510       descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_;
38511       return *this;
38512     }
38513 
setDescriptorBindingStorageBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38514     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
38515     {
38516       descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_;
38517       return *this;
38518     }
38519 
setDescriptorBindingUniformTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38520     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUniformTexelBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
38521     {
38522       descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_;
38523       return *this;
38524     }
38525 
setDescriptorBindingStorageTexelBufferUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38526     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingStorageTexelBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
38527     {
38528       descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_;
38529       return *this;
38530     }
38531 
setDescriptorBindingUpdateUnusedWhilePendingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38532     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUpdateUnusedWhilePending( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT
38533     {
38534       descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_;
38535       return *this;
38536     }
38537 
setDescriptorBindingPartiallyBoundVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38538     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingPartiallyBound( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT
38539     {
38540       descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_;
38541       return *this;
38542     }
38543 
setDescriptorBindingVariableDescriptorCountVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38544     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingVariableDescriptorCount( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT
38545     {
38546       descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_;
38547       return *this;
38548     }
38549 
setRuntimeDescriptorArrayVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38550     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT
38551     {
38552       runtimeDescriptorArray = runtimeDescriptorArray_;
38553       return *this;
38554     }
38555 
setSamplerFilterMinmaxVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38556     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSamplerFilterMinmax( VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ ) VULKAN_HPP_NOEXCEPT
38557     {
38558       samplerFilterMinmax = samplerFilterMinmax_;
38559       return *this;
38560     }
38561 
setScalarBlockLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38562     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT
38563     {
38564       scalarBlockLayout = scalarBlockLayout_;
38565       return *this;
38566     }
38567 
setImagelessFramebufferVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38568     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT
38569     {
38570       imagelessFramebuffer = imagelessFramebuffer_;
38571       return *this;
38572     }
38573 
setUniformBufferStandardLayoutVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38574     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT
38575     {
38576       uniformBufferStandardLayout = uniformBufferStandardLayout_;
38577       return *this;
38578     }
38579 
setShaderSubgroupExtendedTypesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38580     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT
38581     {
38582       shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_;
38583       return *this;
38584     }
38585 
setSeparateDepthStencilLayoutsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38586     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT
38587     {
38588       separateDepthStencilLayouts = separateDepthStencilLayouts_;
38589       return *this;
38590     }
38591 
setHostQueryResetVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38592     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT
38593     {
38594       hostQueryReset = hostQueryReset_;
38595       return *this;
38596     }
38597 
setTimelineSemaphoreVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38598     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT
38599     {
38600       timelineSemaphore = timelineSemaphore_;
38601       return *this;
38602     }
38603 
setBufferDeviceAddressVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38604     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT
38605     {
38606       bufferDeviceAddress = bufferDeviceAddress_;
38607       return *this;
38608     }
38609 
setBufferDeviceAddressCaptureReplayVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38610     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT
38611     {
38612       bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_;
38613       return *this;
38614     }
38615 
setBufferDeviceAddressMultiDeviceVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38616     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT
38617     {
38618       bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_;
38619       return *this;
38620     }
38621 
setVulkanMemoryModelVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38622     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT
38623     {
38624       vulkanMemoryModel = vulkanMemoryModel_;
38625       return *this;
38626     }
38627 
setVulkanMemoryModelDeviceScopeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38628     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT
38629     {
38630       vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_;
38631       return *this;
38632     }
38633 
setVulkanMemoryModelAvailabilityVisibilityChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38634     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModelAvailabilityVisibilityChains( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT
38635     {
38636       vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_;
38637       return *this;
38638     }
38639 
setShaderOutputViewportIndexVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38640     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderOutputViewportIndex( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ ) VULKAN_HPP_NOEXCEPT
38641     {
38642       shaderOutputViewportIndex = shaderOutputViewportIndex_;
38643       return *this;
38644     }
38645 
setShaderOutputLayerVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38646     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderOutputLayer( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ ) VULKAN_HPP_NOEXCEPT
38647     {
38648       shaderOutputLayer = shaderOutputLayer_;
38649       return *this;
38650     }
38651 
setSubgroupBroadcastDynamicIdVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38652     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSubgroupBroadcastDynamicId( VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ ) VULKAN_HPP_NOEXCEPT
38653     {
38654       subgroupBroadcastDynamicId = subgroupBroadcastDynamicId_;
38655       return *this;
38656     }
38657 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
38658 
38659 
operator VkPhysicalDeviceVulkan12Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38660     operator VkPhysicalDeviceVulkan12Features const &() const VULKAN_HPP_NOEXCEPT
38661     {
38662       return *reinterpret_cast<const VkPhysicalDeviceVulkan12Features*>( this );
38663     }
38664 
operator VkPhysicalDeviceVulkan12Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38665     operator VkPhysicalDeviceVulkan12Features &() VULKAN_HPP_NOEXCEPT
38666     {
38667       return *reinterpret_cast<VkPhysicalDeviceVulkan12Features*>( this );
38668     }
38669 
38670 #if defined( VULKAN_HPP_USE_REFLECT )
38671 #if 14 <= VULKAN_HPP_CPP_VERSION
38672     auto
38673 #else
38674     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
38675 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38676       reflect() const VULKAN_HPP_NOEXCEPT
38677     {
38678       return std::tie( sType, pNext, samplerMirrorClampToEdge, drawIndirectCount, storageBuffer8BitAccess, uniformAndStorageBuffer8BitAccess, storagePushConstant8, shaderBufferInt64Atomics, shaderSharedInt64Atomics, shaderFloat16, shaderInt8, descriptorIndexing, shaderInputAttachmentArrayDynamicIndexing, shaderUniformTexelBufferArrayDynamicIndexing, shaderStorageTexelBufferArrayDynamicIndexing, shaderUniformBufferArrayNonUniformIndexing, shaderSampledImageArrayNonUniformIndexing, shaderStorageBufferArrayNonUniformIndexing, shaderStorageImageArrayNonUniformIndexing, shaderInputAttachmentArrayNonUniformIndexing, shaderUniformTexelBufferArrayNonUniformIndexing, shaderStorageTexelBufferArrayNonUniformIndexing, descriptorBindingUniformBufferUpdateAfterBind, descriptorBindingSampledImageUpdateAfterBind, descriptorBindingStorageImageUpdateAfterBind, descriptorBindingStorageBufferUpdateAfterBind, descriptorBindingUniformTexelBufferUpdateAfterBind, descriptorBindingStorageTexelBufferUpdateAfterBind, descriptorBindingUpdateUnusedWhilePending, descriptorBindingPartiallyBound, descriptorBindingVariableDescriptorCount, runtimeDescriptorArray, samplerFilterMinmax, scalarBlockLayout, imagelessFramebuffer, uniformBufferStandardLayout, shaderSubgroupExtendedTypes, separateDepthStencilLayouts, hostQueryReset, timelineSemaphore, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice, vulkanMemoryModel, vulkanMemoryModelDeviceScope, vulkanMemoryModelAvailabilityVisibilityChains, shaderOutputViewportIndex, shaderOutputLayer, subgroupBroadcastDynamicId );
38679     }
38680 #endif
38681 
38682 
38683 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
38684 auto operator<=>( PhysicalDeviceVulkan12Features const & ) const = default;
38685 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38686     bool operator==( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT
38687     {
38688 #if defined( VULKAN_HPP_USE_REFLECT )
38689       return this->reflect() == rhs.reflect();
38690 #else
38691       return ( sType == rhs.sType )
38692           && ( pNext == rhs.pNext )
38693           && ( samplerMirrorClampToEdge == rhs.samplerMirrorClampToEdge )
38694           && ( drawIndirectCount == rhs.drawIndirectCount )
38695           && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess )
38696           && ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess )
38697           && ( storagePushConstant8 == rhs.storagePushConstant8 )
38698           && ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics )
38699           && ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics )
38700           && ( shaderFloat16 == rhs.shaderFloat16 )
38701           && ( shaderInt8 == rhs.shaderInt8 )
38702           && ( descriptorIndexing == rhs.descriptorIndexing )
38703           && ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing )
38704           && ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing )
38705           && ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing )
38706           && ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing )
38707           && ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing )
38708           && ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing )
38709           && ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing )
38710           && ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing )
38711           && ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing )
38712           && ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing )
38713           && ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind )
38714           && ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind )
38715           && ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind )
38716           && ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind )
38717           && ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind )
38718           && ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind )
38719           && ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending )
38720           && ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound )
38721           && ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount )
38722           && ( runtimeDescriptorArray == rhs.runtimeDescriptorArray )
38723           && ( samplerFilterMinmax == rhs.samplerFilterMinmax )
38724           && ( scalarBlockLayout == rhs.scalarBlockLayout )
38725           && ( imagelessFramebuffer == rhs.imagelessFramebuffer )
38726           && ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout )
38727           && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes )
38728           && ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts )
38729           && ( hostQueryReset == rhs.hostQueryReset )
38730           && ( timelineSemaphore == rhs.timelineSemaphore )
38731           && ( bufferDeviceAddress == rhs.bufferDeviceAddress )
38732           && ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay )
38733           && ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice )
38734           && ( vulkanMemoryModel == rhs.vulkanMemoryModel )
38735           && ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope )
38736           && ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains )
38737           && ( shaderOutputViewportIndex == rhs.shaderOutputViewportIndex )
38738           && ( shaderOutputLayer == rhs.shaderOutputLayer )
38739           && ( subgroupBroadcastDynamicId == rhs.subgroupBroadcastDynamicId );
38740 #endif
38741     }
38742 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features38743     bool operator!=( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT
38744     {
38745       return !operator==( rhs );
38746     }
38747 #endif
38748 
38749     public:
38750     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Features;
38751     void * pNext = {};
38752     VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge = {};
38753     VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount = {};
38754     VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess = {};
38755     VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess = {};
38756     VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8 = {};
38757     VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics = {};
38758     VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics = {};
38759     VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16 = {};
38760     VULKAN_HPP_NAMESPACE::Bool32 shaderInt8 = {};
38761     VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing = {};
38762     VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing = {};
38763     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {};
38764     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing = {};
38765     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing = {};
38766     VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing = {};
38767     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing = {};
38768     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing = {};
38769     VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing = {};
38770     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing = {};
38771     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing = {};
38772     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind = {};
38773     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind = {};
38774     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind = {};
38775     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind = {};
38776     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind = {};
38777     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind = {};
38778     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending = {};
38779     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound = {};
38780     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount = {};
38781     VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray = {};
38782     VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax = {};
38783     VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout = {};
38784     VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer = {};
38785     VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout = {};
38786     VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes = {};
38787     VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts = {};
38788     VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset = {};
38789     VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore = {};
38790     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {};
38791     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {};
38792     VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice = {};
38793     VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel = {};
38794     VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope = {};
38795     VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains = {};
38796     VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex = {};
38797     VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer = {};
38798     VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId = {};
38799 
38800   };
38801 
38802   template <>
38803   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan12Features>
38804   {
38805     using Type = PhysicalDeviceVulkan12Features;
38806   };
38807 
38808   struct PhysicalDeviceVulkan12Properties
38809   {
38810     using NativeType = VkPhysicalDeviceVulkan12Properties;
38811 
38812     static const bool allowDuplicate = false;
38813     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Properties;
38814 
38815 
38816 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties38817 VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties(VULKAN_HPP_NAMESPACE::DriverId driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary, std::array<char,VK_MAX_DRIVER_NAME_SIZE> const & driverName_ = {}, std::array<char,VK_MAX_DRIVER_INFO_SIZE> const & driverInfo_ = {}, VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion_ = {}, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64_ = {}, uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindSamplers_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {}, uint32_t maxPerStageUpdateAfterBindResources_ = {}, uint32_t maxDescriptorSetUpdateAfterBindSamplers_ = {}, uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers_ = {}, uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {}, uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers_ = {}, uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {}, uint32_t maxDescriptorSetUpdateAfterBindSampledImages_ = {}, uint32_t maxDescriptorSetUpdateAfterBindStorageImages_ = {}, uint32_t maxDescriptorSetUpdateAfterBindInputAttachments_ = {}, VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_ = {}, VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentResolve_ = {}, VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {}, VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_ = {}, uint64_t maxTimelineSemaphoreValueDifference_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferIntegerColorSampleCounts_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
38818     : pNext( pNext_ ), driverID( driverID_ ), driverName( driverName_ ), driverInfo( driverInfo_ ), conformanceVersion( conformanceVersion_ ), denormBehaviorIndependence( denormBehaviorIndependence_ ), roundingModeIndependence( roundingModeIndependence_ ), shaderSignedZeroInfNanPreserveFloat16( shaderSignedZeroInfNanPreserveFloat16_ ), shaderSignedZeroInfNanPreserveFloat32( shaderSignedZeroInfNanPreserveFloat32_ ), shaderSignedZeroInfNanPreserveFloat64( shaderSignedZeroInfNanPreserveFloat64_ ), shaderDenormPreserveFloat16( shaderDenormPreserveFloat16_ ), shaderDenormPreserveFloat32( shaderDenormPreserveFloat32_ ), shaderDenormPreserveFloat64( shaderDenormPreserveFloat64_ ), shaderDenormFlushToZeroFloat16( shaderDenormFlushToZeroFloat16_ ), shaderDenormFlushToZeroFloat32( shaderDenormFlushToZeroFloat32_ ), shaderDenormFlushToZeroFloat64( shaderDenormFlushToZeroFloat64_ ), shaderRoundingModeRTEFloat16( shaderRoundingModeRTEFloat16_ ), shaderRoundingModeRTEFloat32( shaderRoundingModeRTEFloat32_ ), shaderRoundingModeRTEFloat64( shaderRoundingModeRTEFloat64_ ), shaderRoundingModeRTZFloat16( shaderRoundingModeRTZFloat16_ ), shaderRoundingModeRTZFloat32( shaderRoundingModeRTZFloat32_ ), shaderRoundingModeRTZFloat64( shaderRoundingModeRTZFloat64_ ), maxUpdateAfterBindDescriptorsInAllPools( maxUpdateAfterBindDescriptorsInAllPools_ ), shaderUniformBufferArrayNonUniformIndexingNative( shaderUniformBufferArrayNonUniformIndexingNative_ ), shaderSampledImageArrayNonUniformIndexingNative( shaderSampledImageArrayNonUniformIndexingNative_ ), shaderStorageBufferArrayNonUniformIndexingNative( shaderStorageBufferArrayNonUniformIndexingNative_ ), shaderStorageImageArrayNonUniformIndexingNative( shaderStorageImageArrayNonUniformIndexingNative_ ), shaderInputAttachmentArrayNonUniformIndexingNative( shaderInputAttachmentArrayNonUniformIndexingNative_ ), robustBufferAccessUpdateAfterBind( robustBufferAccessUpdateAfterBind_ ), quadDivergentImplicitLod( quadDivergentImplicitLod_ ), maxPerStageDescriptorUpdateAfterBindSamplers( maxPerStageDescriptorUpdateAfterBindSamplers_ ), maxPerStageDescriptorUpdateAfterBindUniformBuffers( maxPerStageDescriptorUpdateAfterBindUniformBuffers_ ), maxPerStageDescriptorUpdateAfterBindStorageBuffers( maxPerStageDescriptorUpdateAfterBindStorageBuffers_ ), maxPerStageDescriptorUpdateAfterBindSampledImages( maxPerStageDescriptorUpdateAfterBindSampledImages_ ), maxPerStageDescriptorUpdateAfterBindStorageImages( maxPerStageDescriptorUpdateAfterBindStorageImages_ ), maxPerStageDescriptorUpdateAfterBindInputAttachments( maxPerStageDescriptorUpdateAfterBindInputAttachments_ ), maxPerStageUpdateAfterBindResources( maxPerStageUpdateAfterBindResources_ ), maxDescriptorSetUpdateAfterBindSamplers( maxDescriptorSetUpdateAfterBindSamplers_ ), maxDescriptorSetUpdateAfterBindUniformBuffers( maxDescriptorSetUpdateAfterBindUniformBuffers_ ), maxDescriptorSetUpdateAfterBindUniformBuffersDynamic( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ ), maxDescriptorSetUpdateAfterBindStorageBuffers( maxDescriptorSetUpdateAfterBindStorageBuffers_ ), maxDescriptorSetUpdateAfterBindStorageBuffersDynamic( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ ), maxDescriptorSetUpdateAfterBindSampledImages( maxDescriptorSetUpdateAfterBindSampledImages_ ), maxDescriptorSetUpdateAfterBindStorageImages( maxDescriptorSetUpdateAfterBindStorageImages_ ), maxDescriptorSetUpdateAfterBindInputAttachments( maxDescriptorSetUpdateAfterBindInputAttachments_ ), supportedDepthResolveModes( supportedDepthResolveModes_ ), supportedStencilResolveModes( supportedStencilResolveModes_ ), independentResolveNone( independentResolveNone_ ), independentResolve( independentResolve_ ), filterMinmaxSingleComponentFormats( filterMinmaxSingleComponentFormats_ ), filterMinmaxImageComponentMapping( filterMinmaxImageComponentMapping_ ), maxTimelineSemaphoreValueDifference( maxTimelineSemaphoreValueDifference_ ), framebufferIntegerColorSampleCounts( framebufferIntegerColorSampleCounts_ )
38819     {}
38820 
38821     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38822 
PhysicalDeviceVulkan12PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties38823     PhysicalDeviceVulkan12Properties( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
38824       : PhysicalDeviceVulkan12Properties( *reinterpret_cast<PhysicalDeviceVulkan12Properties const *>( &rhs ) )
38825     {}
38826 
38827 
38828     PhysicalDeviceVulkan12Properties & operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
38829 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
38830 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties38831     PhysicalDeviceVulkan12Properties & operator=( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT
38832     {
38833       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties const *>( &rhs );
38834       return *this;
38835     }
38836 
38837 
operator VkPhysicalDeviceVulkan12Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties38838     operator VkPhysicalDeviceVulkan12Properties const &() const VULKAN_HPP_NOEXCEPT
38839     {
38840       return *reinterpret_cast<const VkPhysicalDeviceVulkan12Properties*>( this );
38841     }
38842 
operator VkPhysicalDeviceVulkan12Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties38843     operator VkPhysicalDeviceVulkan12Properties &() VULKAN_HPP_NOEXCEPT
38844     {
38845       return *reinterpret_cast<VkPhysicalDeviceVulkan12Properties*>( this );
38846     }
38847 
38848 #if defined( VULKAN_HPP_USE_REFLECT )
38849 #if 14 <= VULKAN_HPP_CPP_VERSION
38850     auto
38851 #else
38852     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DriverId const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> const &, VULKAN_HPP_NAMESPACE::ConformanceVersion const &, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ResolveModeFlags const &, VULKAN_HPP_NAMESPACE::ResolveModeFlags const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, uint64_t const &, VULKAN_HPP_NAMESPACE::SampleCountFlags const &>
38853 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties38854       reflect() const VULKAN_HPP_NOEXCEPT
38855     {
38856       return std::tie( sType, pNext, driverID, driverName, driverInfo, conformanceVersion, denormBehaviorIndependence, roundingModeIndependence, shaderSignedZeroInfNanPreserveFloat16, shaderSignedZeroInfNanPreserveFloat32, shaderSignedZeroInfNanPreserveFloat64, shaderDenormPreserveFloat16, shaderDenormPreserveFloat32, shaderDenormPreserveFloat64, shaderDenormFlushToZeroFloat16, shaderDenormFlushToZeroFloat32, shaderDenormFlushToZeroFloat64, shaderRoundingModeRTEFloat16, shaderRoundingModeRTEFloat32, shaderRoundingModeRTEFloat64, shaderRoundingModeRTZFloat16, shaderRoundingModeRTZFloat32, shaderRoundingModeRTZFloat64, maxUpdateAfterBindDescriptorsInAllPools, shaderUniformBufferArrayNonUniformIndexingNative, shaderSampledImageArrayNonUniformIndexingNative, shaderStorageBufferArrayNonUniformIndexingNative, shaderStorageImageArrayNonUniformIndexingNative, shaderInputAttachmentArrayNonUniformIndexingNative, robustBufferAccessUpdateAfterBind, quadDivergentImplicitLod, maxPerStageDescriptorUpdateAfterBindSamplers, maxPerStageDescriptorUpdateAfterBindUniformBuffers, maxPerStageDescriptorUpdateAfterBindStorageBuffers, maxPerStageDescriptorUpdateAfterBindSampledImages, maxPerStageDescriptorUpdateAfterBindStorageImages, maxPerStageDescriptorUpdateAfterBindInputAttachments, maxPerStageUpdateAfterBindResources, maxDescriptorSetUpdateAfterBindSamplers, maxDescriptorSetUpdateAfterBindUniformBuffers, maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, maxDescriptorSetUpdateAfterBindStorageBuffers, maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, maxDescriptorSetUpdateAfterBindSampledImages, maxDescriptorSetUpdateAfterBindStorageImages, maxDescriptorSetUpdateAfterBindInputAttachments, supportedDepthResolveModes, supportedStencilResolveModes, independentResolveNone, independentResolve, filterMinmaxSingleComponentFormats, filterMinmaxImageComponentMapping, maxTimelineSemaphoreValueDifference, framebufferIntegerColorSampleCounts );
38857     }
38858 #endif
38859 
38860 
38861 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
38862 auto operator<=>( PhysicalDeviceVulkan12Properties const & ) const = default;
38863 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties38864     bool operator==( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
38865     {
38866 #if defined( VULKAN_HPP_USE_REFLECT )
38867       return this->reflect() == rhs.reflect();
38868 #else
38869       return ( sType == rhs.sType )
38870           && ( pNext == rhs.pNext )
38871           && ( driverID == rhs.driverID )
38872           && ( driverName == rhs.driverName )
38873           && ( driverInfo == rhs.driverInfo )
38874           && ( conformanceVersion == rhs.conformanceVersion )
38875           && ( denormBehaviorIndependence == rhs.denormBehaviorIndependence )
38876           && ( roundingModeIndependence == rhs.roundingModeIndependence )
38877           && ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 )
38878           && ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 )
38879           && ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 )
38880           && ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 )
38881           && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 )
38882           && ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 )
38883           && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 )
38884           && ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 )
38885           && ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 )
38886           && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 )
38887           && ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 )
38888           && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 )
38889           && ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 )
38890           && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 )
38891           && ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 )
38892           && ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools )
38893           && ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative )
38894           && ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative )
38895           && ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative )
38896           && ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative )
38897           && ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative )
38898           && ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind )
38899           && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod )
38900           && ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers )
38901           && ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers )
38902           && ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers )
38903           && ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages )
38904           && ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages )
38905           && ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments )
38906           && ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources )
38907           && ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers )
38908           && ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers )
38909           && ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic )
38910           && ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers )
38911           && ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic )
38912           && ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages )
38913           && ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages )
38914           && ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments )
38915           && ( supportedDepthResolveModes == rhs.supportedDepthResolveModes )
38916           && ( supportedStencilResolveModes == rhs.supportedStencilResolveModes )
38917           && ( independentResolveNone == rhs.independentResolveNone )
38918           && ( independentResolve == rhs.independentResolve )
38919           && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
38920           && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping )
38921           && ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference )
38922           && ( framebufferIntegerColorSampleCounts == rhs.framebufferIntegerColorSampleCounts );
38923 #endif
38924     }
38925 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties38926     bool operator!=( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
38927     {
38928       return !operator==( rhs );
38929     }
38930 #endif
38931 
38932     public:
38933     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Properties;
38934     void * pNext = {};
38935     VULKAN_HPP_NAMESPACE::DriverId driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary;
38936     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_NAME_SIZE> driverName = {};
38937     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<char, VK_MAX_DRIVER_INFO_SIZE> driverInfo = {};
38938     VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion = {};
38939     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
38940     VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly;
38941     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16 = {};
38942     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32 = {};
38943     VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64 = {};
38944     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16 = {};
38945     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32 = {};
38946     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64 = {};
38947     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16 = {};
38948     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32 = {};
38949     VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64 = {};
38950     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16 = {};
38951     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32 = {};
38952     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64 = {};
38953     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16 = {};
38954     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32 = {};
38955     VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64 = {};
38956     uint32_t maxUpdateAfterBindDescriptorsInAllPools = {};
38957     VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {};
38958     VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative = {};
38959     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative = {};
38960     VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative = {};
38961     VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative = {};
38962     VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind = {};
38963     VULKAN_HPP_NAMESPACE::Bool32 quadDivergentImplicitLod = {};
38964     uint32_t maxPerStageDescriptorUpdateAfterBindSamplers = {};
38965     uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers = {};
38966     uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers = {};
38967     uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages = {};
38968     uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages = {};
38969     uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments = {};
38970     uint32_t maxPerStageUpdateAfterBindResources = {};
38971     uint32_t maxDescriptorSetUpdateAfterBindSamplers = {};
38972     uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers = {};
38973     uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {};
38974     uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers = {};
38975     uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {};
38976     uint32_t maxDescriptorSetUpdateAfterBindSampledImages = {};
38977     uint32_t maxDescriptorSetUpdateAfterBindStorageImages = {};
38978     uint32_t maxDescriptorSetUpdateAfterBindInputAttachments = {};
38979     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes = {};
38980     VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {};
38981     VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone = {};
38982     VULKAN_HPP_NAMESPACE::Bool32 independentResolve = {};
38983     VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats = {};
38984     VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping = {};
38985     uint64_t maxTimelineSemaphoreValueDifference = {};
38986     VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferIntegerColorSampleCounts = {};
38987 
38988   };
38989 
38990   template <>
38991   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan12Properties>
38992   {
38993     using Type = PhysicalDeviceVulkan12Properties;
38994   };
38995 
38996   struct PhysicalDeviceVulkan13Features
38997   {
38998     using NativeType = VkPhysicalDeviceVulkan13Features;
38999 
39000     static const bool allowDuplicate = false;
39001     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan13Features;
39002 
39003 
39004 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan13FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39005 VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features(VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ = {}, VULKAN_HPP_NAMESPACE::Bool32 privateData_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ = {}, VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ = {}, VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ = {}, VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ = {}, VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ = {}, VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
39006     : pNext( pNext_ ), robustImageAccess( robustImageAccess_ ), inlineUniformBlock( inlineUniformBlock_ ), descriptorBindingInlineUniformBlockUpdateAfterBind( descriptorBindingInlineUniformBlockUpdateAfterBind_ ), pipelineCreationCacheControl( pipelineCreationCacheControl_ ), privateData( privateData_ ), shaderDemoteToHelperInvocation( shaderDemoteToHelperInvocation_ ), shaderTerminateInvocation( shaderTerminateInvocation_ ), subgroupSizeControl( subgroupSizeControl_ ), computeFullSubgroups( computeFullSubgroups_ ), synchronization2( synchronization2_ ), textureCompressionASTC_HDR( textureCompressionASTC_HDR_ ), shaderZeroInitializeWorkgroupMemory( shaderZeroInitializeWorkgroupMemory_ ), dynamicRendering( dynamicRendering_ ), shaderIntegerDotProduct( shaderIntegerDotProduct_ ), maintenance4( maintenance4_ )
39007     {}
39008 
39009     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39010 
PhysicalDeviceVulkan13FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39011     PhysicalDeviceVulkan13Features( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT
39012       : PhysicalDeviceVulkan13Features( *reinterpret_cast<PhysicalDeviceVulkan13Features const *>( &rhs ) )
39013     {}
39014 
39015 
39016     PhysicalDeviceVulkan13Features & operator=( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39017 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39018 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39019     PhysicalDeviceVulkan13Features & operator=( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT
39020     {
39021       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features const *>( &rhs );
39022       return *this;
39023     }
39024 
39025 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39026     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
39027     {
39028       pNext = pNext_;
39029       return *this;
39030     }
39031 
setRobustImageAccessVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39032     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT
39033     {
39034       robustImageAccess = robustImageAccess_;
39035       return *this;
39036     }
39037 
setInlineUniformBlockVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39038     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT
39039     {
39040       inlineUniformBlock = inlineUniformBlock_;
39041       return *this;
39042     }
39043 
setDescriptorBindingInlineUniformBlockUpdateAfterBindVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39044     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setDescriptorBindingInlineUniformBlockUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT
39045     {
39046       descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_;
39047       return *this;
39048     }
39049 
setPipelineCreationCacheControlVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39050     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT
39051     {
39052       pipelineCreationCacheControl = pipelineCreationCacheControl_;
39053       return *this;
39054     }
39055 
setPrivateDataVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39056     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT
39057     {
39058       privateData = privateData_;
39059       return *this;
39060     }
39061 
setShaderDemoteToHelperInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39062     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderDemoteToHelperInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT
39063     {
39064       shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_;
39065       return *this;
39066     }
39067 
setShaderTerminateInvocationVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39068     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT
39069     {
39070       shaderTerminateInvocation = shaderTerminateInvocation_;
39071       return *this;
39072     }
39073 
setSubgroupSizeControlVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39074     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT
39075     {
39076       subgroupSizeControl = subgroupSizeControl_;
39077       return *this;
39078     }
39079 
setComputeFullSubgroupsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39080     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT
39081     {
39082       computeFullSubgroups = computeFullSubgroups_;
39083       return *this;
39084     }
39085 
setSynchronization2VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39086     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT
39087     {
39088       synchronization2 = synchronization2_;
39089       return *this;
39090     }
39091 
setTextureCompressionASTC_HDRVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39092     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT
39093     {
39094       textureCompressionASTC_HDR = textureCompressionASTC_HDR_;
39095       return *this;
39096     }
39097 
setShaderZeroInitializeWorkgroupMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39098     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) VULKAN_HPP_NOEXCEPT
39099     {
39100       shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_;
39101       return *this;
39102     }
39103 
setDynamicRenderingVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39104     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setDynamicRendering( VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering_ ) VULKAN_HPP_NOEXCEPT
39105     {
39106       dynamicRendering = dynamicRendering_;
39107       return *this;
39108     }
39109 
setShaderIntegerDotProductVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39110     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderIntegerDotProduct( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct_ ) VULKAN_HPP_NOEXCEPT
39111     {
39112       shaderIntegerDotProduct = shaderIntegerDotProduct_;
39113       return *this;
39114     }
39115 
setMaintenance4VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39116     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setMaintenance4( VULKAN_HPP_NAMESPACE::Bool32 maintenance4_ ) VULKAN_HPP_NOEXCEPT
39117     {
39118       maintenance4 = maintenance4_;
39119       return *this;
39120     }
39121 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39122 
39123 
operator VkPhysicalDeviceVulkan13Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39124     operator VkPhysicalDeviceVulkan13Features const &() const VULKAN_HPP_NOEXCEPT
39125     {
39126       return *reinterpret_cast<const VkPhysicalDeviceVulkan13Features*>( this );
39127     }
39128 
operator VkPhysicalDeviceVulkan13Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39129     operator VkPhysicalDeviceVulkan13Features &() VULKAN_HPP_NOEXCEPT
39130     {
39131       return *reinterpret_cast<VkPhysicalDeviceVulkan13Features*>( this );
39132     }
39133 
39134 #if defined( VULKAN_HPP_USE_REFLECT )
39135 #if 14 <= VULKAN_HPP_CPP_VERSION
39136     auto
39137 #else
39138     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
39139 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39140       reflect() const VULKAN_HPP_NOEXCEPT
39141     {
39142       return std::tie( sType, pNext, robustImageAccess, inlineUniformBlock, descriptorBindingInlineUniformBlockUpdateAfterBind, pipelineCreationCacheControl, privateData, shaderDemoteToHelperInvocation, shaderTerminateInvocation, subgroupSizeControl, computeFullSubgroups, synchronization2, textureCompressionASTC_HDR, shaderZeroInitializeWorkgroupMemory, dynamicRendering, shaderIntegerDotProduct, maintenance4 );
39143     }
39144 #endif
39145 
39146 
39147 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
39148 auto operator<=>( PhysicalDeviceVulkan13Features const & ) const = default;
39149 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39150     bool operator==( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT
39151     {
39152 #if defined( VULKAN_HPP_USE_REFLECT )
39153       return this->reflect() == rhs.reflect();
39154 #else
39155       return ( sType == rhs.sType )
39156           && ( pNext == rhs.pNext )
39157           && ( robustImageAccess == rhs.robustImageAccess )
39158           && ( inlineUniformBlock == rhs.inlineUniformBlock )
39159           && ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind )
39160           && ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl )
39161           && ( privateData == rhs.privateData )
39162           && ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation )
39163           && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation )
39164           && ( subgroupSizeControl == rhs.subgroupSizeControl )
39165           && ( computeFullSubgroups == rhs.computeFullSubgroups )
39166           && ( synchronization2 == rhs.synchronization2 )
39167           && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR )
39168           && ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory )
39169           && ( dynamicRendering == rhs.dynamicRendering )
39170           && ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct )
39171           && ( maintenance4 == rhs.maintenance4 );
39172 #endif
39173     }
39174 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features39175     bool operator!=( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT
39176     {
39177       return !operator==( rhs );
39178     }
39179 #endif
39180 
39181     public:
39182     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan13Features;
39183     void * pNext = {};
39184     VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess = {};
39185     VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock = {};
39186     VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind = {};
39187     VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl = {};
39188     VULKAN_HPP_NAMESPACE::Bool32 privateData = {};
39189     VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation = {};
39190     VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation = {};
39191     VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl = {};
39192     VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups = {};
39193     VULKAN_HPP_NAMESPACE::Bool32 synchronization2 = {};
39194     VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR = {};
39195     VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory = {};
39196     VULKAN_HPP_NAMESPACE::Bool32 dynamicRendering = {};
39197     VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerDotProduct = {};
39198     VULKAN_HPP_NAMESPACE::Bool32 maintenance4 = {};
39199 
39200   };
39201 
39202   template <>
39203   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan13Features>
39204   {
39205     using Type = PhysicalDeviceVulkan13Features;
39206   };
39207 
39208   struct PhysicalDeviceVulkan13Properties
39209   {
39210     using NativeType = VkPhysicalDeviceVulkan13Properties;
39211 
39212     static const bool allowDuplicate = false;
39213     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan13Properties;
39214 
39215 
39216 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkan13PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties39217 VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Properties(uint32_t minSubgroupSize_ = {}, uint32_t maxSubgroupSize_ = {}, uint32_t maxComputeWorkgroupSubgroups_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_ = {}, uint32_t maxInlineUniformBlockSize_ = {}, uint32_t maxPerStageDescriptorInlineUniformBlocks_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {}, uint32_t maxDescriptorSetInlineUniformBlocks_ = {}, uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ = {}, uint32_t maxInlineUniformTotalSize_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_ = {}, VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
39218     : pNext( pNext_ ), minSubgroupSize( minSubgroupSize_ ), maxSubgroupSize( maxSubgroupSize_ ), maxComputeWorkgroupSubgroups( maxComputeWorkgroupSubgroups_ ), requiredSubgroupSizeStages( requiredSubgroupSizeStages_ ), maxInlineUniformBlockSize( maxInlineUniformBlockSize_ ), maxPerStageDescriptorInlineUniformBlocks( maxPerStageDescriptorInlineUniformBlocks_ ), maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ ), maxDescriptorSetInlineUniformBlocks( maxDescriptorSetInlineUniformBlocks_ ), maxDescriptorSetUpdateAfterBindInlineUniformBlocks( maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ ), maxInlineUniformTotalSize( maxInlineUniformTotalSize_ ), integerDotProduct8BitUnsignedAccelerated( integerDotProduct8BitUnsignedAccelerated_ ), integerDotProduct8BitSignedAccelerated( integerDotProduct8BitSignedAccelerated_ ), integerDotProduct8BitMixedSignednessAccelerated( integerDotProduct8BitMixedSignednessAccelerated_ ), integerDotProduct4x8BitPackedUnsignedAccelerated( integerDotProduct4x8BitPackedUnsignedAccelerated_ ), integerDotProduct4x8BitPackedSignedAccelerated( integerDotProduct4x8BitPackedSignedAccelerated_ ), integerDotProduct4x8BitPackedMixedSignednessAccelerated( integerDotProduct4x8BitPackedMixedSignednessAccelerated_ ), integerDotProduct16BitUnsignedAccelerated( integerDotProduct16BitUnsignedAccelerated_ ), integerDotProduct16BitSignedAccelerated( integerDotProduct16BitSignedAccelerated_ ), integerDotProduct16BitMixedSignednessAccelerated( integerDotProduct16BitMixedSignednessAccelerated_ ), integerDotProduct32BitUnsignedAccelerated( integerDotProduct32BitUnsignedAccelerated_ ), integerDotProduct32BitSignedAccelerated( integerDotProduct32BitSignedAccelerated_ ), integerDotProduct32BitMixedSignednessAccelerated( integerDotProduct32BitMixedSignednessAccelerated_ ), integerDotProduct64BitUnsignedAccelerated( integerDotProduct64BitUnsignedAccelerated_ ), integerDotProduct64BitSignedAccelerated( integerDotProduct64BitSignedAccelerated_ ), integerDotProduct64BitMixedSignednessAccelerated( integerDotProduct64BitMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating8BitUnsignedAccelerated( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating8BitSignedAccelerated( integerDotProductAccumulatingSaturating8BitSignedAccelerated_ ), integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ ), integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating16BitUnsignedAccelerated( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating16BitSignedAccelerated( integerDotProductAccumulatingSaturating16BitSignedAccelerated_ ), integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating32BitUnsignedAccelerated( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating32BitSignedAccelerated( integerDotProductAccumulatingSaturating32BitSignedAccelerated_ ), integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ ), integerDotProductAccumulatingSaturating64BitUnsignedAccelerated( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ ), integerDotProductAccumulatingSaturating64BitSignedAccelerated( integerDotProductAccumulatingSaturating64BitSignedAccelerated_ ), integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ ), storageTexelBufferOffsetAlignmentBytes( storageTexelBufferOffsetAlignmentBytes_ ), storageTexelBufferOffsetSingleTexelAlignment( storageTexelBufferOffsetSingleTexelAlignment_ ), uniformTexelBufferOffsetAlignmentBytes( uniformTexelBufferOffsetAlignmentBytes_ ), uniformTexelBufferOffsetSingleTexelAlignment( uniformTexelBufferOffsetSingleTexelAlignment_ ), maxBufferSize( maxBufferSize_ )
39219     {}
39220 
39221     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Properties( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39222 
PhysicalDeviceVulkan13PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties39223     PhysicalDeviceVulkan13Properties( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT
39224       : PhysicalDeviceVulkan13Properties( *reinterpret_cast<PhysicalDeviceVulkan13Properties const *>( &rhs ) )
39225     {}
39226 
39227 
39228     PhysicalDeviceVulkan13Properties & operator=( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39229 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39230 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties39231     PhysicalDeviceVulkan13Properties & operator=( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT
39232     {
39233       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties const *>( &rhs );
39234       return *this;
39235     }
39236 
39237 
operator VkPhysicalDeviceVulkan13Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties39238     operator VkPhysicalDeviceVulkan13Properties const &() const VULKAN_HPP_NOEXCEPT
39239     {
39240       return *reinterpret_cast<const VkPhysicalDeviceVulkan13Properties*>( this );
39241     }
39242 
operator VkPhysicalDeviceVulkan13Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties39243     operator VkPhysicalDeviceVulkan13Properties &() VULKAN_HPP_NOEXCEPT
39244     {
39245       return *reinterpret_cast<VkPhysicalDeviceVulkan13Properties*>( this );
39246     }
39247 
39248 #if defined( VULKAN_HPP_USE_REFLECT )
39249 #if 14 <= VULKAN_HPP_CPP_VERSION
39250     auto
39251 #else
39252     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
39253 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties39254       reflect() const VULKAN_HPP_NOEXCEPT
39255     {
39256       return std::tie( sType, pNext, minSubgroupSize, maxSubgroupSize, maxComputeWorkgroupSubgroups, requiredSubgroupSizeStages, maxInlineUniformBlockSize, maxPerStageDescriptorInlineUniformBlocks, maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks, maxDescriptorSetInlineUniformBlocks, maxDescriptorSetUpdateAfterBindInlineUniformBlocks, maxInlineUniformTotalSize, integerDotProduct8BitUnsignedAccelerated, integerDotProduct8BitSignedAccelerated, integerDotProduct8BitMixedSignednessAccelerated, integerDotProduct4x8BitPackedUnsignedAccelerated, integerDotProduct4x8BitPackedSignedAccelerated, integerDotProduct4x8BitPackedMixedSignednessAccelerated, integerDotProduct16BitUnsignedAccelerated, integerDotProduct16BitSignedAccelerated, integerDotProduct16BitMixedSignednessAccelerated, integerDotProduct32BitUnsignedAccelerated, integerDotProduct32BitSignedAccelerated, integerDotProduct32BitMixedSignednessAccelerated, integerDotProduct64BitUnsignedAccelerated, integerDotProduct64BitSignedAccelerated, integerDotProduct64BitMixedSignednessAccelerated, integerDotProductAccumulatingSaturating8BitUnsignedAccelerated, integerDotProductAccumulatingSaturating8BitSignedAccelerated, integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated, integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated, integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated, integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated, integerDotProductAccumulatingSaturating16BitUnsignedAccelerated, integerDotProductAccumulatingSaturating16BitSignedAccelerated, integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated, integerDotProductAccumulatingSaturating32BitUnsignedAccelerated, integerDotProductAccumulatingSaturating32BitSignedAccelerated, integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated, integerDotProductAccumulatingSaturating64BitUnsignedAccelerated, integerDotProductAccumulatingSaturating64BitSignedAccelerated, integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated, storageTexelBufferOffsetAlignmentBytes, storageTexelBufferOffsetSingleTexelAlignment, uniformTexelBufferOffsetAlignmentBytes, uniformTexelBufferOffsetSingleTexelAlignment, maxBufferSize );
39257     }
39258 #endif
39259 
39260 
39261 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
39262 auto operator<=>( PhysicalDeviceVulkan13Properties const & ) const = default;
39263 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties39264     bool operator==( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
39265     {
39266 #if defined( VULKAN_HPP_USE_REFLECT )
39267       return this->reflect() == rhs.reflect();
39268 #else
39269       return ( sType == rhs.sType )
39270           && ( pNext == rhs.pNext )
39271           && ( minSubgroupSize == rhs.minSubgroupSize )
39272           && ( maxSubgroupSize == rhs.maxSubgroupSize )
39273           && ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups )
39274           && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages )
39275           && ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize )
39276           && ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks )
39277           && ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks )
39278           && ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks )
39279           && ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks )
39280           && ( maxInlineUniformTotalSize == rhs.maxInlineUniformTotalSize )
39281           && ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated )
39282           && ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated )
39283           && ( integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated )
39284           && ( integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated )
39285           && ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated )
39286           && ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated )
39287           && ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated )
39288           && ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated )
39289           && ( integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated )
39290           && ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated )
39291           && ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated )
39292           && ( integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated )
39293           && ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated )
39294           && ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated )
39295           && ( integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated )
39296           && ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated )
39297           && ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated )
39298           && ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated )
39299           && ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated )
39300           && ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated )
39301           && ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated )
39302           && ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated )
39303           && ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated )
39304           && ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated )
39305           && ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated )
39306           && ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated )
39307           && ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated )
39308           && ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated )
39309           && ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated )
39310           && ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated == rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated )
39311           && ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes )
39312           && ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment )
39313           && ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes )
39314           && ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment )
39315           && ( maxBufferSize == rhs.maxBufferSize );
39316 #endif
39317     }
39318 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties39319     bool operator!=( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
39320     {
39321       return !operator==( rhs );
39322     }
39323 #endif
39324 
39325     public:
39326     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan13Properties;
39327     void * pNext = {};
39328     uint32_t minSubgroupSize = {};
39329     uint32_t maxSubgroupSize = {};
39330     uint32_t maxComputeWorkgroupSubgroups = {};
39331     VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages = {};
39332     uint32_t maxInlineUniformBlockSize = {};
39333     uint32_t maxPerStageDescriptorInlineUniformBlocks = {};
39334     uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {};
39335     uint32_t maxDescriptorSetInlineUniformBlocks = {};
39336     uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks = {};
39337     uint32_t maxInlineUniformTotalSize = {};
39338     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitUnsignedAccelerated = {};
39339     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitSignedAccelerated = {};
39340     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct8BitMixedSignednessAccelerated = {};
39341     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated = {};
39342     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedSignedAccelerated = {};
39343     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated = {};
39344     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitUnsignedAccelerated = {};
39345     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitSignedAccelerated = {};
39346     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct16BitMixedSignednessAccelerated = {};
39347     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitUnsignedAccelerated = {};
39348     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitSignedAccelerated = {};
39349     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct32BitMixedSignednessAccelerated = {};
39350     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitUnsignedAccelerated = {};
39351     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitSignedAccelerated = {};
39352     VULKAN_HPP_NAMESPACE::Bool32 integerDotProduct64BitMixedSignednessAccelerated = {};
39353     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = {};
39354     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated = {};
39355     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = {};
39356     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = {};
39357     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = {};
39358     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {};
39359     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = {};
39360     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated = {};
39361     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = {};
39362     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = {};
39363     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated = {};
39364     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = {};
39365     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = {};
39366     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated = {};
39367     VULKAN_HPP_NAMESPACE::Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = {};
39368     VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes = {};
39369     VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment = {};
39370     VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes = {};
39371     VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment = {};
39372     VULKAN_HPP_NAMESPACE::DeviceSize maxBufferSize = {};
39373 
39374   };
39375 
39376   template <>
39377   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkan13Properties>
39378   {
39379     using Type = PhysicalDeviceVulkan13Properties;
39380   };
39381 
39382   struct PhysicalDeviceVulkanMemoryModelFeatures
39383   {
39384     using NativeType = VkPhysicalDeviceVulkanMemoryModelFeatures;
39385 
39386     static const bool allowDuplicate = false;
39387     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
39388 
39389 
39390 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkanMemoryModelFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39391 VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures(VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
39392     : pNext( pNext_ ), vulkanMemoryModel( vulkanMemoryModel_ ), vulkanMemoryModelDeviceScope( vulkanMemoryModelDeviceScope_ ), vulkanMemoryModelAvailabilityVisibilityChains( vulkanMemoryModelAvailabilityVisibilityChains_ )
39393     {}
39394 
39395     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39396 
PhysicalDeviceVulkanMemoryModelFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39397     PhysicalDeviceVulkanMemoryModelFeatures( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
39398       : PhysicalDeviceVulkanMemoryModelFeatures( *reinterpret_cast<PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs ) )
39399     {}
39400 
39401 
39402     PhysicalDeviceVulkanMemoryModelFeatures & operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39403 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39404 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39405     PhysicalDeviceVulkanMemoryModelFeatures & operator=( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
39406     {
39407       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures const *>( &rhs );
39408       return *this;
39409     }
39410 
39411 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39412     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
39413     {
39414       pNext = pNext_;
39415       return *this;
39416     }
39417 
setVulkanMemoryModelVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39418     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT
39419     {
39420       vulkanMemoryModel = vulkanMemoryModel_;
39421       return *this;
39422     }
39423 
setVulkanMemoryModelDeviceScopeVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39424     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT
39425     {
39426       vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_;
39427       return *this;
39428     }
39429 
setVulkanMemoryModelAvailabilityVisibilityChainsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39430     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModelAvailabilityVisibilityChains( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT
39431     {
39432       vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_;
39433       return *this;
39434     }
39435 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39436 
39437 
operator VkPhysicalDeviceVulkanMemoryModelFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39438     operator VkPhysicalDeviceVulkanMemoryModelFeatures const &() const VULKAN_HPP_NOEXCEPT
39439     {
39440       return *reinterpret_cast<const VkPhysicalDeviceVulkanMemoryModelFeatures*>( this );
39441     }
39442 
operator VkPhysicalDeviceVulkanMemoryModelFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39443     operator VkPhysicalDeviceVulkanMemoryModelFeatures &() VULKAN_HPP_NOEXCEPT
39444     {
39445       return *reinterpret_cast<VkPhysicalDeviceVulkanMemoryModelFeatures*>( this );
39446     }
39447 
39448 #if defined( VULKAN_HPP_USE_REFLECT )
39449 #if 14 <= VULKAN_HPP_CPP_VERSION
39450     auto
39451 #else
39452     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
39453 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39454       reflect() const VULKAN_HPP_NOEXCEPT
39455     {
39456       return std::tie( sType, pNext, vulkanMemoryModel, vulkanMemoryModelDeviceScope, vulkanMemoryModelAvailabilityVisibilityChains );
39457     }
39458 #endif
39459 
39460 
39461 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
39462 auto operator<=>( PhysicalDeviceVulkanMemoryModelFeatures const & ) const = default;
39463 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39464     bool operator==( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
39465     {
39466 #if defined( VULKAN_HPP_USE_REFLECT )
39467       return this->reflect() == rhs.reflect();
39468 #else
39469       return ( sType == rhs.sType )
39470           && ( pNext == rhs.pNext )
39471           && ( vulkanMemoryModel == rhs.vulkanMemoryModel )
39472           && ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope )
39473           && ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains );
39474 #endif
39475     }
39476 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures39477     bool operator!=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
39478     {
39479       return !operator==( rhs );
39480     }
39481 #endif
39482 
39483     public:
39484     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures;
39485     void * pNext = {};
39486     VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel = {};
39487     VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope = {};
39488     VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains = {};
39489 
39490   };
39491 
39492   template <>
39493   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkanMemoryModelFeatures>
39494   {
39495     using Type = PhysicalDeviceVulkanMemoryModelFeatures;
39496   };
39497   using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures;
39498 
39499   struct PhysicalDeviceVulkanSC10Features
39500   {
39501     using NativeType = VkPhysicalDeviceVulkanSC10Features;
39502 
39503     static const bool allowDuplicate = false;
39504     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkanSc10Features;
39505 
39506 
39507 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkanSC10FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39508 VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanSC10Features(VULKAN_HPP_NAMESPACE::Bool32 shaderAtomicInstructions_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
39509     : pNext( pNext_ ), shaderAtomicInstructions( shaderAtomicInstructions_ )
39510     {}
39511 
39512     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanSC10Features( PhysicalDeviceVulkanSC10Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39513 
PhysicalDeviceVulkanSC10FeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39514     PhysicalDeviceVulkanSC10Features( VkPhysicalDeviceVulkanSC10Features const & rhs ) VULKAN_HPP_NOEXCEPT
39515       : PhysicalDeviceVulkanSC10Features( *reinterpret_cast<PhysicalDeviceVulkanSC10Features const *>( &rhs ) )
39516     {}
39517 
39518 
39519     PhysicalDeviceVulkanSC10Features & operator=( PhysicalDeviceVulkanSC10Features const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39520 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39521 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39522     PhysicalDeviceVulkanSC10Features & operator=( VkPhysicalDeviceVulkanSC10Features const & rhs ) VULKAN_HPP_NOEXCEPT
39523     {
39524       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features const *>( &rhs );
39525       return *this;
39526     }
39527 
39528 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39529     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanSC10Features & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
39530     {
39531       pNext = pNext_;
39532       return *this;
39533     }
39534 
setShaderAtomicInstructionsVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39535     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanSC10Features & setShaderAtomicInstructions( VULKAN_HPP_NAMESPACE::Bool32 shaderAtomicInstructions_ ) VULKAN_HPP_NOEXCEPT
39536     {
39537       shaderAtomicInstructions = shaderAtomicInstructions_;
39538       return *this;
39539     }
39540 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39541 
39542 
operator VkPhysicalDeviceVulkanSC10Features const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39543     operator VkPhysicalDeviceVulkanSC10Features const &() const VULKAN_HPP_NOEXCEPT
39544     {
39545       return *reinterpret_cast<const VkPhysicalDeviceVulkanSC10Features*>( this );
39546     }
39547 
operator VkPhysicalDeviceVulkanSC10Features&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39548     operator VkPhysicalDeviceVulkanSC10Features &() VULKAN_HPP_NOEXCEPT
39549     {
39550       return *reinterpret_cast<VkPhysicalDeviceVulkanSC10Features*>( this );
39551     }
39552 
39553 #if defined( VULKAN_HPP_USE_REFLECT )
39554 #if 14 <= VULKAN_HPP_CPP_VERSION
39555     auto
39556 #else
39557     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
39558 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39559       reflect() const VULKAN_HPP_NOEXCEPT
39560     {
39561       return std::tie( sType, pNext, shaderAtomicInstructions );
39562     }
39563 #endif
39564 
39565 
39566 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
39567 auto operator<=>( PhysicalDeviceVulkanSC10Features const & ) const = default;
39568 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39569     bool operator==( PhysicalDeviceVulkanSC10Features const & rhs ) const VULKAN_HPP_NOEXCEPT
39570     {
39571 #if defined( VULKAN_HPP_USE_REFLECT )
39572       return this->reflect() == rhs.reflect();
39573 #else
39574       return ( sType == rhs.sType )
39575           && ( pNext == rhs.pNext )
39576           && ( shaderAtomicInstructions == rhs.shaderAtomicInstructions );
39577 #endif
39578     }
39579 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Features39580     bool operator!=( PhysicalDeviceVulkanSC10Features const & rhs ) const VULKAN_HPP_NOEXCEPT
39581     {
39582       return !operator==( rhs );
39583     }
39584 #endif
39585 
39586     public:
39587     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkanSc10Features;
39588     void * pNext = {};
39589     VULKAN_HPP_NAMESPACE::Bool32 shaderAtomicInstructions = {};
39590 
39591   };
39592 
39593   template <>
39594   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkanSc10Features>
39595   {
39596     using Type = PhysicalDeviceVulkanSC10Features;
39597   };
39598 
39599   struct PhysicalDeviceVulkanSC10Properties
39600   {
39601     using NativeType = VkPhysicalDeviceVulkanSC10Properties;
39602 
39603     static const bool allowDuplicate = false;
39604     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkanSc10Properties;
39605 
39606 
39607 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceVulkanSC10PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties39608 VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanSC10Properties(VULKAN_HPP_NAMESPACE::Bool32 deviceNoDynamicHostAllocations_ = {}, VULKAN_HPP_NAMESPACE::Bool32 deviceDestroyFreesMemory_ = {}, VULKAN_HPP_NAMESPACE::Bool32 commandPoolMultipleCommandBuffersRecording_ = {}, VULKAN_HPP_NAMESPACE::Bool32 commandPoolResetCommandBuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 commandBufferSimultaneousUse_ = {}, VULKAN_HPP_NAMESPACE::Bool32 secondaryCommandBufferNullOrImagelessFramebuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 recycleDescriptorSetMemory_ = {}, VULKAN_HPP_NAMESPACE::Bool32 recyclePipelineMemory_ = {}, uint32_t maxRenderPassSubpasses_ = {}, uint32_t maxRenderPassDependencies_ = {}, uint32_t maxSubpassInputAttachments_ = {}, uint32_t maxSubpassPreserveAttachments_ = {}, uint32_t maxFramebufferAttachments_ = {}, uint32_t maxDescriptorSetLayoutBindings_ = {}, uint32_t maxQueryFaultCount_ = {}, uint32_t maxCallbackFaultCount_ = {}, uint32_t maxCommandPoolCommandBuffers_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize maxCommandBufferSize_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
39609     : pNext( pNext_ ), deviceNoDynamicHostAllocations( deviceNoDynamicHostAllocations_ ), deviceDestroyFreesMemory( deviceDestroyFreesMemory_ ), commandPoolMultipleCommandBuffersRecording( commandPoolMultipleCommandBuffersRecording_ ), commandPoolResetCommandBuffer( commandPoolResetCommandBuffer_ ), commandBufferSimultaneousUse( commandBufferSimultaneousUse_ ), secondaryCommandBufferNullOrImagelessFramebuffer( secondaryCommandBufferNullOrImagelessFramebuffer_ ), recycleDescriptorSetMemory( recycleDescriptorSetMemory_ ), recyclePipelineMemory( recyclePipelineMemory_ ), maxRenderPassSubpasses( maxRenderPassSubpasses_ ), maxRenderPassDependencies( maxRenderPassDependencies_ ), maxSubpassInputAttachments( maxSubpassInputAttachments_ ), maxSubpassPreserveAttachments( maxSubpassPreserveAttachments_ ), maxFramebufferAttachments( maxFramebufferAttachments_ ), maxDescriptorSetLayoutBindings( maxDescriptorSetLayoutBindings_ ), maxQueryFaultCount( maxQueryFaultCount_ ), maxCallbackFaultCount( maxCallbackFaultCount_ ), maxCommandPoolCommandBuffers( maxCommandPoolCommandBuffers_ ), maxCommandBufferSize( maxCommandBufferSize_ )
39610     {}
39611 
39612     VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanSC10Properties( PhysicalDeviceVulkanSC10Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39613 
PhysicalDeviceVulkanSC10PropertiesVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties39614     PhysicalDeviceVulkanSC10Properties( VkPhysicalDeviceVulkanSC10Properties const & rhs ) VULKAN_HPP_NOEXCEPT
39615       : PhysicalDeviceVulkanSC10Properties( *reinterpret_cast<PhysicalDeviceVulkanSC10Properties const *>( &rhs ) )
39616     {}
39617 
39618 
39619     PhysicalDeviceVulkanSC10Properties & operator=( PhysicalDeviceVulkanSC10Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39620 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39621 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties39622     PhysicalDeviceVulkanSC10Properties & operator=( VkPhysicalDeviceVulkanSC10Properties const & rhs ) VULKAN_HPP_NOEXCEPT
39623     {
39624       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties const *>( &rhs );
39625       return *this;
39626     }
39627 
39628 
operator VkPhysicalDeviceVulkanSC10Properties const&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties39629     operator VkPhysicalDeviceVulkanSC10Properties const &() const VULKAN_HPP_NOEXCEPT
39630     {
39631       return *reinterpret_cast<const VkPhysicalDeviceVulkanSC10Properties*>( this );
39632     }
39633 
operator VkPhysicalDeviceVulkanSC10Properties&VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties39634     operator VkPhysicalDeviceVulkanSC10Properties &() VULKAN_HPP_NOEXCEPT
39635     {
39636       return *reinterpret_cast<VkPhysicalDeviceVulkanSC10Properties*>( this );
39637     }
39638 
39639 #if defined( VULKAN_HPP_USE_REFLECT )
39640 #if 14 <= VULKAN_HPP_CPP_VERSION
39641     auto
39642 #else
39643     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
39644 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties39645       reflect() const VULKAN_HPP_NOEXCEPT
39646     {
39647       return std::tie( sType, pNext, deviceNoDynamicHostAllocations, deviceDestroyFreesMemory, commandPoolMultipleCommandBuffersRecording, commandPoolResetCommandBuffer, commandBufferSimultaneousUse, secondaryCommandBufferNullOrImagelessFramebuffer, recycleDescriptorSetMemory, recyclePipelineMemory, maxRenderPassSubpasses, maxRenderPassDependencies, maxSubpassInputAttachments, maxSubpassPreserveAttachments, maxFramebufferAttachments, maxDescriptorSetLayoutBindings, maxQueryFaultCount, maxCallbackFaultCount, maxCommandPoolCommandBuffers, maxCommandBufferSize );
39648     }
39649 #endif
39650 
39651 
39652 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
39653 auto operator<=>( PhysicalDeviceVulkanSC10Properties const & ) const = default;
39654 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties39655     bool operator==( PhysicalDeviceVulkanSC10Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
39656     {
39657 #if defined( VULKAN_HPP_USE_REFLECT )
39658       return this->reflect() == rhs.reflect();
39659 #else
39660       return ( sType == rhs.sType )
39661           && ( pNext == rhs.pNext )
39662           && ( deviceNoDynamicHostAllocations == rhs.deviceNoDynamicHostAllocations )
39663           && ( deviceDestroyFreesMemory == rhs.deviceDestroyFreesMemory )
39664           && ( commandPoolMultipleCommandBuffersRecording == rhs.commandPoolMultipleCommandBuffersRecording )
39665           && ( commandPoolResetCommandBuffer == rhs.commandPoolResetCommandBuffer )
39666           && ( commandBufferSimultaneousUse == rhs.commandBufferSimultaneousUse )
39667           && ( secondaryCommandBufferNullOrImagelessFramebuffer == rhs.secondaryCommandBufferNullOrImagelessFramebuffer )
39668           && ( recycleDescriptorSetMemory == rhs.recycleDescriptorSetMemory )
39669           && ( recyclePipelineMemory == rhs.recyclePipelineMemory )
39670           && ( maxRenderPassSubpasses == rhs.maxRenderPassSubpasses )
39671           && ( maxRenderPassDependencies == rhs.maxRenderPassDependencies )
39672           && ( maxSubpassInputAttachments == rhs.maxSubpassInputAttachments )
39673           && ( maxSubpassPreserveAttachments == rhs.maxSubpassPreserveAttachments )
39674           && ( maxFramebufferAttachments == rhs.maxFramebufferAttachments )
39675           && ( maxDescriptorSetLayoutBindings == rhs.maxDescriptorSetLayoutBindings )
39676           && ( maxQueryFaultCount == rhs.maxQueryFaultCount )
39677           && ( maxCallbackFaultCount == rhs.maxCallbackFaultCount )
39678           && ( maxCommandPoolCommandBuffers == rhs.maxCommandPoolCommandBuffers )
39679           && ( maxCommandBufferSize == rhs.maxCommandBufferSize );
39680 #endif
39681     }
39682 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanSC10Properties39683     bool operator!=( PhysicalDeviceVulkanSC10Properties const & rhs ) const VULKAN_HPP_NOEXCEPT
39684     {
39685       return !operator==( rhs );
39686     }
39687 #endif
39688 
39689     public:
39690     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkanSc10Properties;
39691     void * pNext = {};
39692     VULKAN_HPP_NAMESPACE::Bool32 deviceNoDynamicHostAllocations = {};
39693     VULKAN_HPP_NAMESPACE::Bool32 deviceDestroyFreesMemory = {};
39694     VULKAN_HPP_NAMESPACE::Bool32 commandPoolMultipleCommandBuffersRecording = {};
39695     VULKAN_HPP_NAMESPACE::Bool32 commandPoolResetCommandBuffer = {};
39696     VULKAN_HPP_NAMESPACE::Bool32 commandBufferSimultaneousUse = {};
39697     VULKAN_HPP_NAMESPACE::Bool32 secondaryCommandBufferNullOrImagelessFramebuffer = {};
39698     VULKAN_HPP_NAMESPACE::Bool32 recycleDescriptorSetMemory = {};
39699     VULKAN_HPP_NAMESPACE::Bool32 recyclePipelineMemory = {};
39700     uint32_t maxRenderPassSubpasses = {};
39701     uint32_t maxRenderPassDependencies = {};
39702     uint32_t maxSubpassInputAttachments = {};
39703     uint32_t maxSubpassPreserveAttachments = {};
39704     uint32_t maxFramebufferAttachments = {};
39705     uint32_t maxDescriptorSetLayoutBindings = {};
39706     uint32_t maxQueryFaultCount = {};
39707     uint32_t maxCallbackFaultCount = {};
39708     uint32_t maxCommandPoolCommandBuffers = {};
39709     VULKAN_HPP_NAMESPACE::DeviceSize maxCommandBufferSize = {};
39710 
39711   };
39712 
39713   template <>
39714   struct CppType<StructureType, StructureType::ePhysicalDeviceVulkanSc10Properties>
39715   {
39716     using Type = PhysicalDeviceVulkanSC10Properties;
39717   };
39718 
39719   struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
39720   {
39721     using NativeType = VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
39722 
39723     static const bool allowDuplicate = false;
39724     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
39725 
39726 
39727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39728 VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
39729     : pNext( pNext_ ), ycbcr2plane444Formats( ycbcr2plane444Formats_ )
39730     {}
39731 
39732     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39733 
PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39734     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
39735       : PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( *reinterpret_cast<PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>( &rhs ) )
39736     {}
39737 
39738 
39739     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & operator=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39740 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39741 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39742     PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & operator=( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
39743     {
39744       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *>( &rhs );
39745       return *this;
39746     }
39747 
39748 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39749     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
39750     {
39751       pNext = pNext_;
39752       return *this;
39753     }
39754 
setYcbcr2plane444FormatsVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39755     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & setYcbcr2plane444Formats( VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats_ ) VULKAN_HPP_NOEXCEPT
39756     {
39757       ycbcr2plane444Formats = ycbcr2plane444Formats_;
39758       return *this;
39759     }
39760 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39761 
39762 
operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39763     operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
39764     {
39765       return *reinterpret_cast<const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>( this );
39766     }
39767 
operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39768     operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT
39769     {
39770       return *reinterpret_cast<VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*>( this );
39771     }
39772 
39773 #if defined( VULKAN_HPP_USE_REFLECT )
39774 #if 14 <= VULKAN_HPP_CPP_VERSION
39775     auto
39776 #else
39777     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
39778 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39779       reflect() const VULKAN_HPP_NOEXCEPT
39780     {
39781       return std::tie( sType, pNext, ycbcr2plane444Formats );
39782     }
39783 #endif
39784 
39785 
39786 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
39787 auto operator<=>( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & ) const = default;
39788 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39789     bool operator==( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
39790     {
39791 #if defined( VULKAN_HPP_USE_REFLECT )
39792       return this->reflect() == rhs.reflect();
39793 #else
39794       return ( sType == rhs.sType )
39795           && ( pNext == rhs.pNext )
39796           && ( ycbcr2plane444Formats == rhs.ycbcr2plane444Formats );
39797 #endif
39798     }
39799 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT39800     bool operator!=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
39801     {
39802       return !operator==( rhs );
39803     }
39804 #endif
39805 
39806     public:
39807     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
39808     void * pNext = {};
39809     VULKAN_HPP_NAMESPACE::Bool32 ycbcr2plane444Formats = {};
39810 
39811   };
39812 
39813   template <>
39814   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>
39815   {
39816     using Type = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
39817   };
39818 
39819   struct PhysicalDeviceYcbcrImageArraysFeaturesEXT
39820   {
39821     using NativeType = VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
39822 
39823     static const bool allowDuplicate = false;
39824     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
39825 
39826 
39827 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceYcbcrImageArraysFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39828 VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
39829     : pNext( pNext_ ), ycbcrImageArrays( ycbcrImageArrays_ )
39830     {}
39831 
39832     VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39833 
PhysicalDeviceYcbcrImageArraysFeaturesEXTVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39834     PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
39835       : PhysicalDeviceYcbcrImageArraysFeaturesEXT( *reinterpret_cast<PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs ) )
39836     {}
39837 
39838 
39839     PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39840 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39841 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39842     PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
39843     {
39844       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT const *>( &rhs );
39845       return *this;
39846     }
39847 
39848 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39849     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
39850     {
39851       pNext = pNext_;
39852       return *this;
39853     }
39854 
setYcbcrImageArraysVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39855     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & setYcbcrImageArrays( VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ ) VULKAN_HPP_NOEXCEPT
39856     {
39857       ycbcrImageArrays = ycbcrImageArrays_;
39858       return *this;
39859     }
39860 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39861 
39862 
operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39863     operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
39864     {
39865       return *reinterpret_cast<const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>( this );
39866     }
39867 
operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT&VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39868     operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &() VULKAN_HPP_NOEXCEPT
39869     {
39870       return *reinterpret_cast<VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*>( this );
39871     }
39872 
39873 #if defined( VULKAN_HPP_USE_REFLECT )
39874 #if 14 <= VULKAN_HPP_CPP_VERSION
39875     auto
39876 #else
39877     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
39878 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39879       reflect() const VULKAN_HPP_NOEXCEPT
39880     {
39881       return std::tie( sType, pNext, ycbcrImageArrays );
39882     }
39883 #endif
39884 
39885 
39886 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
39887 auto operator<=>( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & ) const = default;
39888 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39889     bool operator==( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
39890     {
39891 #if defined( VULKAN_HPP_USE_REFLECT )
39892       return this->reflect() == rhs.reflect();
39893 #else
39894       return ( sType == rhs.sType )
39895           && ( pNext == rhs.pNext )
39896           && ( ycbcrImageArrays == rhs.ycbcrImageArrays );
39897 #endif
39898     }
39899 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT39900     bool operator!=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
39901     {
39902       return !operator==( rhs );
39903     }
39904 #endif
39905 
39906     public:
39907     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT;
39908     void * pNext = {};
39909     VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays = {};
39910 
39911   };
39912 
39913   template <>
39914   struct CppType<StructureType, StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT>
39915   {
39916     using Type = PhysicalDeviceYcbcrImageArraysFeaturesEXT;
39917   };
39918 
39919   struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
39920   {
39921     using NativeType = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
39922 
39923     static const bool allowDuplicate = false;
39924     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
39925 
39926 
39927 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39928 VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
39929     : pNext( pNext_ ), shaderZeroInitializeWorkgroupMemory( shaderZeroInitializeWorkgroupMemory_ )
39930     {}
39931 
39932     VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39933 
PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39934     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
39935       : PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( *reinterpret_cast<PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const *>( &rhs ) )
39936     {}
39937 
39938 
39939     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & operator=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default;
39940 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
39941 
operator =VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39942     PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & operator=( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT
39943     {
39944       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const *>( &rhs );
39945       return *this;
39946     }
39947 
39948 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39949     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
39950     {
39951       pNext = pNext_;
39952       return *this;
39953     }
39954 
setShaderZeroInitializeWorkgroupMemoryVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39955     VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) VULKAN_HPP_NOEXCEPT
39956     {
39957       shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_;
39958       return *this;
39959     }
39960 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
39961 
39962 
operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const&VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39963     operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT
39964     {
39965       return *reinterpret_cast<const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures*>( this );
39966     }
39967 
operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures&VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39968     operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &() VULKAN_HPP_NOEXCEPT
39969     {
39970       return *reinterpret_cast<VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures*>( this );
39971     }
39972 
39973 #if defined( VULKAN_HPP_USE_REFLECT )
39974 #if 14 <= VULKAN_HPP_CPP_VERSION
39975     auto
39976 #else
39977     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
39978 #endif
reflectVULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39979       reflect() const VULKAN_HPP_NOEXCEPT
39980     {
39981       return std::tie( sType, pNext, shaderZeroInitializeWorkgroupMemory );
39982     }
39983 #endif
39984 
39985 
39986 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
39987 auto operator<=>( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & ) const = default;
39988 #else
operator ==VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures39989     bool operator==( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
39990     {
39991 #if defined( VULKAN_HPP_USE_REFLECT )
39992       return this->reflect() == rhs.reflect();
39993 #else
39994       return ( sType == rhs.sType )
39995           && ( pNext == rhs.pNext )
39996           && ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory );
39997 #endif
39998     }
39999 
operator !=VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures40000     bool operator!=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT
40001     {
40002       return !operator==( rhs );
40003     }
40004 #endif
40005 
40006     public:
40007     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
40008     void * pNext = {};
40009     VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory = {};
40010 
40011   };
40012 
40013   template <>
40014   struct CppType<StructureType, StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>
40015   {
40016     using Type = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
40017   };
40018   using PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
40019 
40020   struct PipelineCacheHeaderVersionOne
40021   {
40022     using NativeType = VkPipelineCacheHeaderVersionOne;
40023 
40024 
40025 
40026 
40027 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40028 VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne(uint32_t headerSize_ = {}, VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ = VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne, uint32_t vendorID_ = {}, uint32_t deviceID_ = {}, std::array<uint8_t,VK_UUID_SIZE> const & pipelineCacheUUID_ = {}) VULKAN_HPP_NOEXCEPT
40029     : headerSize( headerSize_ ), headerVersion( headerVersion_ ), vendorID( vendorID_ ), deviceID( deviceID_ ), pipelineCacheUUID( pipelineCacheUUID_ )
40030     {}
40031 
40032     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40033 
PipelineCacheHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40034     PipelineCacheHeaderVersionOne( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT
40035       : PipelineCacheHeaderVersionOne( *reinterpret_cast<PipelineCacheHeaderVersionOne const *>( &rhs ) )
40036     {}
40037 
40038 
40039     PipelineCacheHeaderVersionOne & operator=( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40040 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40041 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40042     PipelineCacheHeaderVersionOne & operator=( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT
40043     {
40044       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const *>( &rhs );
40045       return *this;
40046     }
40047 
40048 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setHeaderSizeVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40049     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setHeaderSize( uint32_t headerSize_ ) VULKAN_HPP_NOEXCEPT
40050     {
40051       headerSize = headerSize_;
40052       return *this;
40053     }
40054 
setHeaderVersionVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40055     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setHeaderVersion( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion_ ) VULKAN_HPP_NOEXCEPT
40056     {
40057       headerVersion = headerVersion_;
40058       return *this;
40059     }
40060 
setVendorIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40061     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setVendorID( uint32_t vendorID_ ) VULKAN_HPP_NOEXCEPT
40062     {
40063       vendorID = vendorID_;
40064       return *this;
40065     }
40066 
setDeviceIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40067     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setDeviceID( uint32_t deviceID_ ) VULKAN_HPP_NOEXCEPT
40068     {
40069       deviceID = deviceID_;
40070       return *this;
40071     }
40072 
setPipelineCacheUUIDVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40073     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setPipelineCacheUUID( std::array<uint8_t,VK_UUID_SIZE> pipelineCacheUUID_ ) VULKAN_HPP_NOEXCEPT
40074     {
40075       pipelineCacheUUID = pipelineCacheUUID_;
40076       return *this;
40077     }
40078 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40079 
40080 
operator VkPipelineCacheHeaderVersionOne const&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40081     operator VkPipelineCacheHeaderVersionOne const &() const VULKAN_HPP_NOEXCEPT
40082     {
40083       return *reinterpret_cast<const VkPipelineCacheHeaderVersionOne*>( this );
40084     }
40085 
operator VkPipelineCacheHeaderVersionOne&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40086     operator VkPipelineCacheHeaderVersionOne &() VULKAN_HPP_NOEXCEPT
40087     {
40088       return *reinterpret_cast<VkPipelineCacheHeaderVersionOne*>( this );
40089     }
40090 
40091 #if defined( VULKAN_HPP_USE_REFLECT )
40092 #if 14 <= VULKAN_HPP_CPP_VERSION
40093     auto
40094 #else
40095     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &>
40096 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40097       reflect() const VULKAN_HPP_NOEXCEPT
40098     {
40099       return std::tie( headerSize, headerVersion, vendorID, deviceID, pipelineCacheUUID );
40100     }
40101 #endif
40102 
40103 
40104 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
40105 auto operator<=>( PipelineCacheHeaderVersionOne const & ) const = default;
40106 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40107     bool operator==( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT
40108     {
40109 #if defined( VULKAN_HPP_USE_REFLECT )
40110       return this->reflect() == rhs.reflect();
40111 #else
40112       return ( headerSize == rhs.headerSize )
40113           && ( headerVersion == rhs.headerVersion )
40114           && ( vendorID == rhs.vendorID )
40115           && ( deviceID == rhs.deviceID )
40116           && ( pipelineCacheUUID == rhs.pipelineCacheUUID );
40117 #endif
40118     }
40119 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne40120     bool operator!=( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT
40121     {
40122       return !operator==( rhs );
40123     }
40124 #endif
40125 
40126     public:
40127     uint32_t headerSize = {};
40128     VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion headerVersion = VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersion::eOne;
40129     uint32_t vendorID = {};
40130     uint32_t deviceID = {};
40131     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineCacheUUID = {};
40132 
40133   };
40134 
40135   struct PipelineCacheHeaderVersionSafetyCriticalOne
40136   {
40137     using NativeType = VkPipelineCacheHeaderVersionSafetyCriticalOne;
40138 
40139 
40140 
40141 
40142 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheHeaderVersionSafetyCriticalOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40143 VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionSafetyCriticalOne(VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne headerVersionOne_ = {}, VULKAN_HPP_NAMESPACE::PipelineCacheValidationVersion validationVersion_ = VULKAN_HPP_NAMESPACE::PipelineCacheValidationVersion::eSafetyCriticalOne, uint32_t implementationData_ = {}, uint32_t pipelineIndexCount_ = {}, uint32_t pipelineIndexStride_ = {}, uint64_t pipelineIndexOffset_ = {}) VULKAN_HPP_NOEXCEPT
40144     : headerVersionOne( headerVersionOne_ ), validationVersion( validationVersion_ ), implementationData( implementationData_ ), pipelineIndexCount( pipelineIndexCount_ ), pipelineIndexStride( pipelineIndexStride_ ), pipelineIndexOffset( pipelineIndexOffset_ )
40145     {}
40146 
40147     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionSafetyCriticalOne( PipelineCacheHeaderVersionSafetyCriticalOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40148 
PipelineCacheHeaderVersionSafetyCriticalOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40149     PipelineCacheHeaderVersionSafetyCriticalOne( VkPipelineCacheHeaderVersionSafetyCriticalOne const & rhs ) VULKAN_HPP_NOEXCEPT
40150       : PipelineCacheHeaderVersionSafetyCriticalOne( *reinterpret_cast<PipelineCacheHeaderVersionSafetyCriticalOne const *>( &rhs ) )
40151     {}
40152 
40153 
40154     PipelineCacheHeaderVersionSafetyCriticalOne & operator=( PipelineCacheHeaderVersionSafetyCriticalOne const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40155 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40156 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40157     PipelineCacheHeaderVersionSafetyCriticalOne & operator=( VkPipelineCacheHeaderVersionSafetyCriticalOne const & rhs ) VULKAN_HPP_NOEXCEPT
40158     {
40159       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne const *>( &rhs );
40160       return *this;
40161     }
40162 
40163 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setHeaderVersionOneVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40164     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionSafetyCriticalOne & setHeaderVersionOne( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const & headerVersionOne_ ) VULKAN_HPP_NOEXCEPT
40165     {
40166       headerVersionOne = headerVersionOne_;
40167       return *this;
40168     }
40169 
setValidationVersionVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40170     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionSafetyCriticalOne & setValidationVersion( VULKAN_HPP_NAMESPACE::PipelineCacheValidationVersion validationVersion_ ) VULKAN_HPP_NOEXCEPT
40171     {
40172       validationVersion = validationVersion_;
40173       return *this;
40174     }
40175 
setImplementationDataVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40176     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionSafetyCriticalOne & setImplementationData( uint32_t implementationData_ ) VULKAN_HPP_NOEXCEPT
40177     {
40178       implementationData = implementationData_;
40179       return *this;
40180     }
40181 
setPipelineIndexCountVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40182     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionSafetyCriticalOne & setPipelineIndexCount( uint32_t pipelineIndexCount_ ) VULKAN_HPP_NOEXCEPT
40183     {
40184       pipelineIndexCount = pipelineIndexCount_;
40185       return *this;
40186     }
40187 
setPipelineIndexStrideVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40188     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionSafetyCriticalOne & setPipelineIndexStride( uint32_t pipelineIndexStride_ ) VULKAN_HPP_NOEXCEPT
40189     {
40190       pipelineIndexStride = pipelineIndexStride_;
40191       return *this;
40192     }
40193 
setPipelineIndexOffsetVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40194     VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionSafetyCriticalOne & setPipelineIndexOffset( uint64_t pipelineIndexOffset_ ) VULKAN_HPP_NOEXCEPT
40195     {
40196       pipelineIndexOffset = pipelineIndexOffset_;
40197       return *this;
40198     }
40199 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40200 
40201 
operator VkPipelineCacheHeaderVersionSafetyCriticalOne const&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40202     operator VkPipelineCacheHeaderVersionSafetyCriticalOne const &() const VULKAN_HPP_NOEXCEPT
40203     {
40204       return *reinterpret_cast<const VkPipelineCacheHeaderVersionSafetyCriticalOne*>( this );
40205     }
40206 
operator VkPipelineCacheHeaderVersionSafetyCriticalOne&VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40207     operator VkPipelineCacheHeaderVersionSafetyCriticalOne &() VULKAN_HPP_NOEXCEPT
40208     {
40209       return *reinterpret_cast<VkPipelineCacheHeaderVersionSafetyCriticalOne*>( this );
40210     }
40211 
40212 #if defined( VULKAN_HPP_USE_REFLECT )
40213 #if 14 <= VULKAN_HPP_CPP_VERSION
40214     auto
40215 #else
40216     std::tuple<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const &, VULKAN_HPP_NAMESPACE::PipelineCacheValidationVersion const &, uint32_t const &, uint32_t const &, uint32_t const &, uint64_t const &>
40217 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40218       reflect() const VULKAN_HPP_NOEXCEPT
40219     {
40220       return std::tie( headerVersionOne, validationVersion, implementationData, pipelineIndexCount, pipelineIndexStride, pipelineIndexOffset );
40221     }
40222 #endif
40223 
40224 
40225 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
40226 auto operator<=>( PipelineCacheHeaderVersionSafetyCriticalOne const & ) const = default;
40227 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40228     bool operator==( PipelineCacheHeaderVersionSafetyCriticalOne const & rhs ) const VULKAN_HPP_NOEXCEPT
40229     {
40230 #if defined( VULKAN_HPP_USE_REFLECT )
40231       return this->reflect() == rhs.reflect();
40232 #else
40233       return ( headerVersionOne == rhs.headerVersionOne )
40234           && ( validationVersion == rhs.validationVersion )
40235           && ( implementationData == rhs.implementationData )
40236           && ( pipelineIndexCount == rhs.pipelineIndexCount )
40237           && ( pipelineIndexStride == rhs.pipelineIndexStride )
40238           && ( pipelineIndexOffset == rhs.pipelineIndexOffset );
40239 #endif
40240     }
40241 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionSafetyCriticalOne40242     bool operator!=( PipelineCacheHeaderVersionSafetyCriticalOne const & rhs ) const VULKAN_HPP_NOEXCEPT
40243     {
40244       return !operator==( rhs );
40245     }
40246 #endif
40247 
40248     public:
40249     VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne headerVersionOne = {};
40250     VULKAN_HPP_NAMESPACE::PipelineCacheValidationVersion validationVersion = VULKAN_HPP_NAMESPACE::PipelineCacheValidationVersion::eSafetyCriticalOne;
40251     uint32_t implementationData = {};
40252     uint32_t pipelineIndexCount = {};
40253     uint32_t pipelineIndexStride = {};
40254     uint64_t pipelineIndexOffset = {};
40255 
40256   };
40257 
40258   struct PipelineCacheSafetyCriticalIndexEntry
40259   {
40260     using NativeType = VkPipelineCacheSafetyCriticalIndexEntry;
40261 
40262 
40263 
40264 
40265 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheSafetyCriticalIndexEntryVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40266 VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry(std::array<uint8_t,VK_UUID_SIZE> const & pipelineIdentifier_ = {}, uint64_t pipelineMemorySize_ = {}, uint64_t jsonSize_ = {}, uint64_t jsonOffset_ = {}, uint32_t stageIndexCount_ = {}, uint32_t stageIndexStride_ = {}, uint64_t stageIndexOffset_ = {}) VULKAN_HPP_NOEXCEPT
40267     : pipelineIdentifier( pipelineIdentifier_ ), pipelineMemorySize( pipelineMemorySize_ ), jsonSize( jsonSize_ ), jsonOffset( jsonOffset_ ), stageIndexCount( stageIndexCount_ ), stageIndexStride( stageIndexStride_ ), stageIndexOffset( stageIndexOffset_ )
40268     {}
40269 
40270     VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry( PipelineCacheSafetyCriticalIndexEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40271 
PipelineCacheSafetyCriticalIndexEntryVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40272     PipelineCacheSafetyCriticalIndexEntry( VkPipelineCacheSafetyCriticalIndexEntry const & rhs ) VULKAN_HPP_NOEXCEPT
40273       : PipelineCacheSafetyCriticalIndexEntry( *reinterpret_cast<PipelineCacheSafetyCriticalIndexEntry const *>( &rhs ) )
40274     {}
40275 
40276 
40277     PipelineCacheSafetyCriticalIndexEntry & operator=( PipelineCacheSafetyCriticalIndexEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40278 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40279 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40280     PipelineCacheSafetyCriticalIndexEntry & operator=( VkPipelineCacheSafetyCriticalIndexEntry const & rhs ) VULKAN_HPP_NOEXCEPT
40281     {
40282       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry const *>( &rhs );
40283       return *this;
40284     }
40285 
40286 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPipelineIdentifierVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40287     VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry & setPipelineIdentifier( std::array<uint8_t,VK_UUID_SIZE> pipelineIdentifier_ ) VULKAN_HPP_NOEXCEPT
40288     {
40289       pipelineIdentifier = pipelineIdentifier_;
40290       return *this;
40291     }
40292 
setPipelineMemorySizeVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40293     VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry & setPipelineMemorySize( uint64_t pipelineMemorySize_ ) VULKAN_HPP_NOEXCEPT
40294     {
40295       pipelineMemorySize = pipelineMemorySize_;
40296       return *this;
40297     }
40298 
setJsonSizeVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40299     VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry & setJsonSize( uint64_t jsonSize_ ) VULKAN_HPP_NOEXCEPT
40300     {
40301       jsonSize = jsonSize_;
40302       return *this;
40303     }
40304 
setJsonOffsetVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40305     VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry & setJsonOffset( uint64_t jsonOffset_ ) VULKAN_HPP_NOEXCEPT
40306     {
40307       jsonOffset = jsonOffset_;
40308       return *this;
40309     }
40310 
setStageIndexCountVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40311     VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry & setStageIndexCount( uint32_t stageIndexCount_ ) VULKAN_HPP_NOEXCEPT
40312     {
40313       stageIndexCount = stageIndexCount_;
40314       return *this;
40315     }
40316 
setStageIndexStrideVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40317     VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry & setStageIndexStride( uint32_t stageIndexStride_ ) VULKAN_HPP_NOEXCEPT
40318     {
40319       stageIndexStride = stageIndexStride_;
40320       return *this;
40321     }
40322 
setStageIndexOffsetVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40323     VULKAN_HPP_CONSTEXPR_14 PipelineCacheSafetyCriticalIndexEntry & setStageIndexOffset( uint64_t stageIndexOffset_ ) VULKAN_HPP_NOEXCEPT
40324     {
40325       stageIndexOffset = stageIndexOffset_;
40326       return *this;
40327     }
40328 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40329 
40330 
operator VkPipelineCacheSafetyCriticalIndexEntry const&VULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40331     operator VkPipelineCacheSafetyCriticalIndexEntry const &() const VULKAN_HPP_NOEXCEPT
40332     {
40333       return *reinterpret_cast<const VkPipelineCacheSafetyCriticalIndexEntry*>( this );
40334     }
40335 
operator VkPipelineCacheSafetyCriticalIndexEntry&VULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40336     operator VkPipelineCacheSafetyCriticalIndexEntry &() VULKAN_HPP_NOEXCEPT
40337     {
40338       return *reinterpret_cast<VkPipelineCacheSafetyCriticalIndexEntry*>( this );
40339     }
40340 
40341 #if defined( VULKAN_HPP_USE_REFLECT )
40342 #if 14 <= VULKAN_HPP_CPP_VERSION
40343     auto
40344 #else
40345     std::tuple<VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, uint64_t const &, uint64_t const &, uint64_t const &, uint32_t const &, uint32_t const &, uint64_t const &>
40346 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40347       reflect() const VULKAN_HPP_NOEXCEPT
40348     {
40349       return std::tie( pipelineIdentifier, pipelineMemorySize, jsonSize, jsonOffset, stageIndexCount, stageIndexStride, stageIndexOffset );
40350     }
40351 #endif
40352 
40353 
40354 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
40355 auto operator<=>( PipelineCacheSafetyCriticalIndexEntry const & ) const = default;
40356 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40357     bool operator==( PipelineCacheSafetyCriticalIndexEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
40358     {
40359 #if defined( VULKAN_HPP_USE_REFLECT )
40360       return this->reflect() == rhs.reflect();
40361 #else
40362       return ( pipelineIdentifier == rhs.pipelineIdentifier )
40363           && ( pipelineMemorySize == rhs.pipelineMemorySize )
40364           && ( jsonSize == rhs.jsonSize )
40365           && ( jsonOffset == rhs.jsonOffset )
40366           && ( stageIndexCount == rhs.stageIndexCount )
40367           && ( stageIndexStride == rhs.stageIndexStride )
40368           && ( stageIndexOffset == rhs.stageIndexOffset );
40369 #endif
40370     }
40371 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheSafetyCriticalIndexEntry40372     bool operator!=( PipelineCacheSafetyCriticalIndexEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
40373     {
40374       return !operator==( rhs );
40375     }
40376 #endif
40377 
40378     public:
40379     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineIdentifier = {};
40380     uint64_t pipelineMemorySize = {};
40381     uint64_t jsonSize = {};
40382     uint64_t jsonOffset = {};
40383     uint32_t stageIndexCount = {};
40384     uint32_t stageIndexStride = {};
40385     uint64_t stageIndexOffset = {};
40386 
40387   };
40388 
40389   struct PipelineCacheStageValidationIndexEntry
40390   {
40391     using NativeType = VkPipelineCacheStageValidationIndexEntry;
40392 
40393 
40394 
40395 
40396 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCacheStageValidationIndexEntryVULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40397 VULKAN_HPP_CONSTEXPR PipelineCacheStageValidationIndexEntry(uint64_t codeSize_ = {}, uint64_t codeOffset_ = {}) VULKAN_HPP_NOEXCEPT
40398     : codeSize( codeSize_ ), codeOffset( codeOffset_ )
40399     {}
40400 
40401     VULKAN_HPP_CONSTEXPR PipelineCacheStageValidationIndexEntry( PipelineCacheStageValidationIndexEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40402 
PipelineCacheStageValidationIndexEntryVULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40403     PipelineCacheStageValidationIndexEntry( VkPipelineCacheStageValidationIndexEntry const & rhs ) VULKAN_HPP_NOEXCEPT
40404       : PipelineCacheStageValidationIndexEntry( *reinterpret_cast<PipelineCacheStageValidationIndexEntry const *>( &rhs ) )
40405     {}
40406 
40407 
40408     PipelineCacheStageValidationIndexEntry & operator=( PipelineCacheStageValidationIndexEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40409 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40410 
operator =VULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40411     PipelineCacheStageValidationIndexEntry & operator=( VkPipelineCacheStageValidationIndexEntry const & rhs ) VULKAN_HPP_NOEXCEPT
40412     {
40413       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry const *>( &rhs );
40414       return *this;
40415     }
40416 
40417 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setCodeSizeVULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40418     VULKAN_HPP_CONSTEXPR_14 PipelineCacheStageValidationIndexEntry & setCodeSize( uint64_t codeSize_ ) VULKAN_HPP_NOEXCEPT
40419     {
40420       codeSize = codeSize_;
40421       return *this;
40422     }
40423 
setCodeOffsetVULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40424     VULKAN_HPP_CONSTEXPR_14 PipelineCacheStageValidationIndexEntry & setCodeOffset( uint64_t codeOffset_ ) VULKAN_HPP_NOEXCEPT
40425     {
40426       codeOffset = codeOffset_;
40427       return *this;
40428     }
40429 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40430 
40431 
operator VkPipelineCacheStageValidationIndexEntry const&VULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40432     operator VkPipelineCacheStageValidationIndexEntry const &() const VULKAN_HPP_NOEXCEPT
40433     {
40434       return *reinterpret_cast<const VkPipelineCacheStageValidationIndexEntry*>( this );
40435     }
40436 
operator VkPipelineCacheStageValidationIndexEntry&VULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40437     operator VkPipelineCacheStageValidationIndexEntry &() VULKAN_HPP_NOEXCEPT
40438     {
40439       return *reinterpret_cast<VkPipelineCacheStageValidationIndexEntry*>( this );
40440     }
40441 
40442 #if defined( VULKAN_HPP_USE_REFLECT )
40443 #if 14 <= VULKAN_HPP_CPP_VERSION
40444     auto
40445 #else
40446     std::tuple<uint64_t const &, uint64_t const &>
40447 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40448       reflect() const VULKAN_HPP_NOEXCEPT
40449     {
40450       return std::tie( codeSize, codeOffset );
40451     }
40452 #endif
40453 
40454 
40455 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
40456 auto operator<=>( PipelineCacheStageValidationIndexEntry const & ) const = default;
40457 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40458     bool operator==( PipelineCacheStageValidationIndexEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
40459     {
40460 #if defined( VULKAN_HPP_USE_REFLECT )
40461       return this->reflect() == rhs.reflect();
40462 #else
40463       return ( codeSize == rhs.codeSize )
40464           && ( codeOffset == rhs.codeOffset );
40465 #endif
40466     }
40467 
operator !=VULKAN_HPP_NAMESPACE::PipelineCacheStageValidationIndexEntry40468     bool operator!=( PipelineCacheStageValidationIndexEntry const & rhs ) const VULKAN_HPP_NOEXCEPT
40469     {
40470       return !operator==( rhs );
40471     }
40472 #endif
40473 
40474     public:
40475     uint64_t codeSize = {};
40476     uint64_t codeOffset = {};
40477 
40478   };
40479 
40480   struct PipelineColorBlendAdvancedStateCreateInfoEXT
40481   {
40482     using NativeType = VkPipelineColorBlendAdvancedStateCreateInfoEXT;
40483 
40484     static const bool allowDuplicate = false;
40485     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
40486 
40487 
40488 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorBlendAdvancedStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40489 VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ = {}, VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ = {}, VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
40490     : pNext( pNext_ ), srcPremultiplied( srcPremultiplied_ ), dstPremultiplied( dstPremultiplied_ ), blendOverlap( blendOverlap_ )
40491     {}
40492 
40493     VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40494 
PipelineColorBlendAdvancedStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40495     PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
40496       : PipelineColorBlendAdvancedStateCreateInfoEXT( *reinterpret_cast<PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs ) )
40497     {}
40498 
40499 
40500     PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40501 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40502 
operator =VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40503     PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
40504     {
40505       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT const *>( &rhs );
40506       return *this;
40507     }
40508 
40509 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40510     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40511     {
40512       pNext = pNext_;
40513       return *this;
40514     }
40515 
setSrcPremultipliedVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40516     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setSrcPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ ) VULKAN_HPP_NOEXCEPT
40517     {
40518       srcPremultiplied = srcPremultiplied_;
40519       return *this;
40520     }
40521 
setDstPremultipliedVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40522     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setDstPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ ) VULKAN_HPP_NOEXCEPT
40523     {
40524       dstPremultiplied = dstPremultiplied_;
40525       return *this;
40526     }
40527 
setBlendOverlapVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40528     VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setBlendOverlap( VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ ) VULKAN_HPP_NOEXCEPT
40529     {
40530       blendOverlap = blendOverlap_;
40531       return *this;
40532     }
40533 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40534 
40535 
operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40536     operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
40537     {
40538       return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>( this );
40539     }
40540 
operator VkPipelineColorBlendAdvancedStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40541     operator VkPipelineColorBlendAdvancedStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
40542     {
40543       return *reinterpret_cast<VkPipelineColorBlendAdvancedStateCreateInfoEXT*>( this );
40544     }
40545 
40546 #if defined( VULKAN_HPP_USE_REFLECT )
40547 #if 14 <= VULKAN_HPP_CPP_VERSION
40548     auto
40549 #else
40550     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::BlendOverlapEXT const &>
40551 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40552       reflect() const VULKAN_HPP_NOEXCEPT
40553     {
40554       return std::tie( sType, pNext, srcPremultiplied, dstPremultiplied, blendOverlap );
40555     }
40556 #endif
40557 
40558 
40559 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
40560 auto operator<=>( PipelineColorBlendAdvancedStateCreateInfoEXT const & ) const = default;
40561 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40562     bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
40563     {
40564 #if defined( VULKAN_HPP_USE_REFLECT )
40565       return this->reflect() == rhs.reflect();
40566 #else
40567       return ( sType == rhs.sType )
40568           && ( pNext == rhs.pNext )
40569           && ( srcPremultiplied == rhs.srcPremultiplied )
40570           && ( dstPremultiplied == rhs.dstPremultiplied )
40571           && ( blendOverlap == rhs.blendOverlap );
40572 #endif
40573     }
40574 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT40575     bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
40576     {
40577       return !operator==( rhs );
40578     }
40579 #endif
40580 
40581     public:
40582     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
40583     const void * pNext = {};
40584     VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied = {};
40585     VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied = {};
40586     VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated;
40587 
40588   };
40589 
40590   template <>
40591   struct CppType<StructureType, StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT>
40592   {
40593     using Type = PipelineColorBlendAdvancedStateCreateInfoEXT;
40594   };
40595 
40596   struct PipelineColorWriteCreateInfoEXT
40597   {
40598     using NativeType = VkPipelineColorWriteCreateInfoEXT;
40599 
40600     static const bool allowDuplicate = false;
40601     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorWriteCreateInfoEXT;
40602 
40603 
40604 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40605 VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT(uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
40606     : pNext( pNext_ ), attachmentCount( attachmentCount_ ), pColorWriteEnables( pColorWriteEnables_ )
40607     {}
40608 
40609     VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40610 
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40611     PipelineColorWriteCreateInfoEXT( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
40612       : PipelineColorWriteCreateInfoEXT( *reinterpret_cast<PipelineColorWriteCreateInfoEXT const *>( &rhs ) )
40613     {}
40614 
40615 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineColorWriteCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40616     PipelineColorWriteCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables_, const void * pNext_ = nullptr )
40617     : pNext( pNext_ ), attachmentCount( static_cast<uint32_t>( colorWriteEnables_.size() ) ), pColorWriteEnables( colorWriteEnables_.data() )
40618     {}
40619 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40620 
40621 
40622     PipelineColorWriteCreateInfoEXT & operator=( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40623 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40624 
operator =VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40625     PipelineColorWriteCreateInfoEXT & operator=( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
40626     {
40627       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT const *>( &rhs );
40628       return *this;
40629     }
40630 
40631 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40632     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40633     {
40634       pNext = pNext_;
40635       return *this;
40636     }
40637 
setAttachmentCountVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40638     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
40639     {
40640       attachmentCount = attachmentCount_;
40641       return *this;
40642     }
40643 
setPColorWriteEnablesVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40644     VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setPColorWriteEnables( const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables_ ) VULKAN_HPP_NOEXCEPT
40645     {
40646       pColorWriteEnables = pColorWriteEnables_;
40647       return *this;
40648     }
40649 
40650 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorWriteEnablesVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40651     PipelineColorWriteCreateInfoEXT & setColorWriteEnables( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables_ ) VULKAN_HPP_NOEXCEPT
40652     {
40653       attachmentCount = static_cast<uint32_t>( colorWriteEnables_.size() );
40654       pColorWriteEnables = colorWriteEnables_.data();
40655       return *this;
40656     }
40657 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40658 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40659 
40660 
operator VkPipelineColorWriteCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40661     operator VkPipelineColorWriteCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
40662     {
40663       return *reinterpret_cast<const VkPipelineColorWriteCreateInfoEXT*>( this );
40664     }
40665 
operator VkPipelineColorWriteCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40666     operator VkPipelineColorWriteCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
40667     {
40668       return *reinterpret_cast<VkPipelineColorWriteCreateInfoEXT*>( this );
40669     }
40670 
40671 #if defined( VULKAN_HPP_USE_REFLECT )
40672 #if 14 <= VULKAN_HPP_CPP_VERSION
40673     auto
40674 #else
40675     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Bool32 * const &>
40676 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40677       reflect() const VULKAN_HPP_NOEXCEPT
40678     {
40679       return std::tie( sType, pNext, attachmentCount, pColorWriteEnables );
40680     }
40681 #endif
40682 
40683 
40684 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
40685 auto operator<=>( PipelineColorWriteCreateInfoEXT const & ) const = default;
40686 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40687     bool operator==( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
40688     {
40689 #if defined( VULKAN_HPP_USE_REFLECT )
40690       return this->reflect() == rhs.reflect();
40691 #else
40692       return ( sType == rhs.sType )
40693           && ( pNext == rhs.pNext )
40694           && ( attachmentCount == rhs.attachmentCount )
40695           && ( pColorWriteEnables == rhs.pColorWriteEnables );
40696 #endif
40697     }
40698 
operator !=VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT40699     bool operator!=( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
40700     {
40701       return !operator==( rhs );
40702     }
40703 #endif
40704 
40705     public:
40706     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorWriteCreateInfoEXT;
40707     const void * pNext = {};
40708     uint32_t attachmentCount = {};
40709     const VULKAN_HPP_NAMESPACE::Bool32 * pColorWriteEnables = {};
40710 
40711   };
40712 
40713   template <>
40714   struct CppType<StructureType, StructureType::ePipelineColorWriteCreateInfoEXT>
40715   {
40716     using Type = PipelineColorWriteCreateInfoEXT;
40717   };
40718 
40719   struct PipelineCreationFeedback
40720   {
40721     using NativeType = VkPipelineCreationFeedback;
40722 
40723 
40724 
40725 
40726 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedback40727 VULKAN_HPP_CONSTEXPR PipelineCreationFeedback(VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags flags_ = {}, uint64_t duration_ = {}) VULKAN_HPP_NOEXCEPT
40728     : flags( flags_ ), duration( duration_ )
40729     {}
40730 
40731     VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40732 
PipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedback40733     PipelineCreationFeedback( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT
40734       : PipelineCreationFeedback( *reinterpret_cast<PipelineCreationFeedback const *>( &rhs ) )
40735     {}
40736 
40737 
40738     PipelineCreationFeedback & operator=( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40739 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40740 
operator =VULKAN_HPP_NAMESPACE::PipelineCreationFeedback40741     PipelineCreationFeedback & operator=( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT
40742     {
40743       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback const *>( &rhs );
40744       return *this;
40745     }
40746 
40747 
operator VkPipelineCreationFeedback const&VULKAN_HPP_NAMESPACE::PipelineCreationFeedback40748     operator VkPipelineCreationFeedback const &() const VULKAN_HPP_NOEXCEPT
40749     {
40750       return *reinterpret_cast<const VkPipelineCreationFeedback*>( this );
40751     }
40752 
operator VkPipelineCreationFeedback&VULKAN_HPP_NAMESPACE::PipelineCreationFeedback40753     operator VkPipelineCreationFeedback &() VULKAN_HPP_NOEXCEPT
40754     {
40755       return *reinterpret_cast<VkPipelineCreationFeedback*>( this );
40756     }
40757 
40758 #if defined( VULKAN_HPP_USE_REFLECT )
40759 #if 14 <= VULKAN_HPP_CPP_VERSION
40760     auto
40761 #else
40762     std::tuple<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags const &, uint64_t const &>
40763 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreationFeedback40764       reflect() const VULKAN_HPP_NOEXCEPT
40765     {
40766       return std::tie( flags, duration );
40767     }
40768 #endif
40769 
40770 
40771 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
40772 auto operator<=>( PipelineCreationFeedback const & ) const = default;
40773 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreationFeedback40774     bool operator==( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT
40775     {
40776 #if defined( VULKAN_HPP_USE_REFLECT )
40777       return this->reflect() == rhs.reflect();
40778 #else
40779       return ( flags == rhs.flags )
40780           && ( duration == rhs.duration );
40781 #endif
40782     }
40783 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreationFeedback40784     bool operator!=( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT
40785     {
40786       return !operator==( rhs );
40787     }
40788 #endif
40789 
40790     public:
40791     VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlags flags = {};
40792     uint64_t duration = {};
40793 
40794   };
40795   using PipelineCreationFeedbackEXT = PipelineCreationFeedback;
40796 
40797   struct PipelineCreationFeedbackCreateInfo
40798   {
40799     using NativeType = VkPipelineCreationFeedbackCreateInfo;
40800 
40801     static const bool allowDuplicate = false;
40802     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCreationFeedbackCreateInfo;
40803 
40804 
40805 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40806 VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo(VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_ = {}, uint32_t pipelineStageCreationFeedbackCount_ = {}, VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
40807     : pNext( pNext_ ), pPipelineCreationFeedback( pPipelineCreationFeedback_ ), pipelineStageCreationFeedbackCount( pipelineStageCreationFeedbackCount_ ), pPipelineStageCreationFeedbacks( pPipelineStageCreationFeedbacks_ )
40808     {}
40809 
40810     VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40811 
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40812     PipelineCreationFeedbackCreateInfo( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40813       : PipelineCreationFeedbackCreateInfo( *reinterpret_cast<PipelineCreationFeedbackCreateInfo const *>( &rhs ) )
40814     {}
40815 
40816 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineCreationFeedbackCreateInfoVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40817     PipelineCreationFeedbackCreateInfo( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback> const & pipelineStageCreationFeedbacks_, const void * pNext_ = nullptr )
40818     : pNext( pNext_ ), pPipelineCreationFeedback( pPipelineCreationFeedback_ ), pipelineStageCreationFeedbackCount( static_cast<uint32_t>( pipelineStageCreationFeedbacks_.size() ) ), pPipelineStageCreationFeedbacks( pipelineStageCreationFeedbacks_.data() )
40819     {}
40820 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40821 
40822 
40823     PipelineCreationFeedbackCreateInfo & operator=( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40824 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40825 
operator =VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40826     PipelineCreationFeedbackCreateInfo & operator=( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
40827     {
40828       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo const *>( &rhs );
40829       return *this;
40830     }
40831 
40832 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40833     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40834     {
40835       pNext = pNext_;
40836       return *this;
40837     }
40838 
setPPipelineCreationFeedbackVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40839     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPPipelineCreationFeedback( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback_ ) VULKAN_HPP_NOEXCEPT
40840     {
40841       pPipelineCreationFeedback = pPipelineCreationFeedback_;
40842       return *this;
40843     }
40844 
setPipelineStageCreationFeedbackCountVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40845     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) VULKAN_HPP_NOEXCEPT
40846     {
40847       pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_;
40848       return *this;
40849     }
40850 
setPPipelineStageCreationFeedbacksVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40851     VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPPipelineStageCreationFeedbacks( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT
40852     {
40853       pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_;
40854       return *this;
40855     }
40856 
40857 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPipelineStageCreationFeedbacksVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40858     PipelineCreationFeedbackCreateInfo & setPipelineStageCreationFeedbacks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback> const & pipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT
40859     {
40860       pipelineStageCreationFeedbackCount = static_cast<uint32_t>( pipelineStageCreationFeedbacks_.size() );
40861       pPipelineStageCreationFeedbacks = pipelineStageCreationFeedbacks_.data();
40862       return *this;
40863     }
40864 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40865 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
40866 
40867 
operator VkPipelineCreationFeedbackCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40868     operator VkPipelineCreationFeedbackCreateInfo const &() const VULKAN_HPP_NOEXCEPT
40869     {
40870       return *reinterpret_cast<const VkPipelineCreationFeedbackCreateInfo*>( this );
40871     }
40872 
operator VkPipelineCreationFeedbackCreateInfo&VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40873     operator VkPipelineCreationFeedbackCreateInfo &() VULKAN_HPP_NOEXCEPT
40874     {
40875       return *reinterpret_cast<VkPipelineCreationFeedbackCreateInfo*>( this );
40876     }
40877 
40878 #if defined( VULKAN_HPP_USE_REFLECT )
40879 #if 14 <= VULKAN_HPP_CPP_VERSION
40880     auto
40881 #else
40882     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * const &>
40883 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40884       reflect() const VULKAN_HPP_NOEXCEPT
40885     {
40886       return std::tie( sType, pNext, pPipelineCreationFeedback, pipelineStageCreationFeedbackCount, pPipelineStageCreationFeedbacks );
40887     }
40888 #endif
40889 
40890 
40891 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
40892 auto operator<=>( PipelineCreationFeedbackCreateInfo const & ) const = default;
40893 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40894     bool operator==( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40895     {
40896 #if defined( VULKAN_HPP_USE_REFLECT )
40897       return this->reflect() == rhs.reflect();
40898 #else
40899       return ( sType == rhs.sType )
40900           && ( pNext == rhs.pNext )
40901           && ( pPipelineCreationFeedback == rhs.pPipelineCreationFeedback )
40902           && ( pipelineStageCreationFeedbackCount == rhs.pipelineStageCreationFeedbackCount )
40903           && ( pPipelineStageCreationFeedbacks == rhs.pPipelineStageCreationFeedbacks );
40904 #endif
40905     }
40906 
operator !=VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo40907     bool operator!=( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
40908     {
40909       return !operator==( rhs );
40910     }
40911 #endif
40912 
40913     public:
40914     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCreationFeedbackCreateInfo;
40915     const void * pNext = {};
40916     VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineCreationFeedback = {};
40917     uint32_t pipelineStageCreationFeedbackCount = {};
40918     VULKAN_HPP_NAMESPACE::PipelineCreationFeedback * pPipelineStageCreationFeedbacks = {};
40919 
40920   };
40921 
40922   template <>
40923   struct CppType<StructureType, StructureType::ePipelineCreationFeedbackCreateInfo>
40924   {
40925     using Type = PipelineCreationFeedbackCreateInfo;
40926   };
40927   using PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo;
40928 
40929   struct PipelineDiscardRectangleStateCreateInfoEXT
40930   {
40931     using NativeType = VkPipelineDiscardRectangleStateCreateInfoEXT;
40932 
40933     static const bool allowDuplicate = false;
40934     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
40935 
40936 
40937 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40938 VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
40939     : pNext( pNext_ ), flags( flags_ ), discardRectangleMode( discardRectangleMode_ ), discardRectangleCount( discardRectangleCount_ ), pDiscardRectangles( pDiscardRectangles_ )
40940     {}
40941 
40942     VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40943 
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40944     PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
40945       : PipelineDiscardRectangleStateCreateInfoEXT( *reinterpret_cast<PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs ) )
40946     {}
40947 
40948 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineDiscardRectangleStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40949     PipelineDiscardRectangleStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_, VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_, const void * pNext_ = nullptr )
40950     : pNext( pNext_ ), flags( flags_ ), discardRectangleMode( discardRectangleMode_ ), discardRectangleCount( static_cast<uint32_t>( discardRectangles_.size() ) ), pDiscardRectangles( discardRectangles_.data() )
40951     {}
40952 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
40953 
40954 
40955     PipelineDiscardRectangleStateCreateInfoEXT & operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
40956 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
40957 
operator =VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40958     PipelineDiscardRectangleStateCreateInfoEXT & operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
40959     {
40960       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT const *>( &rhs );
40961       return *this;
40962     }
40963 
40964 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40965     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
40966     {
40967       pNext = pNext_;
40968       return *this;
40969     }
40970 
setFlagsVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40971     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
40972     {
40973       flags = flags_;
40974       return *this;
40975     }
40976 
setDiscardRectangleModeVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40977     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleMode( VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ ) VULKAN_HPP_NOEXCEPT
40978     {
40979       discardRectangleMode = discardRectangleMode_;
40980       return *this;
40981     }
40982 
setDiscardRectangleCountVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40983     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleCount( uint32_t discardRectangleCount_ ) VULKAN_HPP_NOEXCEPT
40984     {
40985       discardRectangleCount = discardRectangleCount_;
40986       return *this;
40987     }
40988 
setPDiscardRectanglesVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40989     VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setPDiscardRectangles( const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles_ ) VULKAN_HPP_NOEXCEPT
40990     {
40991       pDiscardRectangles = pDiscardRectangles_;
40992       return *this;
40993     }
40994 
40995 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDiscardRectanglesVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT40996     PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles_ ) VULKAN_HPP_NOEXCEPT
40997     {
40998       discardRectangleCount = static_cast<uint32_t>( discardRectangles_.size() );
40999       pDiscardRectangles = discardRectangles_.data();
41000       return *this;
41001     }
41002 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41003 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41004 
41005 
operator VkPipelineDiscardRectangleStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT41006     operator VkPipelineDiscardRectangleStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
41007     {
41008       return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>( this );
41009     }
41010 
operator VkPipelineDiscardRectangleStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT41011     operator VkPipelineDiscardRectangleStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
41012     {
41013       return *reinterpret_cast<VkPipelineDiscardRectangleStateCreateInfoEXT*>( this );
41014     }
41015 
41016 #if defined( VULKAN_HPP_USE_REFLECT )
41017 #if 14 <= VULKAN_HPP_CPP_VERSION
41018     auto
41019 #else
41020     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT const &, VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Rect2D * const &>
41021 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT41022       reflect() const VULKAN_HPP_NOEXCEPT
41023     {
41024       return std::tie( sType, pNext, flags, discardRectangleMode, discardRectangleCount, pDiscardRectangles );
41025     }
41026 #endif
41027 
41028 
41029 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
41030 auto operator<=>( PipelineDiscardRectangleStateCreateInfoEXT const & ) const = default;
41031 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT41032     bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41033     {
41034 #if defined( VULKAN_HPP_USE_REFLECT )
41035       return this->reflect() == rhs.reflect();
41036 #else
41037       return ( sType == rhs.sType )
41038           && ( pNext == rhs.pNext )
41039           && ( flags == rhs.flags )
41040           && ( discardRectangleMode == rhs.discardRectangleMode )
41041           && ( discardRectangleCount == rhs.discardRectangleCount )
41042           && ( pDiscardRectangles == rhs.pDiscardRectangles );
41043 #endif
41044     }
41045 
operator !=VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT41046     bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41047     {
41048       return !operator==( rhs );
41049     }
41050 #endif
41051 
41052     public:
41053     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
41054     const void * pNext = {};
41055     VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags = {};
41056     VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive;
41057     uint32_t discardRectangleCount = {};
41058     const VULKAN_HPP_NAMESPACE::Rect2D * pDiscardRectangles = {};
41059 
41060   };
41061 
41062   template <>
41063   struct CppType<StructureType, StructureType::ePipelineDiscardRectangleStateCreateInfoEXT>
41064   {
41065     using Type = PipelineDiscardRectangleStateCreateInfoEXT;
41066   };
41067 
41068   struct PipelineFragmentShadingRateStateCreateInfoKHR
41069   {
41070     using NativeType = VkPipelineFragmentShadingRateStateCreateInfoKHR;
41071 
41072     static const bool allowDuplicate = false;
41073     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
41074 
41075 
41076 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineFragmentShadingRateStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41077 VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR(VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {}, std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR,2> const & combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } }, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
41078     : pNext( pNext_ ), fragmentSize( fragmentSize_ ), combinerOps( combinerOps_ )
41079     {}
41080 
41081     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41082 
PipelineFragmentShadingRateStateCreateInfoKHRVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41083     PipelineFragmentShadingRateStateCreateInfoKHR( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
41084       : PipelineFragmentShadingRateStateCreateInfoKHR( *reinterpret_cast<PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs ) )
41085     {}
41086 
41087 
41088     PipelineFragmentShadingRateStateCreateInfoKHR & operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41089 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41090 
operator =VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41091     PipelineFragmentShadingRateStateCreateInfoKHR & operator=( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
41092     {
41093       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR const *>( &rhs );
41094       return *this;
41095     }
41096 
41097 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41098     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41099     {
41100       pNext = pNext_;
41101       return *this;
41102     }
41103 
setFragmentSizeVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41104     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setFragmentSize( VULKAN_HPP_NAMESPACE::Extent2D const & fragmentSize_ ) VULKAN_HPP_NOEXCEPT
41105     {
41106       fragmentSize = fragmentSize_;
41107       return *this;
41108     }
41109 
setCombinerOpsVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41110     VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setCombinerOps( std::array<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR,2> combinerOps_ ) VULKAN_HPP_NOEXCEPT
41111     {
41112       combinerOps = combinerOps_;
41113       return *this;
41114     }
41115 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41116 
41117 
operator VkPipelineFragmentShadingRateStateCreateInfoKHR const&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41118     operator VkPipelineFragmentShadingRateStateCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
41119     {
41120       return *reinterpret_cast<const VkPipelineFragmentShadingRateStateCreateInfoKHR*>( this );
41121     }
41122 
operator VkPipelineFragmentShadingRateStateCreateInfoKHR&VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41123     operator VkPipelineFragmentShadingRateStateCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
41124     {
41125       return *reinterpret_cast<VkPipelineFragmentShadingRateStateCreateInfoKHR*>( this );
41126     }
41127 
41128 #if defined( VULKAN_HPP_USE_REFLECT )
41129 #if 14 <= VULKAN_HPP_CPP_VERSION
41130     auto
41131 #else
41132     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> const &>
41133 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41134       reflect() const VULKAN_HPP_NOEXCEPT
41135     {
41136       return std::tie( sType, pNext, fragmentSize, combinerOps );
41137     }
41138 #endif
41139 
41140 
41141 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
41142 auto operator<=>( PipelineFragmentShadingRateStateCreateInfoKHR const & ) const = default;
41143 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41144     bool operator==( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
41145     {
41146 #if defined( VULKAN_HPP_USE_REFLECT )
41147       return this->reflect() == rhs.reflect();
41148 #else
41149       return ( sType == rhs.sType )
41150           && ( pNext == rhs.pNext )
41151           && ( fragmentSize == rhs.fragmentSize )
41152           && ( combinerOps == rhs.combinerOps );
41153 #endif
41154     }
41155 
operator !=VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR41156     bool operator!=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
41157     {
41158       return !operator==( rhs );
41159     }
41160 #endif
41161 
41162     public:
41163     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR;
41164     const void * pNext = {};
41165     VULKAN_HPP_NAMESPACE::Extent2D fragmentSize = {};
41166     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR, 2> combinerOps = {};
41167 
41168   };
41169 
41170   template <>
41171   struct CppType<StructureType, StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR>
41172   {
41173     using Type = PipelineFragmentShadingRateStateCreateInfoKHR;
41174   };
41175 
41176   struct PushConstantRange
41177   {
41178     using NativeType = VkPushConstantRange;
41179 
41180 
41181 
41182 
41183 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PushConstantRangeVULKAN_HPP_NAMESPACE::PushConstantRange41184 VULKAN_HPP_CONSTEXPR PushConstantRange(VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, uint32_t offset_ = {}, uint32_t size_ = {}) VULKAN_HPP_NOEXCEPT
41185     : stageFlags( stageFlags_ ), offset( offset_ ), size( size_ )
41186     {}
41187 
41188     VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41189 
PushConstantRangeVULKAN_HPP_NAMESPACE::PushConstantRange41190     PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
41191       : PushConstantRange( *reinterpret_cast<PushConstantRange const *>( &rhs ) )
41192     {}
41193 
41194 
41195     PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41196 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41197 
operator =VULKAN_HPP_NAMESPACE::PushConstantRange41198     PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT
41199     {
41200       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PushConstantRange const *>( &rhs );
41201       return *this;
41202     }
41203 
41204 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setStageFlagsVULKAN_HPP_NAMESPACE::PushConstantRange41205     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT
41206     {
41207       stageFlags = stageFlags_;
41208       return *this;
41209     }
41210 
setOffsetVULKAN_HPP_NAMESPACE::PushConstantRange41211     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
41212     {
41213       offset = offset_;
41214       return *this;
41215     }
41216 
setSizeVULKAN_HPP_NAMESPACE::PushConstantRange41217     VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT
41218     {
41219       size = size_;
41220       return *this;
41221     }
41222 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41223 
41224 
operator VkPushConstantRange const&VULKAN_HPP_NAMESPACE::PushConstantRange41225     operator VkPushConstantRange const &() const VULKAN_HPP_NOEXCEPT
41226     {
41227       return *reinterpret_cast<const VkPushConstantRange*>( this );
41228     }
41229 
operator VkPushConstantRange&VULKAN_HPP_NAMESPACE::PushConstantRange41230     operator VkPushConstantRange &() VULKAN_HPP_NOEXCEPT
41231     {
41232       return *reinterpret_cast<VkPushConstantRange*>( this );
41233     }
41234 
41235 #if defined( VULKAN_HPP_USE_REFLECT )
41236 #if 14 <= VULKAN_HPP_CPP_VERSION
41237     auto
41238 #else
41239     std::tuple<VULKAN_HPP_NAMESPACE::ShaderStageFlags const &, uint32_t const &, uint32_t const &>
41240 #endif
reflectVULKAN_HPP_NAMESPACE::PushConstantRange41241       reflect() const VULKAN_HPP_NOEXCEPT
41242     {
41243       return std::tie( stageFlags, offset, size );
41244     }
41245 #endif
41246 
41247 
41248 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
41249 auto operator<=>( PushConstantRange const & ) const = default;
41250 #else
operator ==VULKAN_HPP_NAMESPACE::PushConstantRange41251     bool operator==( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT
41252     {
41253 #if defined( VULKAN_HPP_USE_REFLECT )
41254       return this->reflect() == rhs.reflect();
41255 #else
41256       return ( stageFlags == rhs.stageFlags )
41257           && ( offset == rhs.offset )
41258           && ( size == rhs.size );
41259 #endif
41260     }
41261 
operator !=VULKAN_HPP_NAMESPACE::PushConstantRange41262     bool operator!=( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT
41263     {
41264       return !operator==( rhs );
41265     }
41266 #endif
41267 
41268     public:
41269     VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {};
41270     uint32_t offset = {};
41271     uint32_t size = {};
41272 
41273   };
41274 
41275   struct PipelineLayoutCreateInfo
41276   {
41277     using NativeType = VkPipelineLayoutCreateInfo;
41278 
41279     static const bool allowDuplicate = false;
41280     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineLayoutCreateInfo;
41281 
41282 
41283 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41284 VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo(VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ = {}, uint32_t setLayoutCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ = {}, uint32_t pushConstantRangeCount_ = {}, const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
41285     : pNext( pNext_ ), flags( flags_ ), setLayoutCount( setLayoutCount_ ), pSetLayouts( pSetLayouts_ ), pushConstantRangeCount( pushConstantRangeCount_ ), pPushConstantRanges( pPushConstantRanges_ )
41286     {}
41287 
41288     VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41289 
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41290     PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41291       : PipelineLayoutCreateInfo( *reinterpret_cast<PipelineLayoutCreateInfo const *>( &rhs ) )
41292     {}
41293 
41294 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineLayoutCreateInfoVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41295     PipelineLayoutCreateInfo( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ = {}, const void * pNext_ = nullptr )
41296     : pNext( pNext_ ), flags( flags_ ), setLayoutCount( static_cast<uint32_t>( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() ), pushConstantRangeCount( static_cast<uint32_t>( pushConstantRanges_.size() ) ), pPushConstantRanges( pushConstantRanges_.data() )
41297     {}
41298 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41299 
41300 
41301     PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41302 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41303 
operator =VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41304     PipelineLayoutCreateInfo & operator=( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41305     {
41306       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const *>( &rhs );
41307       return *this;
41308     }
41309 
41310 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41311     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41312     {
41313       pNext = pNext_;
41314       return *this;
41315     }
41316 
setFlagsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41317     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
41318     {
41319       flags = flags_;
41320       return *this;
41321     }
41322 
setSetLayoutCountVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41323     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT
41324     {
41325       setLayoutCount = setLayoutCount_;
41326       return *this;
41327     }
41328 
setPSetLayoutsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41329     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts_ ) VULKAN_HPP_NOEXCEPT
41330     {
41331       pSetLayouts = pSetLayouts_;
41332       return *this;
41333     }
41334 
41335 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSetLayoutsVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41336     PipelineLayoutCreateInfo & setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorSetLayout> const & setLayouts_ ) VULKAN_HPP_NOEXCEPT
41337     {
41338       setLayoutCount = static_cast<uint32_t>( setLayouts_.size() );
41339       pSetLayouts = setLayouts_.data();
41340       return *this;
41341     }
41342 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41343 
setPushConstantRangeCountVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41344     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT
41345     {
41346       pushConstantRangeCount = pushConstantRangeCount_;
41347       return *this;
41348     }
41349 
setPPushConstantRangesVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41350     VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
41351     {
41352       pPushConstantRanges = pPushConstantRanges_;
41353       return *this;
41354     }
41355 
41356 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPushConstantRangesVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41357     PipelineLayoutCreateInfo & setPushConstantRanges( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PushConstantRange> const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT
41358     {
41359       pushConstantRangeCount = static_cast<uint32_t>( pushConstantRanges_.size() );
41360       pPushConstantRanges = pushConstantRanges_.data();
41361       return *this;
41362     }
41363 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41364 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41365 
41366 
operator VkPipelineLayoutCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41367     operator VkPipelineLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41368     {
41369       return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>( this );
41370     }
41371 
operator VkPipelineLayoutCreateInfo&VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41372     operator VkPipelineLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT
41373     {
41374       return *reinterpret_cast<VkPipelineLayoutCreateInfo*>( this );
41375     }
41376 
41377 #if defined( VULKAN_HPP_USE_REFLECT )
41378 #if 14 <= VULKAN_HPP_CPP_VERSION
41379     auto
41380 #else
41381     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PushConstantRange * const &>
41382 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41383       reflect() const VULKAN_HPP_NOEXCEPT
41384     {
41385       return std::tie( sType, pNext, flags, setLayoutCount, pSetLayouts, pushConstantRangeCount, pPushConstantRanges );
41386     }
41387 #endif
41388 
41389 
41390 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
41391 auto operator<=>( PipelineLayoutCreateInfo const & ) const = default;
41392 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41393     bool operator==( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41394     {
41395 #if defined( VULKAN_HPP_USE_REFLECT )
41396       return this->reflect() == rhs.reflect();
41397 #else
41398       return ( sType == rhs.sType )
41399           && ( pNext == rhs.pNext )
41400           && ( flags == rhs.flags )
41401           && ( setLayoutCount == rhs.setLayoutCount )
41402           && ( pSetLayouts == rhs.pSetLayouts )
41403           && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
41404           && ( pPushConstantRanges == rhs.pPushConstantRanges );
41405 #endif
41406     }
41407 
operator !=VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo41408     bool operator!=( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41409     {
41410       return !operator==( rhs );
41411     }
41412 #endif
41413 
41414     public:
41415     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLayoutCreateInfo;
41416     const void * pNext = {};
41417     VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags = {};
41418     uint32_t setLayoutCount = {};
41419     const VULKAN_HPP_NAMESPACE::DescriptorSetLayout * pSetLayouts = {};
41420     uint32_t pushConstantRangeCount = {};
41421     const VULKAN_HPP_NAMESPACE::PushConstantRange * pPushConstantRanges = {};
41422 
41423   };
41424 
41425   template <>
41426   struct CppType<StructureType, StructureType::ePipelineLayoutCreateInfo>
41427   {
41428     using Type = PipelineLayoutCreateInfo;
41429   };
41430 
41431   struct PipelineOfflineCreateInfo
41432   {
41433     using NativeType = VkPipelineOfflineCreateInfo;
41434 
41435     static const bool allowDuplicate = false;
41436     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineOfflineCreateInfo;
41437 
41438 
41439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineOfflineCreateInfoVULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41440 VULKAN_HPP_CONSTEXPR_14 PipelineOfflineCreateInfo(std::array<uint8_t,VK_UUID_SIZE> const & pipelineIdentifier_ = {}, VULKAN_HPP_NAMESPACE::PipelineMatchControl matchControl_ = VULKAN_HPP_NAMESPACE::PipelineMatchControl::eApplicationUuidExactMatch, VULKAN_HPP_NAMESPACE::DeviceSize poolEntrySize_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
41441     : pNext( pNext_ ), pipelineIdentifier( pipelineIdentifier_ ), matchControl( matchControl_ ), poolEntrySize( poolEntrySize_ )
41442     {}
41443 
41444     VULKAN_HPP_CONSTEXPR_14 PipelineOfflineCreateInfo( PipelineOfflineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41445 
PipelineOfflineCreateInfoVULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41446     PipelineOfflineCreateInfo( VkPipelineOfflineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41447       : PipelineOfflineCreateInfo( *reinterpret_cast<PipelineOfflineCreateInfo const *>( &rhs ) )
41448     {}
41449 
41450 
41451     PipelineOfflineCreateInfo & operator=( PipelineOfflineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41452 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41453 
operator =VULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41454     PipelineOfflineCreateInfo & operator=( VkPipelineOfflineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41455     {
41456       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo const *>( &rhs );
41457       return *this;
41458     }
41459 
41460 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41461     VULKAN_HPP_CONSTEXPR_14 PipelineOfflineCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41462     {
41463       pNext = pNext_;
41464       return *this;
41465     }
41466 
setPipelineIdentifierVULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41467     VULKAN_HPP_CONSTEXPR_14 PipelineOfflineCreateInfo & setPipelineIdentifier( std::array<uint8_t,VK_UUID_SIZE> pipelineIdentifier_ ) VULKAN_HPP_NOEXCEPT
41468     {
41469       pipelineIdentifier = pipelineIdentifier_;
41470       return *this;
41471     }
41472 
setMatchControlVULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41473     VULKAN_HPP_CONSTEXPR_14 PipelineOfflineCreateInfo & setMatchControl( VULKAN_HPP_NAMESPACE::PipelineMatchControl matchControl_ ) VULKAN_HPP_NOEXCEPT
41474     {
41475       matchControl = matchControl_;
41476       return *this;
41477     }
41478 
setPoolEntrySizeVULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41479     VULKAN_HPP_CONSTEXPR_14 PipelineOfflineCreateInfo & setPoolEntrySize( VULKAN_HPP_NAMESPACE::DeviceSize poolEntrySize_ ) VULKAN_HPP_NOEXCEPT
41480     {
41481       poolEntrySize = poolEntrySize_;
41482       return *this;
41483     }
41484 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41485 
41486 
operator VkPipelineOfflineCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41487     operator VkPipelineOfflineCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41488     {
41489       return *reinterpret_cast<const VkPipelineOfflineCreateInfo*>( this );
41490     }
41491 
operator VkPipelineOfflineCreateInfo&VULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41492     operator VkPipelineOfflineCreateInfo &() VULKAN_HPP_NOEXCEPT
41493     {
41494       return *reinterpret_cast<VkPipelineOfflineCreateInfo*>( this );
41495     }
41496 
41497 #if defined( VULKAN_HPP_USE_REFLECT )
41498 #if 14 <= VULKAN_HPP_CPP_VERSION
41499     auto
41500 #else
41501     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> const &, VULKAN_HPP_NAMESPACE::PipelineMatchControl const &, VULKAN_HPP_NAMESPACE::DeviceSize const &>
41502 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41503       reflect() const VULKAN_HPP_NOEXCEPT
41504     {
41505       return std::tie( sType, pNext, pipelineIdentifier, matchControl, poolEntrySize );
41506     }
41507 #endif
41508 
41509 
41510 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
41511 auto operator<=>( PipelineOfflineCreateInfo const & ) const = default;
41512 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41513     bool operator==( PipelineOfflineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41514     {
41515 #if defined( VULKAN_HPP_USE_REFLECT )
41516       return this->reflect() == rhs.reflect();
41517 #else
41518       return ( sType == rhs.sType )
41519           && ( pNext == rhs.pNext )
41520           && ( pipelineIdentifier == rhs.pipelineIdentifier )
41521           && ( matchControl == rhs.matchControl )
41522           && ( poolEntrySize == rhs.poolEntrySize );
41523 #endif
41524     }
41525 
operator !=VULKAN_HPP_NAMESPACE::PipelineOfflineCreateInfo41526     bool operator!=( PipelineOfflineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
41527     {
41528       return !operator==( rhs );
41529     }
41530 #endif
41531 
41532     public:
41533     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineOfflineCreateInfo;
41534     const void * pNext = {};
41535     VULKAN_HPP_NAMESPACE::ArrayWrapper1D<uint8_t, VK_UUID_SIZE> pipelineIdentifier = {};
41536     VULKAN_HPP_NAMESPACE::PipelineMatchControl matchControl = VULKAN_HPP_NAMESPACE::PipelineMatchControl::eApplicationUuidExactMatch;
41537     VULKAN_HPP_NAMESPACE::DeviceSize poolEntrySize = {};
41538 
41539   };
41540 
41541   template <>
41542   struct CppType<StructureType, StructureType::ePipelineOfflineCreateInfo>
41543   {
41544     using Type = PipelineOfflineCreateInfo;
41545   };
41546 
41547   struct PipelineRasterizationConservativeStateCreateInfoEXT
41548   {
41549     using NativeType = VkPipelineRasterizationConservativeStateCreateInfoEXT;
41550 
41551     static const bool allowDuplicate = false;
41552     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
41553 
41554 
41555 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationConservativeStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41556 VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled, float extraPrimitiveOverestimationSize_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
41557     : pNext( pNext_ ), flags( flags_ ), conservativeRasterizationMode( conservativeRasterizationMode_ ), extraPrimitiveOverestimationSize( extraPrimitiveOverestimationSize_ )
41558     {}
41559 
41560     VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41561 
PipelineRasterizationConservativeStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41562     PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41563       : PipelineRasterizationConservativeStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs ) )
41564     {}
41565 
41566 
41567     PipelineRasterizationConservativeStateCreateInfoEXT & operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41568 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41569 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41570     PipelineRasterizationConservativeStateCreateInfoEXT & operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41571     {
41572       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT const *>( &rhs );
41573       return *this;
41574     }
41575 
41576 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41577     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41578     {
41579       pNext = pNext_;
41580       return *this;
41581     }
41582 
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41583     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
41584     {
41585       flags = flags_;
41586       return *this;
41587     }
41588 
setConservativeRasterizationModeVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41589     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setConservativeRasterizationMode( VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
41590     {
41591       conservativeRasterizationMode = conservativeRasterizationMode_;
41592       return *this;
41593     }
41594 
setExtraPrimitiveOverestimationSizeVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41595     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) VULKAN_HPP_NOEXCEPT
41596     {
41597       extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_;
41598       return *this;
41599     }
41600 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41601 
41602 
operator VkPipelineRasterizationConservativeStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41603     operator VkPipelineRasterizationConservativeStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
41604     {
41605       return *reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT*>( this );
41606     }
41607 
operator VkPipelineRasterizationConservativeStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41608     operator VkPipelineRasterizationConservativeStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
41609     {
41610       return *reinterpret_cast<VkPipelineRasterizationConservativeStateCreateInfoEXT*>( this );
41611     }
41612 
41613 #if defined( VULKAN_HPP_USE_REFLECT )
41614 #if 14 <= VULKAN_HPP_CPP_VERSION
41615     auto
41616 #else
41617     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT const &, VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT const &, float const &>
41618 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41619       reflect() const VULKAN_HPP_NOEXCEPT
41620     {
41621       return std::tie( sType, pNext, flags, conservativeRasterizationMode, extraPrimitiveOverestimationSize );
41622     }
41623 #endif
41624 
41625 
41626 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
41627 auto operator<=>( PipelineRasterizationConservativeStateCreateInfoEXT const & ) const = default;
41628 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41629     bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41630     {
41631 #if defined( VULKAN_HPP_USE_REFLECT )
41632       return this->reflect() == rhs.reflect();
41633 #else
41634       return ( sType == rhs.sType )
41635           && ( pNext == rhs.pNext )
41636           && ( flags == rhs.flags )
41637           && ( conservativeRasterizationMode == rhs.conservativeRasterizationMode )
41638           && ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize );
41639 #endif
41640     }
41641 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT41642     bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41643     {
41644       return !operator==( rhs );
41645     }
41646 #endif
41647 
41648     public:
41649     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
41650     const void * pNext = {};
41651     VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags = {};
41652     VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled;
41653     float extraPrimitiveOverestimationSize = {};
41654 
41655   };
41656 
41657   template <>
41658   struct CppType<StructureType, StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT>
41659   {
41660     using Type = PipelineRasterizationConservativeStateCreateInfoEXT;
41661   };
41662 
41663   struct PipelineRasterizationDepthClipStateCreateInfoEXT
41664   {
41665     using NativeType = VkPipelineRasterizationDepthClipStateCreateInfoEXT;
41666 
41667     static const bool allowDuplicate = false;
41668     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
41669 
41670 
41671 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationDepthClipStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41672 VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
41673     : pNext( pNext_ ), flags( flags_ ), depthClipEnable( depthClipEnable_ )
41674     {}
41675 
41676     VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41677 
PipelineRasterizationDepthClipStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41678     PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41679       : PipelineRasterizationDepthClipStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs ) )
41680     {}
41681 
41682 
41683     PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41684 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41685 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41686     PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41687     {
41688       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT const *>( &rhs );
41689       return *this;
41690     }
41691 
41692 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41693     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41694     {
41695       pNext = pNext_;
41696       return *this;
41697     }
41698 
setFlagsVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41699     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT
41700     {
41701       flags = flags_;
41702       return *this;
41703     }
41704 
setDepthClipEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41705     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT
41706     {
41707       depthClipEnable = depthClipEnable_;
41708       return *this;
41709     }
41710 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41711 
41712 
operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41713     operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
41714     {
41715       return *reinterpret_cast<const VkPipelineRasterizationDepthClipStateCreateInfoEXT*>( this );
41716     }
41717 
operator VkPipelineRasterizationDepthClipStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41718     operator VkPipelineRasterizationDepthClipStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
41719     {
41720       return *reinterpret_cast<VkPipelineRasterizationDepthClipStateCreateInfoEXT*>( this );
41721     }
41722 
41723 #if defined( VULKAN_HPP_USE_REFLECT )
41724 #if 14 <= VULKAN_HPP_CPP_VERSION
41725     auto
41726 #else
41727     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
41728 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41729       reflect() const VULKAN_HPP_NOEXCEPT
41730     {
41731       return std::tie( sType, pNext, flags, depthClipEnable );
41732     }
41733 #endif
41734 
41735 
41736 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
41737 auto operator<=>( PipelineRasterizationDepthClipStateCreateInfoEXT const & ) const = default;
41738 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41739     bool operator==( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41740     {
41741 #if defined( VULKAN_HPP_USE_REFLECT )
41742       return this->reflect() == rhs.reflect();
41743 #else
41744       return ( sType == rhs.sType )
41745           && ( pNext == rhs.pNext )
41746           && ( flags == rhs.flags )
41747           && ( depthClipEnable == rhs.depthClipEnable );
41748 #endif
41749     }
41750 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT41751     bool operator!=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41752     {
41753       return !operator==( rhs );
41754     }
41755 #endif
41756 
41757     public:
41758     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT;
41759     const void * pNext = {};
41760     VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags = {};
41761     VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable = {};
41762 
41763   };
41764 
41765   template <>
41766   struct CppType<StructureType, StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT>
41767   {
41768     using Type = PipelineRasterizationDepthClipStateCreateInfoEXT;
41769   };
41770 
41771   struct PipelineRasterizationLineStateCreateInfoEXT
41772   {
41773     using NativeType = VkPipelineRasterizationLineStateCreateInfoEXT;
41774 
41775     static const bool allowDuplicate = false;
41776     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT;
41777 
41778 
41779 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRasterizationLineStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41780 VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode_ = VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault, VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ = {}, uint32_t lineStippleFactor_ = {}, uint16_t lineStipplePattern_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
41781     : pNext( pNext_ ), lineRasterizationMode( lineRasterizationMode_ ), stippledLineEnable( stippledLineEnable_ ), lineStippleFactor( lineStippleFactor_ ), lineStipplePattern( lineStipplePattern_ )
41782     {}
41783 
41784     VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41785 
PipelineRasterizationLineStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41786     PipelineRasterizationLineStateCreateInfoEXT( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41787       : PipelineRasterizationLineStateCreateInfoEXT( *reinterpret_cast<PipelineRasterizationLineStateCreateInfoEXT const *>( &rhs ) )
41788     {}
41789 
41790 
41791     PipelineRasterizationLineStateCreateInfoEXT & operator=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41792 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41793 
operator =VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41794     PipelineRasterizationLineStateCreateInfoEXT & operator=( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
41795     {
41796       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT const *>( &rhs );
41797       return *this;
41798     }
41799 
41800 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41801     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41802     {
41803       pNext = pNext_;
41804       return *this;
41805     }
41806 
setLineRasterizationModeVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41807     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & setLineRasterizationMode( VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode_ ) VULKAN_HPP_NOEXCEPT
41808     {
41809       lineRasterizationMode = lineRasterizationMode_;
41810       return *this;
41811     }
41812 
setStippledLineEnableVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41813     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & setStippledLineEnable( VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ ) VULKAN_HPP_NOEXCEPT
41814     {
41815       stippledLineEnable = stippledLineEnable_;
41816       return *this;
41817     }
41818 
setLineStippleFactorVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41819     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & setLineStippleFactor( uint32_t lineStippleFactor_ ) VULKAN_HPP_NOEXCEPT
41820     {
41821       lineStippleFactor = lineStippleFactor_;
41822       return *this;
41823     }
41824 
setLineStipplePatternVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41825     VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & setLineStipplePattern( uint16_t lineStipplePattern_ ) VULKAN_HPP_NOEXCEPT
41826     {
41827       lineStipplePattern = lineStipplePattern_;
41828       return *this;
41829     }
41830 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41831 
41832 
operator VkPipelineRasterizationLineStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41833     operator VkPipelineRasterizationLineStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
41834     {
41835       return *reinterpret_cast<const VkPipelineRasterizationLineStateCreateInfoEXT*>( this );
41836     }
41837 
operator VkPipelineRasterizationLineStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41838     operator VkPipelineRasterizationLineStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
41839     {
41840       return *reinterpret_cast<VkPipelineRasterizationLineStateCreateInfoEXT*>( this );
41841     }
41842 
41843 #if defined( VULKAN_HPP_USE_REFLECT )
41844 #if 14 <= VULKAN_HPP_CPP_VERSION
41845     auto
41846 #else
41847     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT const &, VULKAN_HPP_NAMESPACE::Bool32 const &, uint32_t const &, uint16_t const &>
41848 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41849       reflect() const VULKAN_HPP_NOEXCEPT
41850     {
41851       return std::tie( sType, pNext, lineRasterizationMode, stippledLineEnable, lineStippleFactor, lineStipplePattern );
41852     }
41853 #endif
41854 
41855 
41856 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
41857 auto operator<=>( PipelineRasterizationLineStateCreateInfoEXT const & ) const = default;
41858 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41859     bool operator==( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41860     {
41861 #if defined( VULKAN_HPP_USE_REFLECT )
41862       return this->reflect() == rhs.reflect();
41863 #else
41864       return ( sType == rhs.sType )
41865           && ( pNext == rhs.pNext )
41866           && ( lineRasterizationMode == rhs.lineRasterizationMode )
41867           && ( stippledLineEnable == rhs.stippledLineEnable )
41868           && ( lineStippleFactor == rhs.lineStippleFactor )
41869           && ( lineStipplePattern == rhs.lineStipplePattern );
41870 #endif
41871     }
41872 
operator !=VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT41873     bool operator!=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
41874     {
41875       return !operator==( rhs );
41876     }
41877 #endif
41878 
41879     public:
41880     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT;
41881     const void * pNext = {};
41882     VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode = VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault;
41883     VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable = {};
41884     uint32_t lineStippleFactor = {};
41885     uint16_t lineStipplePattern = {};
41886 
41887   };
41888 
41889   template <>
41890   struct CppType<StructureType, StructureType::ePipelineRasterizationLineStateCreateInfoEXT>
41891   {
41892     using Type = PipelineRasterizationLineStateCreateInfoEXT;
41893   };
41894 
41895   struct PipelineRenderingCreateInfo
41896   {
41897     using NativeType = VkPipelineRenderingCreateInfo;
41898 
41899     static const bool allowDuplicate = false;
41900     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRenderingCreateInfo;
41901 
41902 
41903 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41904 VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo(uint32_t viewMask_ = {}, uint32_t colorAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ = {}, VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
41905     : pNext( pNext_ ), viewMask( viewMask_ ), colorAttachmentCount( colorAttachmentCount_ ), pColorAttachmentFormats( pColorAttachmentFormats_ ), depthAttachmentFormat( depthAttachmentFormat_ ), stencilAttachmentFormat( stencilAttachmentFormat_ )
41906     {}
41907 
41908     VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41909 
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41910     PipelineRenderingCreateInfo( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41911       : PipelineRenderingCreateInfo( *reinterpret_cast<PipelineRenderingCreateInfo const *>( &rhs ) )
41912     {}
41913 
41914 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineRenderingCreateInfoVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41915     PipelineRenderingCreateInfo( uint32_t viewMask_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_, VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, const void * pNext_ = nullptr )
41916     : pNext( pNext_ ), viewMask( viewMask_ ), colorAttachmentCount( static_cast<uint32_t>( colorAttachmentFormats_.size() ) ), pColorAttachmentFormats( colorAttachmentFormats_.data() ), depthAttachmentFormat( depthAttachmentFormat_ ), stencilAttachmentFormat( stencilAttachmentFormat_ )
41917     {}
41918 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41919 
41920 
41921     PipelineRenderingCreateInfo & operator=( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
41922 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
41923 
operator =VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41924     PipelineRenderingCreateInfo & operator=( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
41925     {
41926       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo const *>( &rhs );
41927       return *this;
41928     }
41929 
41930 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41931     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
41932     {
41933       pNext = pNext_;
41934       return *this;
41935     }
41936 
setViewMaskVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41937     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
41938     {
41939       viewMask = viewMask_;
41940       return *this;
41941     }
41942 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41943     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
41944     {
41945       colorAttachmentCount = colorAttachmentCount_;
41946       return *this;
41947     }
41948 
setPColorAttachmentFormatsVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41949     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setPColorAttachmentFormats( const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
41950     {
41951       pColorAttachmentFormats = pColorAttachmentFormats_;
41952       return *this;
41953     }
41954 
41955 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentFormatsVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41956     PipelineRenderingCreateInfo & setColorAttachmentFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Format> const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT
41957     {
41958       colorAttachmentCount = static_cast<uint32_t>( colorAttachmentFormats_.size() );
41959       pColorAttachmentFormats = colorAttachmentFormats_.data();
41960       return *this;
41961     }
41962 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
41963 
setDepthAttachmentFormatVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41964     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setDepthAttachmentFormat( VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
41965     {
41966       depthAttachmentFormat = depthAttachmentFormat_;
41967       return *this;
41968     }
41969 
setStencilAttachmentFormatVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41970     VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setStencilAttachmentFormat( VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat_ ) VULKAN_HPP_NOEXCEPT
41971     {
41972       stencilAttachmentFormat = stencilAttachmentFormat_;
41973       return *this;
41974     }
41975 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
41976 
41977 
operator VkPipelineRenderingCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41978     operator VkPipelineRenderingCreateInfo const &() const VULKAN_HPP_NOEXCEPT
41979     {
41980       return *reinterpret_cast<const VkPipelineRenderingCreateInfo*>( this );
41981     }
41982 
operator VkPipelineRenderingCreateInfo&VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41983     operator VkPipelineRenderingCreateInfo &() VULKAN_HPP_NOEXCEPT
41984     {
41985       return *reinterpret_cast<VkPipelineRenderingCreateInfo*>( this );
41986     }
41987 
41988 #if defined( VULKAN_HPP_USE_REFLECT )
41989 #if 14 <= VULKAN_HPP_CPP_VERSION
41990     auto
41991 #else
41992     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Format * const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::Format const &>
41993 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo41994       reflect() const VULKAN_HPP_NOEXCEPT
41995     {
41996       return std::tie( sType, pNext, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat );
41997     }
41998 #endif
41999 
42000 
42001 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42002 auto operator<=>( PipelineRenderingCreateInfo const & ) const = default;
42003 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo42004     bool operator==( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
42005     {
42006 #if defined( VULKAN_HPP_USE_REFLECT )
42007       return this->reflect() == rhs.reflect();
42008 #else
42009       return ( sType == rhs.sType )
42010           && ( pNext == rhs.pNext )
42011           && ( viewMask == rhs.viewMask )
42012           && ( colorAttachmentCount == rhs.colorAttachmentCount )
42013           && ( pColorAttachmentFormats == rhs.pColorAttachmentFormats )
42014           && ( depthAttachmentFormat == rhs.depthAttachmentFormat )
42015           && ( stencilAttachmentFormat == rhs.stencilAttachmentFormat );
42016 #endif
42017     }
42018 
operator !=VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo42019     bool operator!=( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
42020     {
42021       return !operator==( rhs );
42022     }
42023 #endif
42024 
42025     public:
42026     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRenderingCreateInfo;
42027     const void * pNext = {};
42028     uint32_t viewMask = {};
42029     uint32_t colorAttachmentCount = {};
42030     const VULKAN_HPP_NAMESPACE::Format * pColorAttachmentFormats = {};
42031     VULKAN_HPP_NAMESPACE::Format depthAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
42032     VULKAN_HPP_NAMESPACE::Format stencilAttachmentFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
42033 
42034   };
42035 
42036   template <>
42037   struct CppType<StructureType, StructureType::ePipelineRenderingCreateInfo>
42038   {
42039     using Type = PipelineRenderingCreateInfo;
42040   };
42041   using PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo;
42042 
42043   struct PipelineSampleLocationsStateCreateInfoEXT
42044   {
42045     using NativeType = VkPipelineSampleLocationsStateCreateInfoEXT;
42046 
42047     static const bool allowDuplicate = false;
42048     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
42049 
42050 
42051 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineSampleLocationsStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42052 VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ = {}, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
42053     : pNext( pNext_ ), sampleLocationsEnable( sampleLocationsEnable_ ), sampleLocationsInfo( sampleLocationsInfo_ )
42054     {}
42055 
42056     VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42057 
PipelineSampleLocationsStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42058     PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42059       : PipelineSampleLocationsStateCreateInfoEXT( *reinterpret_cast<PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs ) )
42060     {}
42061 
42062 
42063     PipelineSampleLocationsStateCreateInfoEXT & operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42064 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42065 
operator =VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42066     PipelineSampleLocationsStateCreateInfoEXT & operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42067     {
42068       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT const *>( &rhs );
42069       return *this;
42070     }
42071 
42072 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42073     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42074     {
42075       pNext = pNext_;
42076       return *this;
42077     }
42078 
setSampleLocationsEnableVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42079     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ ) VULKAN_HPP_NOEXCEPT
42080     {
42081       sampleLocationsEnable = sampleLocationsEnable_;
42082       return *this;
42083     }
42084 
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42085     VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
42086     {
42087       sampleLocationsInfo = sampleLocationsInfo_;
42088       return *this;
42089     }
42090 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42091 
42092 
operator VkPipelineSampleLocationsStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42093     operator VkPipelineSampleLocationsStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
42094     {
42095       return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>( this );
42096     }
42097 
operator VkPipelineSampleLocationsStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42098     operator VkPipelineSampleLocationsStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
42099     {
42100       return *reinterpret_cast<VkPipelineSampleLocationsStateCreateInfoEXT*>( this );
42101     }
42102 
42103 #if defined( VULKAN_HPP_USE_REFLECT )
42104 #if 14 <= VULKAN_HPP_CPP_VERSION
42105     auto
42106 #else
42107     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
42108 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42109       reflect() const VULKAN_HPP_NOEXCEPT
42110     {
42111       return std::tie( sType, pNext, sampleLocationsEnable, sampleLocationsInfo );
42112     }
42113 #endif
42114 
42115 
42116 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42117 auto operator<=>( PipelineSampleLocationsStateCreateInfoEXT const & ) const = default;
42118 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42119     bool operator==( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42120     {
42121 #if defined( VULKAN_HPP_USE_REFLECT )
42122       return this->reflect() == rhs.reflect();
42123 #else
42124       return ( sType == rhs.sType )
42125           && ( pNext == rhs.pNext )
42126           && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
42127           && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
42128 #endif
42129     }
42130 
operator !=VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT42131     bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42132     {
42133       return !operator==( rhs );
42134     }
42135 #endif
42136 
42137     public:
42138     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
42139     const void * pNext = {};
42140     VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable = {};
42141     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
42142 
42143   };
42144 
42145   template <>
42146   struct CppType<StructureType, StructureType::ePipelineSampleLocationsStateCreateInfoEXT>
42147   {
42148     using Type = PipelineSampleLocationsStateCreateInfoEXT;
42149   };
42150 
42151   struct PipelineShaderStageRequiredSubgroupSizeCreateInfo
42152   {
42153     using NativeType = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo;
42154 
42155     static const bool allowDuplicate = false;
42156     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo;
42157 
42158 
42159 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineShaderStageRequiredSubgroupSizeCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo42160 VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfo(uint32_t requiredSubgroupSize_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
42161     : pNext( pNext_ ), requiredSubgroupSize( requiredSubgroupSize_ )
42162     {}
42163 
42164     VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfo( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42165 
PipelineShaderStageRequiredSubgroupSizeCreateInfoVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo42166     PipelineShaderStageRequiredSubgroupSizeCreateInfo( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
42167       : PipelineShaderStageRequiredSubgroupSizeCreateInfo( *reinterpret_cast<PipelineShaderStageRequiredSubgroupSizeCreateInfo const *>( &rhs ) )
42168     {}
42169 
42170 
42171     PipelineShaderStageRequiredSubgroupSizeCreateInfo & operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42172 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42173 
operator =VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo42174     PipelineShaderStageRequiredSubgroupSizeCreateInfo & operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
42175     {
42176       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo const *>( &rhs );
42177       return *this;
42178     }
42179 
42180 
operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo42181     operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
42182     {
42183       return *reinterpret_cast<const VkPipelineShaderStageRequiredSubgroupSizeCreateInfo*>( this );
42184     }
42185 
operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo&VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo42186     operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo &() VULKAN_HPP_NOEXCEPT
42187     {
42188       return *reinterpret_cast<VkPipelineShaderStageRequiredSubgroupSizeCreateInfo*>( this );
42189     }
42190 
42191 #if defined( VULKAN_HPP_USE_REFLECT )
42192 #if 14 <= VULKAN_HPP_CPP_VERSION
42193     auto
42194 #else
42195     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
42196 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo42197       reflect() const VULKAN_HPP_NOEXCEPT
42198     {
42199       return std::tie( sType, pNext, requiredSubgroupSize );
42200     }
42201 #endif
42202 
42203 
42204 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42205 auto operator<=>( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & ) const = default;
42206 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo42207     bool operator==( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
42208     {
42209 #if defined( VULKAN_HPP_USE_REFLECT )
42210       return this->reflect() == rhs.reflect();
42211 #else
42212       return ( sType == rhs.sType )
42213           && ( pNext == rhs.pNext )
42214           && ( requiredSubgroupSize == rhs.requiredSubgroupSize );
42215 #endif
42216     }
42217 
operator !=VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo42218     bool operator!=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
42219     {
42220       return !operator==( rhs );
42221     }
42222 #endif
42223 
42224     public:
42225     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo;
42226     void * pNext = {};
42227     uint32_t requiredSubgroupSize = {};
42228 
42229   };
42230 
42231   template <>
42232   struct CppType<StructureType, StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo>
42233   {
42234     using Type = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
42235   };
42236   using PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
42237   using ShaderRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo;
42238 
42239   struct PipelineTessellationDomainOriginStateCreateInfo
42240   {
42241     using NativeType = VkPipelineTessellationDomainOriginStateCreateInfo;
42242 
42243     static const bool allowDuplicate = false;
42244     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
42245 
42246 
42247 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineTessellationDomainOriginStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42248 VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo(VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
42249     : pNext( pNext_ ), domainOrigin( domainOrigin_ )
42250     {}
42251 
42252     VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42253 
PipelineTessellationDomainOriginStateCreateInfoVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42254     PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
42255       : PipelineTessellationDomainOriginStateCreateInfo( *reinterpret_cast<PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs ) )
42256     {}
42257 
42258 
42259     PipelineTessellationDomainOriginStateCreateInfo & operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42260 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42261 
operator =VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42262     PipelineTessellationDomainOriginStateCreateInfo & operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
42263     {
42264       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo const *>( &rhs );
42265       return *this;
42266     }
42267 
42268 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42269     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42270     {
42271       pNext = pNext_;
42272       return *this;
42273     }
42274 
setDomainOriginVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42275     VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & setDomainOrigin( VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ ) VULKAN_HPP_NOEXCEPT
42276     {
42277       domainOrigin = domainOrigin_;
42278       return *this;
42279     }
42280 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42281 
42282 
operator VkPipelineTessellationDomainOriginStateCreateInfo const&VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42283     operator VkPipelineTessellationDomainOriginStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT
42284     {
42285       return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfo*>( this );
42286     }
42287 
operator VkPipelineTessellationDomainOriginStateCreateInfo&VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42288     operator VkPipelineTessellationDomainOriginStateCreateInfo &() VULKAN_HPP_NOEXCEPT
42289     {
42290       return *reinterpret_cast<VkPipelineTessellationDomainOriginStateCreateInfo*>( this );
42291     }
42292 
42293 #if defined( VULKAN_HPP_USE_REFLECT )
42294 #if 14 <= VULKAN_HPP_CPP_VERSION
42295     auto
42296 #else
42297     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::TessellationDomainOrigin const &>
42298 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42299       reflect() const VULKAN_HPP_NOEXCEPT
42300     {
42301       return std::tie( sType, pNext, domainOrigin );
42302     }
42303 #endif
42304 
42305 
42306 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42307 auto operator<=>( PipelineTessellationDomainOriginStateCreateInfo const & ) const = default;
42308 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42309     bool operator==( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
42310     {
42311 #if defined( VULKAN_HPP_USE_REFLECT )
42312       return this->reflect() == rhs.reflect();
42313 #else
42314       return ( sType == rhs.sType )
42315           && ( pNext == rhs.pNext )
42316           && ( domainOrigin == rhs.domainOrigin );
42317 #endif
42318     }
42319 
operator !=VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo42320     bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
42321     {
42322       return !operator==( rhs );
42323     }
42324 #endif
42325 
42326     public:
42327     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo;
42328     const void * pNext = {};
42329     VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft;
42330 
42331   };
42332 
42333   template <>
42334   struct CppType<StructureType, StructureType::ePipelineTessellationDomainOriginStateCreateInfo>
42335   {
42336     using Type = PipelineTessellationDomainOriginStateCreateInfo;
42337   };
42338   using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo;
42339 
42340   struct VertexInputBindingDivisorDescriptionEXT
42341   {
42342     using NativeType = VkVertexInputBindingDivisorDescriptionEXT;
42343 
42344 
42345 
42346 
42347 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDivisorDescriptionEXTVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42348 VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT(uint32_t binding_ = {}, uint32_t divisor_ = {}) VULKAN_HPP_NOEXCEPT
42349     : binding( binding_ ), divisor( divisor_ )
42350     {}
42351 
42352     VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42353 
VertexInputBindingDivisorDescriptionEXTVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42354     VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42355       : VertexInputBindingDivisorDescriptionEXT( *reinterpret_cast<VertexInputBindingDivisorDescriptionEXT const *>( &rhs ) )
42356     {}
42357 
42358 
42359     VertexInputBindingDivisorDescriptionEXT & operator=( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42360 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42361 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42362     VertexInputBindingDivisorDescriptionEXT & operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42363     {
42364       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT const *>( &rhs );
42365       return *this;
42366     }
42367 
42368 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42369     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionEXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
42370     {
42371       binding = binding_;
42372       return *this;
42373     }
42374 
setDivisorVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42375     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionEXT & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT
42376     {
42377       divisor = divisor_;
42378       return *this;
42379     }
42380 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42381 
42382 
operator VkVertexInputBindingDivisorDescriptionEXT const&VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42383     operator VkVertexInputBindingDivisorDescriptionEXT const &() const VULKAN_HPP_NOEXCEPT
42384     {
42385       return *reinterpret_cast<const VkVertexInputBindingDivisorDescriptionEXT*>( this );
42386     }
42387 
operator VkVertexInputBindingDivisorDescriptionEXT&VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42388     operator VkVertexInputBindingDivisorDescriptionEXT &() VULKAN_HPP_NOEXCEPT
42389     {
42390       return *reinterpret_cast<VkVertexInputBindingDivisorDescriptionEXT*>( this );
42391     }
42392 
42393 #if defined( VULKAN_HPP_USE_REFLECT )
42394 #if 14 <= VULKAN_HPP_CPP_VERSION
42395     auto
42396 #else
42397     std::tuple<uint32_t const &, uint32_t const &>
42398 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42399       reflect() const VULKAN_HPP_NOEXCEPT
42400     {
42401       return std::tie( binding, divisor );
42402     }
42403 #endif
42404 
42405 
42406 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42407 auto operator<=>( VertexInputBindingDivisorDescriptionEXT const & ) const = default;
42408 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42409     bool operator==( VertexInputBindingDivisorDescriptionEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42410     {
42411 #if defined( VULKAN_HPP_USE_REFLECT )
42412       return this->reflect() == rhs.reflect();
42413 #else
42414       return ( binding == rhs.binding )
42415           && ( divisor == rhs.divisor );
42416 #endif
42417     }
42418 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT42419     bool operator!=( VertexInputBindingDivisorDescriptionEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42420     {
42421       return !operator==( rhs );
42422     }
42423 #endif
42424 
42425     public:
42426     uint32_t binding = {};
42427     uint32_t divisor = {};
42428 
42429   };
42430 
42431   struct PipelineVertexInputDivisorStateCreateInfoEXT
42432   {
42433     using NativeType = VkPipelineVertexInputDivisorStateCreateInfoEXT;
42434 
42435     static const bool allowDuplicate = false;
42436     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT;
42437 
42438 
42439 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PipelineVertexInputDivisorStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42440 VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT(uint32_t vertexBindingDivisorCount_ = {}, const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
42441     : pNext( pNext_ ), vertexBindingDivisorCount( vertexBindingDivisorCount_ ), pVertexBindingDivisors( pVertexBindingDivisors_ )
42442     {}
42443 
42444     VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42445 
PipelineVertexInputDivisorStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42446     PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42447       : PipelineVertexInputDivisorStateCreateInfoEXT( *reinterpret_cast<PipelineVertexInputDivisorStateCreateInfoEXT const *>( &rhs ) )
42448     {}
42449 
42450 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PipelineVertexInputDivisorStateCreateInfoEXTVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42451     PipelineVertexInputDivisorStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT> const & vertexBindingDivisors_, const void * pNext_ = nullptr )
42452     : pNext( pNext_ ), vertexBindingDivisorCount( static_cast<uint32_t>( vertexBindingDivisors_.size() ) ), pVertexBindingDivisors( vertexBindingDivisors_.data() )
42453     {}
42454 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42455 
42456 
42457     PipelineVertexInputDivisorStateCreateInfoEXT & operator=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42458 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42459 
operator =VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42460     PipelineVertexInputDivisorStateCreateInfoEXT & operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
42461     {
42462       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT const *>( &rhs );
42463       return *this;
42464     }
42465 
42466 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42467     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42468     {
42469       pNext = pNext_;
42470       return *this;
42471     }
42472 
setVertexBindingDivisorCountVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42473     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) VULKAN_HPP_NOEXCEPT
42474     {
42475       vertexBindingDivisorCount = vertexBindingDivisorCount_;
42476       return *this;
42477     }
42478 
setPVertexBindingDivisorsVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42479     VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & setPVertexBindingDivisors( const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors_ ) VULKAN_HPP_NOEXCEPT
42480     {
42481       pVertexBindingDivisors = pVertexBindingDivisors_;
42482       return *this;
42483     }
42484 
42485 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setVertexBindingDivisorsVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42486     PipelineVertexInputDivisorStateCreateInfoEXT & setVertexBindingDivisors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT> const & vertexBindingDivisors_ ) VULKAN_HPP_NOEXCEPT
42487     {
42488       vertexBindingDivisorCount = static_cast<uint32_t>( vertexBindingDivisors_.size() );
42489       pVertexBindingDivisors = vertexBindingDivisors_.data();
42490       return *this;
42491     }
42492 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42493 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42494 
42495 
operator VkPipelineVertexInputDivisorStateCreateInfoEXT const&VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42496     operator VkPipelineVertexInputDivisorStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
42497     {
42498       return *reinterpret_cast<const VkPipelineVertexInputDivisorStateCreateInfoEXT*>( this );
42499     }
42500 
operator VkPipelineVertexInputDivisorStateCreateInfoEXT&VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42501     operator VkPipelineVertexInputDivisorStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
42502     {
42503       return *reinterpret_cast<VkPipelineVertexInputDivisorStateCreateInfoEXT*>( this );
42504     }
42505 
42506 #if defined( VULKAN_HPP_USE_REFLECT )
42507 #if 14 <= VULKAN_HPP_CPP_VERSION
42508     auto
42509 #else
42510     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * const &>
42511 #endif
reflectVULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42512       reflect() const VULKAN_HPP_NOEXCEPT
42513     {
42514       return std::tie( sType, pNext, vertexBindingDivisorCount, pVertexBindingDivisors );
42515     }
42516 #endif
42517 
42518 
42519 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42520 auto operator<=>( PipelineVertexInputDivisorStateCreateInfoEXT const & ) const = default;
42521 #else
operator ==VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42522     bool operator==( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42523     {
42524 #if defined( VULKAN_HPP_USE_REFLECT )
42525       return this->reflect() == rhs.reflect();
42526 #else
42527       return ( sType == rhs.sType )
42528           && ( pNext == rhs.pNext )
42529           && ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount )
42530           && ( pVertexBindingDivisors == rhs.pVertexBindingDivisors );
42531 #endif
42532     }
42533 
operator !=VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT42534     bool operator!=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
42535     {
42536       return !operator==( rhs );
42537     }
42538 #endif
42539 
42540     public:
42541     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT;
42542     const void * pNext = {};
42543     uint32_t vertexBindingDivisorCount = {};
42544     const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT * pVertexBindingDivisors = {};
42545 
42546   };
42547 
42548   template <>
42549   struct CppType<StructureType, StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT>
42550   {
42551     using Type = PipelineVertexInputDivisorStateCreateInfoEXT;
42552   };
42553 
42554   struct PresentInfoKHR
42555   {
42556     using NativeType = VkPresentInfoKHR;
42557 
42558     static const bool allowDuplicate = false;
42559     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentInfoKHR;
42560 
42561 
42562 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR42563 VULKAN_HPP_CONSTEXPR PresentInfoKHR(uint32_t waitSemaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ = {}, uint32_t swapchainCount_ = {}, const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_ = {}, const uint32_t * pImageIndices_ = {}, VULKAN_HPP_NAMESPACE::Result * pResults_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
42564     : pNext( pNext_ ), waitSemaphoreCount( waitSemaphoreCount_ ), pWaitSemaphores( pWaitSemaphores_ ), swapchainCount( swapchainCount_ ), pSwapchains( pSwapchains_ ), pImageIndices( pImageIndices_ ), pResults( pResults_ )
42565     {}
42566 
42567     VULKAN_HPP_CONSTEXPR PresentInfoKHR( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42568 
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR42569     PresentInfoKHR( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42570       : PresentInfoKHR( *reinterpret_cast<PresentInfoKHR const *>( &rhs ) )
42571     {}
42572 
42573 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentInfoKHRVULKAN_HPP_NAMESPACE::PresentInfoKHR42574     PresentInfoKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const & results_ = {}, const void * pNext_ = nullptr )
42575     : pNext( pNext_ ), waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) ), pWaitSemaphores( waitSemaphores_.data() ), swapchainCount( static_cast<uint32_t>( swapchains_.size() ) ), pSwapchains( swapchains_.data() ), pImageIndices( imageIndices_.data() ), pResults( results_.data() )
42576     {
42577 #ifdef VULKAN_HPP_NO_EXCEPTIONS
42578       VULKAN_HPP_ASSERT( swapchains_.size() == imageIndices_.size() );
42579       VULKAN_HPP_ASSERT( results_.empty() || ( swapchains_.size() == results_.size() ) );
42580       VULKAN_HPP_ASSERT( results_.empty() || ( imageIndices_.size() == results_.size() ) );
42581 #else
42582       if ( swapchains_.size() != imageIndices_.size() )
42583       {
42584         throw LogicError( VULKAN_HPP_NAMESPACE_STRING"::PresentInfoKHR::PresentInfoKHR: swapchains_.size() != imageIndices_.size()" );
42585       }
42586       if ( !results_.empty() && ( swapchains_.size() != results_.size() ) )
42587       {
42588         throw LogicError( VULKAN_HPP_NAMESPACE_STRING"::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( swapchains_.size() != results_.size() )" );
42589       }
42590       if ( !results_.empty() && ( imageIndices_.size() != results_.size() ) )
42591       {
42592         throw LogicError( VULKAN_HPP_NAMESPACE_STRING"::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( imageIndices_.size() != results_.size() )" );
42593       }
42594 #endif /*VULKAN_HPP_NO_EXCEPTIONS*/
42595     }
42596 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42597 
42598 
42599     PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42600 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42601 
operator =VULKAN_HPP_NAMESPACE::PresentInfoKHR42602     PresentInfoKHR & operator=( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42603     {
42604       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentInfoKHR const *>( &rhs );
42605       return *this;
42606     }
42607 
42608 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentInfoKHR42609     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
42610     {
42611       pNext = pNext_;
42612       return *this;
42613     }
42614 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::PresentInfoKHR42615     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
42616     {
42617       waitSemaphoreCount = waitSemaphoreCount_;
42618       return *this;
42619     }
42620 
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::PresentInfoKHR42621     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
42622     {
42623       pWaitSemaphores = pWaitSemaphores_;
42624       return *this;
42625     }
42626 
42627 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoresVULKAN_HPP_NAMESPACE::PresentInfoKHR42628     PresentInfoKHR & setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT
42629     {
42630       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
42631       pWaitSemaphores = waitSemaphores_.data();
42632       return *this;
42633     }
42634 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42635 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentInfoKHR42636     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
42637     {
42638       swapchainCount = swapchainCount_;
42639       return *this;
42640     }
42641 
setPSwapchainsVULKAN_HPP_NAMESPACE::PresentInfoKHR42642     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPSwapchains( const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains_ ) VULKAN_HPP_NOEXCEPT
42643     {
42644       pSwapchains = pSwapchains_;
42645       return *this;
42646     }
42647 
42648 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSwapchainsVULKAN_HPP_NAMESPACE::PresentInfoKHR42649     PresentInfoKHR & setSwapchains( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains_ ) VULKAN_HPP_NOEXCEPT
42650     {
42651       swapchainCount = static_cast<uint32_t>( swapchains_.size() );
42652       pSwapchains = swapchains_.data();
42653       return *this;
42654     }
42655 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42656 
setPImageIndicesVULKAN_HPP_NAMESPACE::PresentInfoKHR42657     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPImageIndices( const uint32_t * pImageIndices_ ) VULKAN_HPP_NOEXCEPT
42658     {
42659       pImageIndices = pImageIndices_;
42660       return *this;
42661     }
42662 
42663 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageIndicesVULKAN_HPP_NAMESPACE::PresentInfoKHR42664     PresentInfoKHR & setImageIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & imageIndices_ ) VULKAN_HPP_NOEXCEPT
42665     {
42666       swapchainCount = static_cast<uint32_t>( imageIndices_.size() );
42667       pImageIndices = imageIndices_.data();
42668       return *this;
42669     }
42670 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42671 
setPResultsVULKAN_HPP_NAMESPACE::PresentInfoKHR42672     VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPResults( VULKAN_HPP_NAMESPACE::Result * pResults_ ) VULKAN_HPP_NOEXCEPT
42673     {
42674       pResults = pResults_;
42675       return *this;
42676     }
42677 
42678 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResultsVULKAN_HPP_NAMESPACE::PresentInfoKHR42679     PresentInfoKHR & setResults( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<VULKAN_HPP_NAMESPACE::Result> const & results_ ) VULKAN_HPP_NOEXCEPT
42680     {
42681       swapchainCount = static_cast<uint32_t>( results_.size() );
42682       pResults = results_.data();
42683       return *this;
42684     }
42685 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42686 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42687 
42688 
operator VkPresentInfoKHR const&VULKAN_HPP_NAMESPACE::PresentInfoKHR42689     operator VkPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT
42690     {
42691       return *reinterpret_cast<const VkPresentInfoKHR*>( this );
42692     }
42693 
operator VkPresentInfoKHR&VULKAN_HPP_NAMESPACE::PresentInfoKHR42694     operator VkPresentInfoKHR &() VULKAN_HPP_NOEXCEPT
42695     {
42696       return *reinterpret_cast<VkPresentInfoKHR*>( this );
42697     }
42698 
42699 #if defined( VULKAN_HPP_USE_REFLECT )
42700 #if 14 <= VULKAN_HPP_CPP_VERSION
42701     auto
42702 #else
42703     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Semaphore * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SwapchainKHR * const &, const uint32_t * const &, VULKAN_HPP_NAMESPACE::Result * const &>
42704 #endif
reflectVULKAN_HPP_NAMESPACE::PresentInfoKHR42705       reflect() const VULKAN_HPP_NOEXCEPT
42706     {
42707       return std::tie( sType, pNext, waitSemaphoreCount, pWaitSemaphores, swapchainCount, pSwapchains, pImageIndices, pResults );
42708     }
42709 #endif
42710 
42711 
42712 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42713 auto operator<=>( PresentInfoKHR const & ) const = default;
42714 #else
operator ==VULKAN_HPP_NAMESPACE::PresentInfoKHR42715     bool operator==( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42716     {
42717 #if defined( VULKAN_HPP_USE_REFLECT )
42718       return this->reflect() == rhs.reflect();
42719 #else
42720       return ( sType == rhs.sType )
42721           && ( pNext == rhs.pNext )
42722           && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
42723           && ( pWaitSemaphores == rhs.pWaitSemaphores )
42724           && ( swapchainCount == rhs.swapchainCount )
42725           && ( pSwapchains == rhs.pSwapchains )
42726           && ( pImageIndices == rhs.pImageIndices )
42727           && ( pResults == rhs.pResults );
42728 #endif
42729     }
42730 
operator !=VULKAN_HPP_NAMESPACE::PresentInfoKHR42731     bool operator!=( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42732     {
42733       return !operator==( rhs );
42734     }
42735 #endif
42736 
42737     public:
42738     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentInfoKHR;
42739     const void * pNext = {};
42740     uint32_t waitSemaphoreCount = {};
42741     const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores = {};
42742     uint32_t swapchainCount = {};
42743     const VULKAN_HPP_NAMESPACE::SwapchainKHR * pSwapchains = {};
42744     const uint32_t * pImageIndices = {};
42745     VULKAN_HPP_NAMESPACE::Result * pResults = {};
42746 
42747   };
42748 
42749   template <>
42750   struct CppType<StructureType, StructureType::ePresentInfoKHR>
42751   {
42752     using Type = PresentInfoKHR;
42753   };
42754 
42755   struct RectLayerKHR
42756   {
42757     using NativeType = VkRectLayerKHR;
42758 
42759 
42760 
42761 
42762 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR42763 VULKAN_HPP_CONSTEXPR RectLayerKHR(VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, VULKAN_HPP_NAMESPACE::Extent2D extent_ = {}, uint32_t layer_ = {}) VULKAN_HPP_NOEXCEPT
42764     : offset( offset_ ), extent( extent_ ), layer( layer_ )
42765     {}
42766 
42767     VULKAN_HPP_CONSTEXPR RectLayerKHR( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42768 
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR42769     RectLayerKHR( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42770       : RectLayerKHR( *reinterpret_cast<RectLayerKHR const *>( &rhs ) )
42771     {}
42772 
42773 
RectLayerKHRVULKAN_HPP_NAMESPACE::RectLayerKHR42774     explicit RectLayerKHR( Rect2D const & rect2D, uint32_t layer_ = {} )
42775       : offset( rect2D.offset )
42776       , extent( rect2D.extent )
42777     , layer( layer_ )
42778     {}
42779 
42780     RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42781 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42782 
operator =VULKAN_HPP_NAMESPACE::RectLayerKHR42783     RectLayerKHR & operator=( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42784     {
42785       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RectLayerKHR const *>( &rhs );
42786       return *this;
42787     }
42788 
42789 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setOffsetVULKAN_HPP_NAMESPACE::RectLayerKHR42790     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT
42791     {
42792       offset = offset_;
42793       return *this;
42794     }
42795 
setExtentVULKAN_HPP_NAMESPACE::RectLayerKHR42796     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT
42797     {
42798       extent = extent_;
42799       return *this;
42800     }
42801 
setLayerVULKAN_HPP_NAMESPACE::RectLayerKHR42802     VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setLayer( uint32_t layer_ ) VULKAN_HPP_NOEXCEPT
42803     {
42804       layer = layer_;
42805       return *this;
42806     }
42807 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42808 
42809 
operator VkRectLayerKHR const&VULKAN_HPP_NAMESPACE::RectLayerKHR42810     operator VkRectLayerKHR const &() const VULKAN_HPP_NOEXCEPT
42811     {
42812       return *reinterpret_cast<const VkRectLayerKHR*>( this );
42813     }
42814 
operator VkRectLayerKHR&VULKAN_HPP_NAMESPACE::RectLayerKHR42815     operator VkRectLayerKHR &() VULKAN_HPP_NOEXCEPT
42816     {
42817       return *reinterpret_cast<VkRectLayerKHR*>( this );
42818     }
42819 
42820 #if defined( VULKAN_HPP_USE_REFLECT )
42821 #if 14 <= VULKAN_HPP_CPP_VERSION
42822     auto
42823 #else
42824     std::tuple<VULKAN_HPP_NAMESPACE::Offset2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &>
42825 #endif
reflectVULKAN_HPP_NAMESPACE::RectLayerKHR42826       reflect() const VULKAN_HPP_NOEXCEPT
42827     {
42828       return std::tie( offset, extent, layer );
42829     }
42830 #endif
42831 
42832 
42833 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42834 auto operator<=>( RectLayerKHR const & ) const = default;
42835 #else
operator ==VULKAN_HPP_NAMESPACE::RectLayerKHR42836     bool operator==( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42837     {
42838 #if defined( VULKAN_HPP_USE_REFLECT )
42839       return this->reflect() == rhs.reflect();
42840 #else
42841       return ( offset == rhs.offset )
42842           && ( extent == rhs.extent )
42843           && ( layer == rhs.layer );
42844 #endif
42845     }
42846 
operator !=VULKAN_HPP_NAMESPACE::RectLayerKHR42847     bool operator!=( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42848     {
42849       return !operator==( rhs );
42850     }
42851 #endif
42852 
42853     public:
42854     VULKAN_HPP_NAMESPACE::Offset2D offset = {};
42855     VULKAN_HPP_NAMESPACE::Extent2D extent = {};
42856     uint32_t layer = {};
42857 
42858   };
42859 
42860   struct PresentRegionKHR
42861   {
42862     using NativeType = VkPresentRegionKHR;
42863 
42864 
42865 
42866 
42867 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR42868 VULKAN_HPP_CONSTEXPR PresentRegionKHR(uint32_t rectangleCount_ = {}, const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ = {}) VULKAN_HPP_NOEXCEPT
42869     : rectangleCount( rectangleCount_ ), pRectangles( pRectangles_ )
42870     {}
42871 
42872     VULKAN_HPP_CONSTEXPR PresentRegionKHR( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42873 
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR42874     PresentRegionKHR( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42875       : PresentRegionKHR( *reinterpret_cast<PresentRegionKHR const *>( &rhs ) )
42876     {}
42877 
42878 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentRegionKHRVULKAN_HPP_NAMESPACE::PresentRegionKHR42879     PresentRegionKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ )
42880     : rectangleCount( static_cast<uint32_t>( rectangles_.size() ) ), pRectangles( rectangles_.data() )
42881     {}
42882 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42883 
42884 
42885     PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42886 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42887 
operator =VULKAN_HPP_NAMESPACE::PresentRegionKHR42888     PresentRegionKHR & operator=( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42889     {
42890       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionKHR const *>( &rhs );
42891       return *this;
42892     }
42893 
42894 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setRectangleCountVULKAN_HPP_NAMESPACE::PresentRegionKHR42895     VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) VULKAN_HPP_NOEXCEPT
42896     {
42897       rectangleCount = rectangleCount_;
42898       return *this;
42899     }
42900 
setPRectanglesVULKAN_HPP_NAMESPACE::PresentRegionKHR42901     VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setPRectangles( const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles_ ) VULKAN_HPP_NOEXCEPT
42902     {
42903       pRectangles = pRectangles_;
42904       return *this;
42905     }
42906 
42907 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRectanglesVULKAN_HPP_NAMESPACE::PresentRegionKHR42908     PresentRegionKHR & setRectangles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RectLayerKHR> const & rectangles_ ) VULKAN_HPP_NOEXCEPT
42909     {
42910       rectangleCount = static_cast<uint32_t>( rectangles_.size() );
42911       pRectangles = rectangles_.data();
42912       return *this;
42913     }
42914 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42915 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
42916 
42917 
operator VkPresentRegionKHR const&VULKAN_HPP_NAMESPACE::PresentRegionKHR42918     operator VkPresentRegionKHR const &() const VULKAN_HPP_NOEXCEPT
42919     {
42920       return *reinterpret_cast<const VkPresentRegionKHR*>( this );
42921     }
42922 
operator VkPresentRegionKHR&VULKAN_HPP_NAMESPACE::PresentRegionKHR42923     operator VkPresentRegionKHR &() VULKAN_HPP_NOEXCEPT
42924     {
42925       return *reinterpret_cast<VkPresentRegionKHR*>( this );
42926     }
42927 
42928 #if defined( VULKAN_HPP_USE_REFLECT )
42929 #if 14 <= VULKAN_HPP_CPP_VERSION
42930     auto
42931 #else
42932     std::tuple<uint32_t const &, const VULKAN_HPP_NAMESPACE::RectLayerKHR * const &>
42933 #endif
reflectVULKAN_HPP_NAMESPACE::PresentRegionKHR42934       reflect() const VULKAN_HPP_NOEXCEPT
42935     {
42936       return std::tie( rectangleCount, pRectangles );
42937     }
42938 #endif
42939 
42940 
42941 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
42942 auto operator<=>( PresentRegionKHR const & ) const = default;
42943 #else
operator ==VULKAN_HPP_NAMESPACE::PresentRegionKHR42944     bool operator==( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42945     {
42946 #if defined( VULKAN_HPP_USE_REFLECT )
42947       return this->reflect() == rhs.reflect();
42948 #else
42949       return ( rectangleCount == rhs.rectangleCount )
42950           && ( pRectangles == rhs.pRectangles );
42951 #endif
42952     }
42953 
operator !=VULKAN_HPP_NAMESPACE::PresentRegionKHR42954     bool operator!=( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
42955     {
42956       return !operator==( rhs );
42957     }
42958 #endif
42959 
42960     public:
42961     uint32_t rectangleCount = {};
42962     const VULKAN_HPP_NAMESPACE::RectLayerKHR * pRectangles = {};
42963 
42964   };
42965 
42966   struct PresentRegionsKHR
42967   {
42968     using NativeType = VkPresentRegionsKHR;
42969 
42970     static const bool allowDuplicate = false;
42971     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentRegionsKHR;
42972 
42973 
42974 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR42975 VULKAN_HPP_CONSTEXPR PresentRegionsKHR(uint32_t swapchainCount_ = {}, const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
42976     : pNext( pNext_ ), swapchainCount( swapchainCount_ ), pRegions( pRegions_ )
42977     {}
42978 
42979     VULKAN_HPP_CONSTEXPR PresentRegionsKHR( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42980 
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR42981     PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42982       : PresentRegionsKHR( *reinterpret_cast<PresentRegionsKHR const *>( &rhs ) )
42983     {}
42984 
42985 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
PresentRegionsKHRVULKAN_HPP_NAMESPACE::PresentRegionsKHR42986     PresentRegionsKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_, const void * pNext_ = nullptr )
42987     : pNext( pNext_ ), swapchainCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
42988     {}
42989 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
42990 
42991 
42992     PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
42993 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
42994 
operator =VULKAN_HPP_NAMESPACE::PresentRegionsKHR42995     PresentRegionsKHR & operator=( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT
42996     {
42997       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PresentRegionsKHR const *>( &rhs );
42998       return *this;
42999     }
43000 
43001 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PresentRegionsKHR43002     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43003     {
43004       pNext = pNext_;
43005       return *this;
43006     }
43007 
setSwapchainCountVULKAN_HPP_NAMESPACE::PresentRegionsKHR43008     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT
43009     {
43010       swapchainCount = swapchainCount_;
43011       return *this;
43012     }
43013 
setPRegionsVULKAN_HPP_NAMESPACE::PresentRegionsKHR43014     VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPRegions( const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions_ ) VULKAN_HPP_NOEXCEPT
43015     {
43016       pRegions = pRegions_;
43017       return *this;
43018     }
43019 
43020 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::PresentRegionsKHR43021     PresentRegionsKHR & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PresentRegionKHR> const & regions_ ) VULKAN_HPP_NOEXCEPT
43022     {
43023       swapchainCount = static_cast<uint32_t>( regions_.size() );
43024       pRegions = regions_.data();
43025       return *this;
43026     }
43027 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43028 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43029 
43030 
operator VkPresentRegionsKHR const&VULKAN_HPP_NAMESPACE::PresentRegionsKHR43031     operator VkPresentRegionsKHR const &() const VULKAN_HPP_NOEXCEPT
43032     {
43033       return *reinterpret_cast<const VkPresentRegionsKHR*>( this );
43034     }
43035 
operator VkPresentRegionsKHR&VULKAN_HPP_NAMESPACE::PresentRegionsKHR43036     operator VkPresentRegionsKHR &() VULKAN_HPP_NOEXCEPT
43037     {
43038       return *reinterpret_cast<VkPresentRegionsKHR*>( this );
43039     }
43040 
43041 #if defined( VULKAN_HPP_USE_REFLECT )
43042 #if 14 <= VULKAN_HPP_CPP_VERSION
43043     auto
43044 #else
43045     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::PresentRegionKHR * const &>
43046 #endif
reflectVULKAN_HPP_NAMESPACE::PresentRegionsKHR43047       reflect() const VULKAN_HPP_NOEXCEPT
43048     {
43049       return std::tie( sType, pNext, swapchainCount, pRegions );
43050     }
43051 #endif
43052 
43053 
43054 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43055 auto operator<=>( PresentRegionsKHR const & ) const = default;
43056 #else
operator ==VULKAN_HPP_NAMESPACE::PresentRegionsKHR43057     bool operator==( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43058     {
43059 #if defined( VULKAN_HPP_USE_REFLECT )
43060       return this->reflect() == rhs.reflect();
43061 #else
43062       return ( sType == rhs.sType )
43063           && ( pNext == rhs.pNext )
43064           && ( swapchainCount == rhs.swapchainCount )
43065           && ( pRegions == rhs.pRegions );
43066 #endif
43067     }
43068 
operator !=VULKAN_HPP_NAMESPACE::PresentRegionsKHR43069     bool operator!=( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43070     {
43071       return !operator==( rhs );
43072     }
43073 #endif
43074 
43075     public:
43076     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentRegionsKHR;
43077     const void * pNext = {};
43078     uint32_t swapchainCount = {};
43079     const VULKAN_HPP_NAMESPACE::PresentRegionKHR * pRegions = {};
43080 
43081   };
43082 
43083   template <>
43084   struct CppType<StructureType, StructureType::ePresentRegionsKHR>
43085   {
43086     using Type = PresentRegionsKHR;
43087   };
43088 
43089   struct PrivateDataSlotCreateInfo
43090   {
43091     using NativeType = VkPrivateDataSlotCreateInfo;
43092 
43093     static const bool allowDuplicate = false;
43094     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePrivateDataSlotCreateInfo;
43095 
43096 
43097 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
PrivateDataSlotCreateInfoVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43098 VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfo(VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
43099     : pNext( pNext_ ), flags( flags_ )
43100     {}
43101 
43102     VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfo( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43103 
PrivateDataSlotCreateInfoVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43104     PrivateDataSlotCreateInfo( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
43105       : PrivateDataSlotCreateInfo( *reinterpret_cast<PrivateDataSlotCreateInfo const *>( &rhs ) )
43106     {}
43107 
43108 
43109     PrivateDataSlotCreateInfo & operator=( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43110 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43111 
operator =VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43112     PrivateDataSlotCreateInfo & operator=( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
43113     {
43114       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const *>( &rhs );
43115       return *this;
43116     }
43117 
43118 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43119     VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43120     {
43121       pNext = pNext_;
43122       return *this;
43123     }
43124 
setFlagsVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43125     VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
43126     {
43127       flags = flags_;
43128       return *this;
43129     }
43130 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43131 
43132 
operator VkPrivateDataSlotCreateInfo const&VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43133     operator VkPrivateDataSlotCreateInfo const &() const VULKAN_HPP_NOEXCEPT
43134     {
43135       return *reinterpret_cast<const VkPrivateDataSlotCreateInfo*>( this );
43136     }
43137 
operator VkPrivateDataSlotCreateInfo&VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43138     operator VkPrivateDataSlotCreateInfo &() VULKAN_HPP_NOEXCEPT
43139     {
43140       return *reinterpret_cast<VkPrivateDataSlotCreateInfo*>( this );
43141     }
43142 
43143 #if defined( VULKAN_HPP_USE_REFLECT )
43144 #if 14 <= VULKAN_HPP_CPP_VERSION
43145     auto
43146 #else
43147     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags const &>
43148 #endif
reflectVULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43149       reflect() const VULKAN_HPP_NOEXCEPT
43150     {
43151       return std::tie( sType, pNext, flags );
43152     }
43153 #endif
43154 
43155 
43156 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43157 auto operator<=>( PrivateDataSlotCreateInfo const & ) const = default;
43158 #else
operator ==VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43159     bool operator==( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
43160     {
43161 #if defined( VULKAN_HPP_USE_REFLECT )
43162       return this->reflect() == rhs.reflect();
43163 #else
43164       return ( sType == rhs.sType )
43165           && ( pNext == rhs.pNext )
43166           && ( flags == rhs.flags );
43167 #endif
43168     }
43169 
operator !=VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo43170     bool operator!=( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
43171     {
43172       return !operator==( rhs );
43173     }
43174 #endif
43175 
43176     public:
43177     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePrivateDataSlotCreateInfo;
43178     const void * pNext = {};
43179     VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlags flags = {};
43180 
43181   };
43182 
43183   template <>
43184   struct CppType<StructureType, StructureType::ePrivateDataSlotCreateInfo>
43185   {
43186     using Type = PrivateDataSlotCreateInfo;
43187   };
43188   using PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo;
43189 
43190   struct ProtectedSubmitInfo
43191   {
43192     using NativeType = VkProtectedSubmitInfo;
43193 
43194     static const bool allowDuplicate = false;
43195     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eProtectedSubmitInfo;
43196 
43197 
43198 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ProtectedSubmitInfoVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43199 VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo(VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
43200     : pNext( pNext_ ), protectedSubmit( protectedSubmit_ )
43201     {}
43202 
43203     VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43204 
ProtectedSubmitInfoVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43205     ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
43206       : ProtectedSubmitInfo( *reinterpret_cast<ProtectedSubmitInfo const *>( &rhs ) )
43207     {}
43208 
43209 
43210     ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43211 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43212 
operator =VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43213     ProtectedSubmitInfo & operator=( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
43214     {
43215       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo const *>( &rhs );
43216       return *this;
43217     }
43218 
43219 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43220     VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43221     {
43222       pNext = pNext_;
43223       return *this;
43224     }
43225 
setProtectedSubmitVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43226     VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setProtectedSubmit( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ ) VULKAN_HPP_NOEXCEPT
43227     {
43228       protectedSubmit = protectedSubmit_;
43229       return *this;
43230     }
43231 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43232 
43233 
operator VkProtectedSubmitInfo const&VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43234     operator VkProtectedSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
43235     {
43236       return *reinterpret_cast<const VkProtectedSubmitInfo*>( this );
43237     }
43238 
operator VkProtectedSubmitInfo&VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43239     operator VkProtectedSubmitInfo &() VULKAN_HPP_NOEXCEPT
43240     {
43241       return *reinterpret_cast<VkProtectedSubmitInfo*>( this );
43242     }
43243 
43244 #if defined( VULKAN_HPP_USE_REFLECT )
43245 #if 14 <= VULKAN_HPP_CPP_VERSION
43246     auto
43247 #else
43248     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
43249 #endif
reflectVULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43250       reflect() const VULKAN_HPP_NOEXCEPT
43251     {
43252       return std::tie( sType, pNext, protectedSubmit );
43253     }
43254 #endif
43255 
43256 
43257 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43258 auto operator<=>( ProtectedSubmitInfo const & ) const = default;
43259 #else
operator ==VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43260     bool operator==( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
43261     {
43262 #if defined( VULKAN_HPP_USE_REFLECT )
43263       return this->reflect() == rhs.reflect();
43264 #else
43265       return ( sType == rhs.sType )
43266           && ( pNext == rhs.pNext )
43267           && ( protectedSubmit == rhs.protectedSubmit );
43268 #endif
43269     }
43270 
operator !=VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo43271     bool operator!=( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
43272     {
43273       return !operator==( rhs );
43274     }
43275 #endif
43276 
43277     public:
43278     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eProtectedSubmitInfo;
43279     const void * pNext = {};
43280     VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit = {};
43281 
43282   };
43283 
43284   template <>
43285   struct CppType<StructureType, StructureType::eProtectedSubmitInfo>
43286   {
43287     using Type = ProtectedSubmitInfo;
43288   };
43289 
43290   struct QueryPoolCreateInfo
43291   {
43292     using NativeType = VkQueryPoolCreateInfo;
43293 
43294     static const bool allowDuplicate = false;
43295     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolCreateInfo;
43296 
43297 
43298 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolCreateInfoVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43299 VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo(VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::QueryType queryType_ = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion, uint32_t queryCount_ = {}, VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
43300     : pNext( pNext_ ), flags( flags_ ), queryType( queryType_ ), queryCount( queryCount_ ), pipelineStatistics( pipelineStatistics_ )
43301     {}
43302 
43303     VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43304 
QueryPoolCreateInfoVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43305     QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
43306       : QueryPoolCreateInfo( *reinterpret_cast<QueryPoolCreateInfo const *>( &rhs ) )
43307     {}
43308 
43309 
43310     QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43311 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43312 
operator =VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43313     QueryPoolCreateInfo & operator=( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
43314     {
43315       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const *>( &rhs );
43316       return *this;
43317     }
43318 
43319 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43320     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43321     {
43322       pNext = pNext_;
43323       return *this;
43324     }
43325 
setFlagsVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43326     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
43327     {
43328       flags = flags_;
43329       return *this;
43330     }
43331 
setQueryTypeVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43332     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryType( VULKAN_HPP_NAMESPACE::QueryType queryType_ ) VULKAN_HPP_NOEXCEPT
43333     {
43334       queryType = queryType_;
43335       return *this;
43336     }
43337 
setQueryCountVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43338     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryCount( uint32_t queryCount_ ) VULKAN_HPP_NOEXCEPT
43339     {
43340       queryCount = queryCount_;
43341       return *this;
43342     }
43343 
setPipelineStatisticsVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43344     VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT
43345     {
43346       pipelineStatistics = pipelineStatistics_;
43347       return *this;
43348     }
43349 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43350 
43351 
operator VkQueryPoolCreateInfo const&VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43352     operator VkQueryPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT
43353     {
43354       return *reinterpret_cast<const VkQueryPoolCreateInfo*>( this );
43355     }
43356 
operator VkQueryPoolCreateInfo&VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43357     operator VkQueryPoolCreateInfo &() VULKAN_HPP_NOEXCEPT
43358     {
43359       return *reinterpret_cast<VkQueryPoolCreateInfo*>( this );
43360     }
43361 
43362 #if defined( VULKAN_HPP_USE_REFLECT )
43363 #if 14 <= VULKAN_HPP_CPP_VERSION
43364     auto
43365 #else
43366     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags const &, VULKAN_HPP_NAMESPACE::QueryType const &, uint32_t const &, VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags const &>
43367 #endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43368       reflect() const VULKAN_HPP_NOEXCEPT
43369     {
43370       return std::tie( sType, pNext, flags, queryType, queryCount, pipelineStatistics );
43371     }
43372 #endif
43373 
43374 
43375 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43376 auto operator<=>( QueryPoolCreateInfo const & ) const = default;
43377 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43378     bool operator==( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
43379     {
43380 #if defined( VULKAN_HPP_USE_REFLECT )
43381       return this->reflect() == rhs.reflect();
43382 #else
43383       return ( sType == rhs.sType )
43384           && ( pNext == rhs.pNext )
43385           && ( flags == rhs.flags )
43386           && ( queryType == rhs.queryType )
43387           && ( queryCount == rhs.queryCount )
43388           && ( pipelineStatistics == rhs.pipelineStatistics );
43389 #endif
43390     }
43391 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo43392     bool operator!=( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
43393     {
43394       return !operator==( rhs );
43395     }
43396 #endif
43397 
43398     public:
43399     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolCreateInfo;
43400     const void * pNext = {};
43401     VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags = {};
43402     VULKAN_HPP_NAMESPACE::QueryType queryType = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion;
43403     uint32_t queryCount = {};
43404     VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {};
43405 
43406   };
43407 
43408   template <>
43409   struct CppType<StructureType, StructureType::eQueryPoolCreateInfo>
43410   {
43411     using Type = QueryPoolCreateInfo;
43412   };
43413 
43414   struct QueryPoolPerformanceCreateInfoKHR
43415   {
43416     using NativeType = VkQueryPoolPerformanceCreateInfoKHR;
43417 
43418     static const bool allowDuplicate = false;
43419     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolPerformanceCreateInfoKHR;
43420 
43421 
43422 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43423 VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR(uint32_t queueFamilyIndex_ = {}, uint32_t counterIndexCount_ = {}, const uint32_t * pCounterIndices_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
43424     : pNext( pNext_ ), queueFamilyIndex( queueFamilyIndex_ ), counterIndexCount( counterIndexCount_ ), pCounterIndices( pCounterIndices_ )
43425     {}
43426 
43427     VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43428 
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43429     QueryPoolPerformanceCreateInfoKHR( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
43430       : QueryPoolPerformanceCreateInfoKHR( *reinterpret_cast<QueryPoolPerformanceCreateInfoKHR const *>( &rhs ) )
43431     {}
43432 
43433 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
QueryPoolPerformanceCreateInfoKHRVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43434     QueryPoolPerformanceCreateInfoKHR( uint32_t queueFamilyIndex_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_, const void * pNext_ = nullptr )
43435     : pNext( pNext_ ), queueFamilyIndex( queueFamilyIndex_ ), counterIndexCount( static_cast<uint32_t>( counterIndices_.size() ) ), pCounterIndices( counterIndices_.data() )
43436     {}
43437 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43438 
43439 
43440     QueryPoolPerformanceCreateInfoKHR & operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43441 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43442 
operator =VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43443     QueryPoolPerformanceCreateInfoKHR & operator=( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
43444     {
43445       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR const *>( &rhs );
43446       return *this;
43447     }
43448 
43449 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43450     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43451     {
43452       pNext = pNext_;
43453       return *this;
43454     }
43455 
setQueueFamilyIndexVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43456     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT
43457     {
43458       queueFamilyIndex = queueFamilyIndex_;
43459       return *this;
43460     }
43461 
setCounterIndexCountVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43462     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setCounterIndexCount( uint32_t counterIndexCount_ ) VULKAN_HPP_NOEXCEPT
43463     {
43464       counterIndexCount = counterIndexCount_;
43465       return *this;
43466     }
43467 
setPCounterIndicesVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43468     VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPCounterIndices( const uint32_t * pCounterIndices_ ) VULKAN_HPP_NOEXCEPT
43469     {
43470       pCounterIndices = pCounterIndices_;
43471       return *this;
43472     }
43473 
43474 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCounterIndicesVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43475     QueryPoolPerformanceCreateInfoKHR & setCounterIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & counterIndices_ ) VULKAN_HPP_NOEXCEPT
43476     {
43477       counterIndexCount = static_cast<uint32_t>( counterIndices_.size() );
43478       pCounterIndices = counterIndices_.data();
43479       return *this;
43480     }
43481 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43482 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43483 
43484 
operator VkQueryPoolPerformanceCreateInfoKHR const&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43485     operator VkQueryPoolPerformanceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
43486     {
43487       return *reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR*>( this );
43488     }
43489 
operator VkQueryPoolPerformanceCreateInfoKHR&VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43490     operator VkQueryPoolPerformanceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
43491     {
43492       return *reinterpret_cast<VkQueryPoolPerformanceCreateInfoKHR*>( this );
43493     }
43494 
43495 #if defined( VULKAN_HPP_USE_REFLECT )
43496 #if 14 <= VULKAN_HPP_CPP_VERSION
43497     auto
43498 #else
43499     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, const uint32_t * const &>
43500 #endif
reflectVULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43501       reflect() const VULKAN_HPP_NOEXCEPT
43502     {
43503       return std::tie( sType, pNext, queueFamilyIndex, counterIndexCount, pCounterIndices );
43504     }
43505 #endif
43506 
43507 
43508 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43509 auto operator<=>( QueryPoolPerformanceCreateInfoKHR const & ) const = default;
43510 #else
operator ==VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43511     bool operator==( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43512     {
43513 #if defined( VULKAN_HPP_USE_REFLECT )
43514       return this->reflect() == rhs.reflect();
43515 #else
43516       return ( sType == rhs.sType )
43517           && ( pNext == rhs.pNext )
43518           && ( queueFamilyIndex == rhs.queueFamilyIndex )
43519           && ( counterIndexCount == rhs.counterIndexCount )
43520           && ( pCounterIndices == rhs.pCounterIndices );
43521 #endif
43522     }
43523 
operator !=VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR43524     bool operator!=( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43525     {
43526       return !operator==( rhs );
43527     }
43528 #endif
43529 
43530     public:
43531     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceCreateInfoKHR;
43532     const void * pNext = {};
43533     uint32_t queueFamilyIndex = {};
43534     uint32_t counterIndexCount = {};
43535     const uint32_t * pCounterIndices = {};
43536 
43537   };
43538 
43539   template <>
43540   struct CppType<StructureType, StructureType::eQueryPoolPerformanceCreateInfoKHR>
43541   {
43542     using Type = QueryPoolPerformanceCreateInfoKHR;
43543   };
43544 
43545   struct QueueFamilyCheckpointProperties2NV
43546   {
43547     using NativeType = VkQueueFamilyCheckpointProperties2NV;
43548 
43549     static const bool allowDuplicate = false;
43550     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyCheckpointProperties2NV;
43551 
43552 
43553 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyCheckpointProperties2NVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV43554 VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV(VULKAN_HPP_NAMESPACE::PipelineStageFlags2 checkpointExecutionStageMask_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
43555     : pNext( pNext_ ), checkpointExecutionStageMask( checkpointExecutionStageMask_ )
43556     {}
43557 
43558     VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43559 
QueueFamilyCheckpointProperties2NVVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV43560     QueueFamilyCheckpointProperties2NV( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT
43561       : QueueFamilyCheckpointProperties2NV( *reinterpret_cast<QueueFamilyCheckpointProperties2NV const *>( &rhs ) )
43562     {}
43563 
43564 
43565     QueueFamilyCheckpointProperties2NV & operator=( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43566 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43567 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV43568     QueueFamilyCheckpointProperties2NV & operator=( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT
43569     {
43570       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV const *>( &rhs );
43571       return *this;
43572     }
43573 
43574 
operator VkQueueFamilyCheckpointProperties2NV const&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV43575     operator VkQueueFamilyCheckpointProperties2NV const &() const VULKAN_HPP_NOEXCEPT
43576     {
43577       return *reinterpret_cast<const VkQueueFamilyCheckpointProperties2NV*>( this );
43578     }
43579 
operator VkQueueFamilyCheckpointProperties2NV&VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV43580     operator VkQueueFamilyCheckpointProperties2NV &() VULKAN_HPP_NOEXCEPT
43581     {
43582       return *reinterpret_cast<VkQueueFamilyCheckpointProperties2NV*>( this );
43583     }
43584 
43585 #if defined( VULKAN_HPP_USE_REFLECT )
43586 #if 14 <= VULKAN_HPP_CPP_VERSION
43587     auto
43588 #else
43589     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &>
43590 #endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV43591       reflect() const VULKAN_HPP_NOEXCEPT
43592     {
43593       return std::tie( sType, pNext, checkpointExecutionStageMask );
43594     }
43595 #endif
43596 
43597 
43598 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43599 auto operator<=>( QueueFamilyCheckpointProperties2NV const & ) const = default;
43600 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV43601     bool operator==( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
43602     {
43603 #if defined( VULKAN_HPP_USE_REFLECT )
43604       return this->reflect() == rhs.reflect();
43605 #else
43606       return ( sType == rhs.sType )
43607           && ( pNext == rhs.pNext )
43608           && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask );
43609 #endif
43610     }
43611 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV43612     bool operator!=( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT
43613     {
43614       return !operator==( rhs );
43615     }
43616 #endif
43617 
43618     public:
43619     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyCheckpointProperties2NV;
43620     void * pNext = {};
43621     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 checkpointExecutionStageMask = {};
43622 
43623   };
43624 
43625   template <>
43626   struct CppType<StructureType, StructureType::eQueueFamilyCheckpointProperties2NV>
43627   {
43628     using Type = QueueFamilyCheckpointProperties2NV;
43629   };
43630 
43631   struct QueueFamilyProperties
43632   {
43633     using NativeType = VkQueueFamilyProperties;
43634 
43635 
43636 
43637 
43638 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyProperties43639 VULKAN_HPP_CONSTEXPR QueueFamilyProperties(VULKAN_HPP_NAMESPACE::QueueFlags queueFlags_ = {}, uint32_t queueCount_ = {}, uint32_t timestampValidBits_ = {}, VULKAN_HPP_NAMESPACE::Extent3D minImageTransferGranularity_ = {}) VULKAN_HPP_NOEXCEPT
43640     : queueFlags( queueFlags_ ), queueCount( queueCount_ ), timestampValidBits( timestampValidBits_ ), minImageTransferGranularity( minImageTransferGranularity_ )
43641     {}
43642 
43643     VULKAN_HPP_CONSTEXPR QueueFamilyProperties( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43644 
QueueFamilyPropertiesVULKAN_HPP_NAMESPACE::QueueFamilyProperties43645     QueueFamilyProperties( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
43646       : QueueFamilyProperties( *reinterpret_cast<QueueFamilyProperties const *>( &rhs ) )
43647     {}
43648 
43649 
43650     QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43651 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43652 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyProperties43653     QueueFamilyProperties & operator=( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT
43654     {
43655       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties const *>( &rhs );
43656       return *this;
43657     }
43658 
43659 
operator VkQueueFamilyProperties const&VULKAN_HPP_NAMESPACE::QueueFamilyProperties43660     operator VkQueueFamilyProperties const &() const VULKAN_HPP_NOEXCEPT
43661     {
43662       return *reinterpret_cast<const VkQueueFamilyProperties*>( this );
43663     }
43664 
operator VkQueueFamilyProperties&VULKAN_HPP_NAMESPACE::QueueFamilyProperties43665     operator VkQueueFamilyProperties &() VULKAN_HPP_NOEXCEPT
43666     {
43667       return *reinterpret_cast<VkQueueFamilyProperties*>( this );
43668     }
43669 
43670 #if defined( VULKAN_HPP_USE_REFLECT )
43671 #if 14 <= VULKAN_HPP_CPP_VERSION
43672     auto
43673 #else
43674     std::tuple<VULKAN_HPP_NAMESPACE::QueueFlags const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Extent3D const &>
43675 #endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyProperties43676       reflect() const VULKAN_HPP_NOEXCEPT
43677     {
43678       return std::tie( queueFlags, queueCount, timestampValidBits, minImageTransferGranularity );
43679     }
43680 #endif
43681 
43682 
43683 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43684 auto operator<=>( QueueFamilyProperties const & ) const = default;
43685 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyProperties43686     bool operator==( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
43687     {
43688 #if defined( VULKAN_HPP_USE_REFLECT )
43689       return this->reflect() == rhs.reflect();
43690 #else
43691       return ( queueFlags == rhs.queueFlags )
43692           && ( queueCount == rhs.queueCount )
43693           && ( timestampValidBits == rhs.timestampValidBits )
43694           && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
43695 #endif
43696     }
43697 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyProperties43698     bool operator!=( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
43699     {
43700       return !operator==( rhs );
43701     }
43702 #endif
43703 
43704     public:
43705     VULKAN_HPP_NAMESPACE::QueueFlags queueFlags = {};
43706     uint32_t queueCount = {};
43707     uint32_t timestampValidBits = {};
43708     VULKAN_HPP_NAMESPACE::Extent3D minImageTransferGranularity = {};
43709 
43710   };
43711 
43712   struct QueueFamilyProperties2
43713   {
43714     using NativeType = VkQueueFamilyProperties2;
43715 
43716     static const bool allowDuplicate = false;
43717     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyProperties2;
43718 
43719 
43720 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
QueueFamilyProperties2VULKAN_HPP_NAMESPACE::QueueFamilyProperties243721 VULKAN_HPP_CONSTEXPR QueueFamilyProperties2(VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
43722     : pNext( pNext_ ), queueFamilyProperties( queueFamilyProperties_ )
43723     {}
43724 
43725     VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43726 
QueueFamilyProperties2VULKAN_HPP_NAMESPACE::QueueFamilyProperties243727     QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
43728       : QueueFamilyProperties2( *reinterpret_cast<QueueFamilyProperties2 const *>( &rhs ) )
43729     {}
43730 
43731 
43732     QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43733 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43734 
operator =VULKAN_HPP_NAMESPACE::QueueFamilyProperties243735     QueueFamilyProperties2 & operator=( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT
43736     {
43737       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 const *>( &rhs );
43738       return *this;
43739     }
43740 
43741 
operator VkQueueFamilyProperties2 const&VULKAN_HPP_NAMESPACE::QueueFamilyProperties243742     operator VkQueueFamilyProperties2 const &() const VULKAN_HPP_NOEXCEPT
43743     {
43744       return *reinterpret_cast<const VkQueueFamilyProperties2*>( this );
43745     }
43746 
operator VkQueueFamilyProperties2&VULKAN_HPP_NAMESPACE::QueueFamilyProperties243747     operator VkQueueFamilyProperties2 &() VULKAN_HPP_NOEXCEPT
43748     {
43749       return *reinterpret_cast<VkQueueFamilyProperties2*>( this );
43750     }
43751 
43752 #if defined( VULKAN_HPP_USE_REFLECT )
43753 #if 14 <= VULKAN_HPP_CPP_VERSION
43754     auto
43755 #else
43756     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::QueueFamilyProperties const &>
43757 #endif
reflectVULKAN_HPP_NAMESPACE::QueueFamilyProperties243758       reflect() const VULKAN_HPP_NOEXCEPT
43759     {
43760       return std::tie( sType, pNext, queueFamilyProperties );
43761     }
43762 #endif
43763 
43764 
43765 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43766 auto operator<=>( QueueFamilyProperties2 const & ) const = default;
43767 #else
operator ==VULKAN_HPP_NAMESPACE::QueueFamilyProperties243768     bool operator==( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
43769     {
43770 #if defined( VULKAN_HPP_USE_REFLECT )
43771       return this->reflect() == rhs.reflect();
43772 #else
43773       return ( sType == rhs.sType )
43774           && ( pNext == rhs.pNext )
43775           && ( queueFamilyProperties == rhs.queueFamilyProperties );
43776 #endif
43777     }
43778 
operator !=VULKAN_HPP_NAMESPACE::QueueFamilyProperties243779     bool operator!=( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT
43780     {
43781       return !operator==( rhs );
43782     }
43783 #endif
43784 
43785     public:
43786     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyProperties2;
43787     void * pNext = {};
43788     VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties = {};
43789 
43790   };
43791 
43792   template <>
43793   struct CppType<StructureType, StructureType::eQueueFamilyProperties2>
43794   {
43795     using Type = QueueFamilyProperties2;
43796   };
43797   using QueueFamilyProperties2KHR = QueueFamilyProperties2;
43798 
43799   struct RefreshObjectKHR
43800   {
43801     using NativeType = VkRefreshObjectKHR;
43802 
43803 
43804 
43805 
43806 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RefreshObjectKHRVULKAN_HPP_NAMESPACE::RefreshObjectKHR43807 VULKAN_HPP_CONSTEXPR RefreshObjectKHR(VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, uint64_t objectHandle_ = {}, VULKAN_HPP_NAMESPACE::RefreshObjectFlagsKHR flags_ = {}) VULKAN_HPP_NOEXCEPT
43808     : objectType( objectType_ ), objectHandle( objectHandle_ ), flags( flags_ )
43809     {}
43810 
43811     VULKAN_HPP_CONSTEXPR RefreshObjectKHR( RefreshObjectKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43812 
RefreshObjectKHRVULKAN_HPP_NAMESPACE::RefreshObjectKHR43813     RefreshObjectKHR( VkRefreshObjectKHR const & rhs ) VULKAN_HPP_NOEXCEPT
43814       : RefreshObjectKHR( *reinterpret_cast<RefreshObjectKHR const *>( &rhs ) )
43815     {}
43816 
43817 
43818     RefreshObjectKHR & operator=( RefreshObjectKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43819 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43820 
operator =VULKAN_HPP_NAMESPACE::RefreshObjectKHR43821     RefreshObjectKHR & operator=( VkRefreshObjectKHR const & rhs ) VULKAN_HPP_NOEXCEPT
43822     {
43823       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RefreshObjectKHR const *>( &rhs );
43824       return *this;
43825     }
43826 
43827 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setObjectTypeVULKAN_HPP_NAMESPACE::RefreshObjectKHR43828     VULKAN_HPP_CONSTEXPR_14 RefreshObjectKHR & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT
43829     {
43830       objectType = objectType_;
43831       return *this;
43832     }
43833 
setObjectHandleVULKAN_HPP_NAMESPACE::RefreshObjectKHR43834     VULKAN_HPP_CONSTEXPR_14 RefreshObjectKHR & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT
43835     {
43836       objectHandle = objectHandle_;
43837       return *this;
43838     }
43839 
setFlagsVULKAN_HPP_NAMESPACE::RefreshObjectKHR43840     VULKAN_HPP_CONSTEXPR_14 RefreshObjectKHR & setFlags( VULKAN_HPP_NAMESPACE::RefreshObjectFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
43841     {
43842       flags = flags_;
43843       return *this;
43844     }
43845 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43846 
43847 
operator VkRefreshObjectKHR const&VULKAN_HPP_NAMESPACE::RefreshObjectKHR43848     operator VkRefreshObjectKHR const &() const VULKAN_HPP_NOEXCEPT
43849     {
43850       return *reinterpret_cast<const VkRefreshObjectKHR*>( this );
43851     }
43852 
operator VkRefreshObjectKHR&VULKAN_HPP_NAMESPACE::RefreshObjectKHR43853     operator VkRefreshObjectKHR &() VULKAN_HPP_NOEXCEPT
43854     {
43855       return *reinterpret_cast<VkRefreshObjectKHR*>( this );
43856     }
43857 
43858 #if defined( VULKAN_HPP_USE_REFLECT )
43859 #if 14 <= VULKAN_HPP_CPP_VERSION
43860     auto
43861 #else
43862     std::tuple<VULKAN_HPP_NAMESPACE::ObjectType const &, uint64_t const &, VULKAN_HPP_NAMESPACE::RefreshObjectFlagsKHR const &>
43863 #endif
reflectVULKAN_HPP_NAMESPACE::RefreshObjectKHR43864       reflect() const VULKAN_HPP_NOEXCEPT
43865     {
43866       return std::tie( objectType, objectHandle, flags );
43867     }
43868 #endif
43869 
43870 
43871 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43872 auto operator<=>( RefreshObjectKHR const & ) const = default;
43873 #else
operator ==VULKAN_HPP_NAMESPACE::RefreshObjectKHR43874     bool operator==( RefreshObjectKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43875     {
43876 #if defined( VULKAN_HPP_USE_REFLECT )
43877       return this->reflect() == rhs.reflect();
43878 #else
43879       return ( objectType == rhs.objectType )
43880           && ( objectHandle == rhs.objectHandle )
43881           && ( flags == rhs.flags );
43882 #endif
43883     }
43884 
operator !=VULKAN_HPP_NAMESPACE::RefreshObjectKHR43885     bool operator!=( RefreshObjectKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43886     {
43887       return !operator==( rhs );
43888     }
43889 #endif
43890 
43891     public:
43892     VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown;
43893     uint64_t objectHandle = {};
43894     VULKAN_HPP_NAMESPACE::RefreshObjectFlagsKHR flags = {};
43895 
43896   };
43897 
43898   struct RefreshObjectListKHR
43899   {
43900     using NativeType = VkRefreshObjectListKHR;
43901 
43902     static const bool allowDuplicate = false;
43903     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRefreshObjectListKHR;
43904 
43905 
43906 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RefreshObjectListKHRVULKAN_HPP_NAMESPACE::RefreshObjectListKHR43907 VULKAN_HPP_CONSTEXPR RefreshObjectListKHR(uint32_t objectCount_ = {}, const VULKAN_HPP_NAMESPACE::RefreshObjectKHR * pObjects_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
43908     : pNext( pNext_ ), objectCount( objectCount_ ), pObjects( pObjects_ )
43909     {}
43910 
43911     VULKAN_HPP_CONSTEXPR RefreshObjectListKHR( RefreshObjectListKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43912 
RefreshObjectListKHRVULKAN_HPP_NAMESPACE::RefreshObjectListKHR43913     RefreshObjectListKHR( VkRefreshObjectListKHR const & rhs ) VULKAN_HPP_NOEXCEPT
43914       : RefreshObjectListKHR( *reinterpret_cast<RefreshObjectListKHR const *>( &rhs ) )
43915     {}
43916 
43917 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RefreshObjectListKHRVULKAN_HPP_NAMESPACE::RefreshObjectListKHR43918     RefreshObjectListKHR( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RefreshObjectKHR> const & objects_, const void * pNext_ = nullptr )
43919     : pNext( pNext_ ), objectCount( static_cast<uint32_t>( objects_.size() ) ), pObjects( objects_.data() )
43920     {}
43921 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43922 
43923 
43924     RefreshObjectListKHR & operator=( RefreshObjectListKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
43925 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
43926 
operator =VULKAN_HPP_NAMESPACE::RefreshObjectListKHR43927     RefreshObjectListKHR & operator=( VkRefreshObjectListKHR const & rhs ) VULKAN_HPP_NOEXCEPT
43928     {
43929       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RefreshObjectListKHR const *>( &rhs );
43930       return *this;
43931     }
43932 
43933 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RefreshObjectListKHR43934     VULKAN_HPP_CONSTEXPR_14 RefreshObjectListKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
43935     {
43936       pNext = pNext_;
43937       return *this;
43938     }
43939 
setObjectCountVULKAN_HPP_NAMESPACE::RefreshObjectListKHR43940     VULKAN_HPP_CONSTEXPR_14 RefreshObjectListKHR & setObjectCount( uint32_t objectCount_ ) VULKAN_HPP_NOEXCEPT
43941     {
43942       objectCount = objectCount_;
43943       return *this;
43944     }
43945 
setPObjectsVULKAN_HPP_NAMESPACE::RefreshObjectListKHR43946     VULKAN_HPP_CONSTEXPR_14 RefreshObjectListKHR & setPObjects( const VULKAN_HPP_NAMESPACE::RefreshObjectKHR * pObjects_ ) VULKAN_HPP_NOEXCEPT
43947     {
43948       pObjects = pObjects_;
43949       return *this;
43950     }
43951 
43952 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setObjectsVULKAN_HPP_NAMESPACE::RefreshObjectListKHR43953     RefreshObjectListKHR & setObjects( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RefreshObjectKHR> const & objects_ ) VULKAN_HPP_NOEXCEPT
43954     {
43955       objectCount = static_cast<uint32_t>( objects_.size() );
43956       pObjects = objects_.data();
43957       return *this;
43958     }
43959 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
43960 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
43961 
43962 
operator VkRefreshObjectListKHR const&VULKAN_HPP_NAMESPACE::RefreshObjectListKHR43963     operator VkRefreshObjectListKHR const &() const VULKAN_HPP_NOEXCEPT
43964     {
43965       return *reinterpret_cast<const VkRefreshObjectListKHR*>( this );
43966     }
43967 
operator VkRefreshObjectListKHR&VULKAN_HPP_NAMESPACE::RefreshObjectListKHR43968     operator VkRefreshObjectListKHR &() VULKAN_HPP_NOEXCEPT
43969     {
43970       return *reinterpret_cast<VkRefreshObjectListKHR*>( this );
43971     }
43972 
43973 #if defined( VULKAN_HPP_USE_REFLECT )
43974 #if 14 <= VULKAN_HPP_CPP_VERSION
43975     auto
43976 #else
43977     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::RefreshObjectKHR * const &>
43978 #endif
reflectVULKAN_HPP_NAMESPACE::RefreshObjectListKHR43979       reflect() const VULKAN_HPP_NOEXCEPT
43980     {
43981       return std::tie( sType, pNext, objectCount, pObjects );
43982     }
43983 #endif
43984 
43985 
43986 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
43987 auto operator<=>( RefreshObjectListKHR const & ) const = default;
43988 #else
operator ==VULKAN_HPP_NAMESPACE::RefreshObjectListKHR43989     bool operator==( RefreshObjectListKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
43990     {
43991 #if defined( VULKAN_HPP_USE_REFLECT )
43992       return this->reflect() == rhs.reflect();
43993 #else
43994       return ( sType == rhs.sType )
43995           && ( pNext == rhs.pNext )
43996           && ( objectCount == rhs.objectCount )
43997           && ( pObjects == rhs.pObjects );
43998 #endif
43999     }
44000 
operator !=VULKAN_HPP_NAMESPACE::RefreshObjectListKHR44001     bool operator!=( RefreshObjectListKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
44002     {
44003       return !operator==( rhs );
44004     }
44005 #endif
44006 
44007     public:
44008     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRefreshObjectListKHR;
44009     const void * pNext = {};
44010     uint32_t objectCount = {};
44011     const VULKAN_HPP_NAMESPACE::RefreshObjectKHR * pObjects = {};
44012 
44013   };
44014 
44015   template <>
44016   struct CppType<StructureType, StructureType::eRefreshObjectListKHR>
44017   {
44018     using Type = RefreshObjectListKHR;
44019   };
44020 
44021   struct RenderPassAttachmentBeginInfo
44022   {
44023     using NativeType = VkRenderPassAttachmentBeginInfo;
44024 
44025     static const bool allowDuplicate = false;
44026     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassAttachmentBeginInfo;
44027 
44028 
44029 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44030 VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo(uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
44031     : pNext( pNext_ ), attachmentCount( attachmentCount_ ), pAttachments( pAttachments_ )
44032     {}
44033 
44034     VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44035 
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44036     RenderPassAttachmentBeginInfo( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44037       : RenderPassAttachmentBeginInfo( *reinterpret_cast<RenderPassAttachmentBeginInfo const *>( &rhs ) )
44038     {}
44039 
44040 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassAttachmentBeginInfoVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44041     RenderPassAttachmentBeginInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_, const void * pNext_ = nullptr )
44042     : pNext( pNext_ ), attachmentCount( static_cast<uint32_t>( attachments_.size() ) ), pAttachments( attachments_.data() )
44043     {}
44044 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44045 
44046 
44047     RenderPassAttachmentBeginInfo & operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44048 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44049 
operator =VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44050     RenderPassAttachmentBeginInfo & operator=( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44051     {
44052       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo const *>( &rhs );
44053       return *this;
44054     }
44055 
44056 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44057     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44058     {
44059       pNext = pNext_;
44060       return *this;
44061     }
44062 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44063     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
44064     {
44065       attachmentCount = attachmentCount_;
44066       return *this;
44067     }
44068 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44069     VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView * pAttachments_ ) VULKAN_HPP_NOEXCEPT
44070     {
44071       pAttachments = pAttachments_;
44072       return *this;
44073     }
44074 
44075 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44076     RenderPassAttachmentBeginInfo & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageView> const & attachments_ ) VULKAN_HPP_NOEXCEPT
44077     {
44078       attachmentCount = static_cast<uint32_t>( attachments_.size() );
44079       pAttachments = attachments_.data();
44080       return *this;
44081     }
44082 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44083 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44084 
44085 
operator VkRenderPassAttachmentBeginInfo const&VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44086     operator VkRenderPassAttachmentBeginInfo const &() const VULKAN_HPP_NOEXCEPT
44087     {
44088       return *reinterpret_cast<const VkRenderPassAttachmentBeginInfo*>( this );
44089     }
44090 
operator VkRenderPassAttachmentBeginInfo&VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44091     operator VkRenderPassAttachmentBeginInfo &() VULKAN_HPP_NOEXCEPT
44092     {
44093       return *reinterpret_cast<VkRenderPassAttachmentBeginInfo*>( this );
44094     }
44095 
44096 #if defined( VULKAN_HPP_USE_REFLECT )
44097 #if 14 <= VULKAN_HPP_CPP_VERSION
44098     auto
44099 #else
44100     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ImageView * const &>
44101 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44102       reflect() const VULKAN_HPP_NOEXCEPT
44103     {
44104       return std::tie( sType, pNext, attachmentCount, pAttachments );
44105     }
44106 #endif
44107 
44108 
44109 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
44110 auto operator<=>( RenderPassAttachmentBeginInfo const & ) const = default;
44111 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44112     bool operator==( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44113     {
44114 #if defined( VULKAN_HPP_USE_REFLECT )
44115       return this->reflect() == rhs.reflect();
44116 #else
44117       return ( sType == rhs.sType )
44118           && ( pNext == rhs.pNext )
44119           && ( attachmentCount == rhs.attachmentCount )
44120           && ( pAttachments == rhs.pAttachments );
44121 #endif
44122     }
44123 
operator !=VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo44124     bool operator!=( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44125     {
44126       return !operator==( rhs );
44127     }
44128 #endif
44129 
44130     public:
44131     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassAttachmentBeginInfo;
44132     const void * pNext = {};
44133     uint32_t attachmentCount = {};
44134     const VULKAN_HPP_NAMESPACE::ImageView * pAttachments = {};
44135 
44136   };
44137 
44138   template <>
44139   struct CppType<StructureType, StructureType::eRenderPassAttachmentBeginInfo>
44140   {
44141     using Type = RenderPassAttachmentBeginInfo;
44142   };
44143   using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo;
44144 
44145   struct RenderPassBeginInfo
44146   {
44147     using NativeType = VkRenderPassBeginInfo;
44148 
44149     static const bool allowDuplicate = false;
44150     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassBeginInfo;
44151 
44152 
44153 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44154 VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo(VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ = {}, VULKAN_HPP_NAMESPACE::Rect2D renderArea_ = {}, uint32_t clearValueCount_ = {}, const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
44155     : pNext( pNext_ ), renderPass( renderPass_ ), framebuffer( framebuffer_ ), renderArea( renderArea_ ), clearValueCount( clearValueCount_ ), pClearValues( pClearValues_ )
44156     {}
44157 
44158     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44159 
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44160     RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44161       : RenderPassBeginInfo( *reinterpret_cast<RenderPassBeginInfo const *>( &rhs ) )
44162     {}
44163 
44164 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassBeginInfoVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44165     RenderPassBeginInfo( VULKAN_HPP_NAMESPACE::RenderPass renderPass_, VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_, VULKAN_HPP_NAMESPACE::Rect2D renderArea_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_, const void * pNext_ = nullptr )
44166     : pNext( pNext_ ), renderPass( renderPass_ ), framebuffer( framebuffer_ ), renderArea( renderArea_ ), clearValueCount( static_cast<uint32_t>( clearValues_.size() ) ), pClearValues( clearValues_.data() )
44167     {}
44168 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44169 
44170 
44171     RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44172 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44173 
operator =VULKAN_HPP_NAMESPACE::RenderPassBeginInfo44174     RenderPassBeginInfo & operator=( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44175     {
44176       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassBeginInfo const *>( &rhs );
44177       return *this;
44178     }
44179 
44180 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44181     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44182     {
44183       pNext = pNext_;
44184       return *this;
44185     }
44186 
setRenderPassVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44187     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT
44188     {
44189       renderPass = renderPass_;
44190       return *this;
44191     }
44192 
setFramebufferVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44193     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT
44194     {
44195       framebuffer = framebuffer_;
44196       return *this;
44197     }
44198 
setRenderAreaVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44199     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
44200     {
44201       renderArea = renderArea_;
44202       return *this;
44203     }
44204 
setClearValueCountVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44205     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setClearValueCount( uint32_t clearValueCount_ ) VULKAN_HPP_NOEXCEPT
44206     {
44207       clearValueCount = clearValueCount_;
44208       return *this;
44209     }
44210 
setPClearValuesVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44211     VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPClearValues( const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues_ ) VULKAN_HPP_NOEXCEPT
44212     {
44213       pClearValues = pClearValues_;
44214       return *this;
44215     }
44216 
44217 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setClearValuesVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44218     RenderPassBeginInfo & setClearValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ClearValue> const & clearValues_ ) VULKAN_HPP_NOEXCEPT
44219     {
44220       clearValueCount = static_cast<uint32_t>( clearValues_.size() );
44221       pClearValues = clearValues_.data();
44222       return *this;
44223     }
44224 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44225 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44226 
44227 
operator VkRenderPassBeginInfo const&VULKAN_HPP_NAMESPACE::RenderPassBeginInfo44228     operator VkRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
44229     {
44230       return *reinterpret_cast<const VkRenderPassBeginInfo*>( this );
44231     }
44232 
operator VkRenderPassBeginInfo&VULKAN_HPP_NAMESPACE::RenderPassBeginInfo44233     operator VkRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT
44234     {
44235       return *reinterpret_cast<VkRenderPassBeginInfo*>( this );
44236     }
44237 
44238 #if defined( VULKAN_HPP_USE_REFLECT )
44239 #if 14 <= VULKAN_HPP_CPP_VERSION
44240     auto
44241 #else
44242     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderPass const &, VULKAN_HPP_NAMESPACE::Framebuffer const &, VULKAN_HPP_NAMESPACE::Rect2D const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ClearValue * const &>
44243 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassBeginInfo44244       reflect() const VULKAN_HPP_NOEXCEPT
44245     {
44246       return std::tie( sType, pNext, renderPass, framebuffer, renderArea, clearValueCount, pClearValues );
44247     }
44248 #endif
44249 
44250 
44251 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
44252 auto operator<=>( RenderPassBeginInfo const & ) const = default;
44253 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassBeginInfo44254     bool operator==( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44255     {
44256 #if defined( VULKAN_HPP_USE_REFLECT )
44257       return this->reflect() == rhs.reflect();
44258 #else
44259       return ( sType == rhs.sType )
44260           && ( pNext == rhs.pNext )
44261           && ( renderPass == rhs.renderPass )
44262           && ( framebuffer == rhs.framebuffer )
44263           && ( renderArea == rhs.renderArea )
44264           && ( clearValueCount == rhs.clearValueCount )
44265           && ( pClearValues == rhs.pClearValues );
44266 #endif
44267     }
44268 
operator !=VULKAN_HPP_NAMESPACE::RenderPassBeginInfo44269     bool operator!=( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44270     {
44271       return !operator==( rhs );
44272     }
44273 #endif
44274 
44275     public:
44276     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassBeginInfo;
44277     const void * pNext = {};
44278     VULKAN_HPP_NAMESPACE::RenderPass renderPass = {};
44279     VULKAN_HPP_NAMESPACE::Framebuffer framebuffer = {};
44280     VULKAN_HPP_NAMESPACE::Rect2D renderArea = {};
44281     uint32_t clearValueCount = {};
44282     const VULKAN_HPP_NAMESPACE::ClearValue * pClearValues = {};
44283 
44284   };
44285 
44286   template <>
44287   struct CppType<StructureType, StructureType::eRenderPassBeginInfo>
44288   {
44289     using Type = RenderPassBeginInfo;
44290   };
44291 
44292   struct SubpassDescription
44293   {
44294     using NativeType = VkSubpassDescription;
44295 
44296 
44297 
44298 
44299 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription44300 VULKAN_HPP_CONSTEXPR SubpassDescription(VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ = {}, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, uint32_t inputAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_ = {}, uint32_t colorAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ = {}, uint32_t preserveAttachmentCount_ = {}, const uint32_t * pPreserveAttachments_ = {}) VULKAN_HPP_NOEXCEPT
44301     : flags( flags_ ), pipelineBindPoint( pipelineBindPoint_ ), inputAttachmentCount( inputAttachmentCount_ ), pInputAttachments( pInputAttachments_ ), colorAttachmentCount( colorAttachmentCount_ ), pColorAttachments( pColorAttachments_ ), pResolveAttachments( pResolveAttachments_ ), pDepthStencilAttachment( pDepthStencilAttachment_ ), preserveAttachmentCount( preserveAttachmentCount_ ), pPreserveAttachments( pPreserveAttachments_ )
44302     {}
44303 
44304     VULKAN_HPP_CONSTEXPR SubpassDescription( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44305 
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription44306     SubpassDescription( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
44307       : SubpassDescription( *reinterpret_cast<SubpassDescription const *>( &rhs ) )
44308     {}
44309 
44310 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassDescriptionVULKAN_HPP_NAMESPACE::SubpassDescription44311     SubpassDescription( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & inputAttachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & colorAttachments_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & resolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ = {} )
44312     : flags( flags_ ), pipelineBindPoint( pipelineBindPoint_ ), inputAttachmentCount( static_cast<uint32_t>( inputAttachments_.size() ) ), pInputAttachments( inputAttachments_.data() ), colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) ), pColorAttachments( colorAttachments_.data() ), pResolveAttachments( resolveAttachments_.data() ), pDepthStencilAttachment( pDepthStencilAttachment_ ), preserveAttachmentCount( static_cast<uint32_t>( preserveAttachments_.size() ) ), pPreserveAttachments( preserveAttachments_.data() )
44313     {
44314 #ifdef VULKAN_HPP_NO_EXCEPTIONS
44315       VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) );
44316 #else
44317       if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) )
44318       {
44319         throw LogicError( VULKAN_HPP_NAMESPACE_STRING"::SubpassDescription::SubpassDescription: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" );
44320       }
44321 #endif /*VULKAN_HPP_NO_EXCEPTIONS*/
44322     }
44323 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44324 
44325 
44326     SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44327 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44328 
operator =VULKAN_HPP_NAMESPACE::SubpassDescription44329     SubpassDescription & operator=( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT
44330     {
44331       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription const *>( &rhs );
44332       return *this;
44333     }
44334 
44335 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setFlagsVULKAN_HPP_NAMESPACE::SubpassDescription44336     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
44337     {
44338       flags = flags_;
44339       return *this;
44340     }
44341 
setPipelineBindPointVULKAN_HPP_NAMESPACE::SubpassDescription44342     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
44343     {
44344       pipelineBindPoint = pipelineBindPoint_;
44345       return *this;
44346     }
44347 
setInputAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription44348     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
44349     {
44350       inputAttachmentCount = inputAttachmentCount_;
44351       return *this;
44352     }
44353 
setPInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription44354     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT
44355     {
44356       pInputAttachments = pInputAttachments_;
44357       return *this;
44358     }
44359 
44360 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription44361     SubpassDescription & setInputAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT
44362     {
44363       inputAttachmentCount = static_cast<uint32_t>( inputAttachments_.size() );
44364       pInputAttachments = inputAttachments_.data();
44365       return *this;
44366     }
44367 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44368 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription44369     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
44370     {
44371       colorAttachmentCount = colorAttachmentCount_;
44372       return *this;
44373     }
44374 
setPColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription44375     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
44376     {
44377       pColorAttachments = pColorAttachments_;
44378       return *this;
44379     }
44380 
44381 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription44382     SubpassDescription & setColorAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
44383     {
44384       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
44385       pColorAttachments = colorAttachments_.data();
44386       return *this;
44387     }
44388 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44389 
setPResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription44390     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPResolveAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT
44391     {
44392       pResolveAttachments = pResolveAttachments_;
44393       return *this;
44394     }
44395 
44396 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription44397     SubpassDescription & setResolveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference> const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT
44398     {
44399       colorAttachmentCount = static_cast<uint32_t>( resolveAttachments_.size() );
44400       pResolveAttachments = resolveAttachments_.data();
44401       return *this;
44402     }
44403 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44404 
setPDepthStencilAttachmentVULKAN_HPP_NAMESPACE::SubpassDescription44405     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPDepthStencilAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
44406     {
44407       pDepthStencilAttachment = pDepthStencilAttachment_;
44408       return *this;
44409     }
44410 
setPreserveAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription44411     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
44412     {
44413       preserveAttachmentCount = preserveAttachmentCount_;
44414       return *this;
44415     }
44416 
setPPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription44417     VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT
44418     {
44419       pPreserveAttachments = pPreserveAttachments_;
44420       return *this;
44421     }
44422 
44423 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription44424     SubpassDescription & setPreserveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT
44425     {
44426       preserveAttachmentCount = static_cast<uint32_t>( preserveAttachments_.size() );
44427       pPreserveAttachments = preserveAttachments_.data();
44428       return *this;
44429     }
44430 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44431 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44432 
44433 
operator VkSubpassDescription const&VULKAN_HPP_NAMESPACE::SubpassDescription44434     operator VkSubpassDescription const &() const VULKAN_HPP_NOEXCEPT
44435     {
44436       return *reinterpret_cast<const VkSubpassDescription*>( this );
44437     }
44438 
operator VkSubpassDescription&VULKAN_HPP_NAMESPACE::SubpassDescription44439     operator VkSubpassDescription &() VULKAN_HPP_NOEXCEPT
44440     {
44441       return *reinterpret_cast<VkSubpassDescription*>( this );
44442     }
44443 
44444 #if defined( VULKAN_HPP_USE_REFLECT )
44445 #if 14 <= VULKAN_HPP_CPP_VERSION
44446     auto
44447 #else
44448     std::tuple<VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags const &, VULKAN_HPP_NAMESPACE::PipelineBindPoint const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AttachmentReference * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AttachmentReference * const &, const VULKAN_HPP_NAMESPACE::AttachmentReference * const &, const VULKAN_HPP_NAMESPACE::AttachmentReference * const &, uint32_t const &, const uint32_t * const &>
44449 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescription44450       reflect() const VULKAN_HPP_NOEXCEPT
44451     {
44452       return std::tie( flags, pipelineBindPoint, inputAttachmentCount, pInputAttachments, colorAttachmentCount, pColorAttachments, pResolveAttachments, pDepthStencilAttachment, preserveAttachmentCount, pPreserveAttachments );
44453     }
44454 #endif
44455 
44456 
44457 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
44458 auto operator<=>( SubpassDescription const & ) const = default;
44459 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescription44460     bool operator==( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
44461     {
44462 #if defined( VULKAN_HPP_USE_REFLECT )
44463       return this->reflect() == rhs.reflect();
44464 #else
44465       return ( flags == rhs.flags )
44466           && ( pipelineBindPoint == rhs.pipelineBindPoint )
44467           && ( inputAttachmentCount == rhs.inputAttachmentCount )
44468           && ( pInputAttachments == rhs.pInputAttachments )
44469           && ( colorAttachmentCount == rhs.colorAttachmentCount )
44470           && ( pColorAttachments == rhs.pColorAttachments )
44471           && ( pResolveAttachments == rhs.pResolveAttachments )
44472           && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
44473           && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
44474           && ( pPreserveAttachments == rhs.pPreserveAttachments );
44475 #endif
44476     }
44477 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescription44478     bool operator!=( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT
44479     {
44480       return !operator==( rhs );
44481     }
44482 #endif
44483 
44484     public:
44485     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags = {};
44486     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
44487     uint32_t inputAttachmentCount = {};
44488     const VULKAN_HPP_NAMESPACE::AttachmentReference * pInputAttachments = {};
44489     uint32_t colorAttachmentCount = {};
44490     const VULKAN_HPP_NAMESPACE::AttachmentReference * pColorAttachments = {};
44491     const VULKAN_HPP_NAMESPACE::AttachmentReference * pResolveAttachments = {};
44492     const VULKAN_HPP_NAMESPACE::AttachmentReference * pDepthStencilAttachment = {};
44493     uint32_t preserveAttachmentCount = {};
44494     const uint32_t * pPreserveAttachments = {};
44495 
44496   };
44497 
44498   struct SubpassDependency
44499   {
44500     using NativeType = VkSubpassDependency;
44501 
44502 
44503 
44504 
44505 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDependencyVULKAN_HPP_NAMESPACE::SubpassDependency44506 VULKAN_HPP_CONSTEXPR SubpassDependency(uint32_t srcSubpass_ = {}, uint32_t dstSubpass_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ = {}) VULKAN_HPP_NOEXCEPT
44507     : srcSubpass( srcSubpass_ ), dstSubpass( dstSubpass_ ), srcStageMask( srcStageMask_ ), dstStageMask( dstStageMask_ ), srcAccessMask( srcAccessMask_ ), dstAccessMask( dstAccessMask_ ), dependencyFlags( dependencyFlags_ )
44508     {}
44509 
44510     VULKAN_HPP_CONSTEXPR SubpassDependency( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44511 
SubpassDependencyVULKAN_HPP_NAMESPACE::SubpassDependency44512     SubpassDependency( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
44513       : SubpassDependency( *reinterpret_cast<SubpassDependency const *>( &rhs ) )
44514     {}
44515 
44516 
44517     SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44518 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44519 
operator =VULKAN_HPP_NAMESPACE::SubpassDependency44520     SubpassDependency & operator=( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT
44521     {
44522       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency const *>( &rhs );
44523       return *this;
44524     }
44525 
44526 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSrcSubpassVULKAN_HPP_NAMESPACE::SubpassDependency44527     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
44528     {
44529       srcSubpass = srcSubpass_;
44530       return *this;
44531     }
44532 
setDstSubpassVULKAN_HPP_NAMESPACE::SubpassDependency44533     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT
44534     {
44535       dstSubpass = dstSubpass_;
44536       return *this;
44537     }
44538 
setSrcStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency44539     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT
44540     {
44541       srcStageMask = srcStageMask_;
44542       return *this;
44543     }
44544 
setDstStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency44545     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT
44546     {
44547       dstStageMask = dstStageMask_;
44548       return *this;
44549     }
44550 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency44551     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
44552     {
44553       srcAccessMask = srcAccessMask_;
44554       return *this;
44555     }
44556 
setDstAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency44557     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
44558     {
44559       dstAccessMask = dstAccessMask_;
44560       return *this;
44561     }
44562 
setDependencyFlagsVULKAN_HPP_NAMESPACE::SubpassDependency44563     VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
44564     {
44565       dependencyFlags = dependencyFlags_;
44566       return *this;
44567     }
44568 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44569 
44570 
operator VkSubpassDependency const&VULKAN_HPP_NAMESPACE::SubpassDependency44571     operator VkSubpassDependency const &() const VULKAN_HPP_NOEXCEPT
44572     {
44573       return *reinterpret_cast<const VkSubpassDependency*>( this );
44574     }
44575 
operator VkSubpassDependency&VULKAN_HPP_NAMESPACE::SubpassDependency44576     operator VkSubpassDependency &() VULKAN_HPP_NOEXCEPT
44577     {
44578       return *reinterpret_cast<VkSubpassDependency*>( this );
44579     }
44580 
44581 #if defined( VULKAN_HPP_USE_REFLECT )
44582 #if 14 <= VULKAN_HPP_CPP_VERSION
44583     auto
44584 #else
44585     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, VULKAN_HPP_NAMESPACE::DependencyFlags const &>
44586 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDependency44587       reflect() const VULKAN_HPP_NOEXCEPT
44588     {
44589       return std::tie( srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags );
44590     }
44591 #endif
44592 
44593 
44594 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
44595 auto operator<=>( SubpassDependency const & ) const = default;
44596 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDependency44597     bool operator==( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT
44598     {
44599 #if defined( VULKAN_HPP_USE_REFLECT )
44600       return this->reflect() == rhs.reflect();
44601 #else
44602       return ( srcSubpass == rhs.srcSubpass )
44603           && ( dstSubpass == rhs.dstSubpass )
44604           && ( srcStageMask == rhs.srcStageMask )
44605           && ( dstStageMask == rhs.dstStageMask )
44606           && ( srcAccessMask == rhs.srcAccessMask )
44607           && ( dstAccessMask == rhs.dstAccessMask )
44608           && ( dependencyFlags == rhs.dependencyFlags );
44609 #endif
44610     }
44611 
operator !=VULKAN_HPP_NAMESPACE::SubpassDependency44612     bool operator!=( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT
44613     {
44614       return !operator==( rhs );
44615     }
44616 #endif
44617 
44618     public:
44619     uint32_t srcSubpass = {};
44620     uint32_t dstSubpass = {};
44621     VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask = {};
44622     VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask = {};
44623     VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {};
44624     VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {};
44625     VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {};
44626 
44627   };
44628 
44629   struct RenderPassCreateInfo
44630   {
44631     using NativeType = VkRenderPassCreateInfo;
44632 
44633     static const bool allowDuplicate = false;
44634     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreateInfo;
44635 
44636 
44637 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44638 VULKAN_HPP_CONSTEXPR RenderPassCreateInfo(VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ = {}, uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_ = {}, uint32_t subpassCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses_ = {}, uint32_t dependencyCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
44639     : pNext( pNext_ ), flags( flags_ ), attachmentCount( attachmentCount_ ), pAttachments( pAttachments_ ), subpassCount( subpassCount_ ), pSubpasses( pSubpasses_ ), dependencyCount( dependencyCount_ ), pDependencies( pDependencies_ )
44640     {}
44641 
44642     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44643 
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44644     RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44645       : RenderPassCreateInfo( *reinterpret_cast<RenderPassCreateInfo const *>( &rhs ) )
44646     {}
44647 
44648 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassCreateInfoVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44649     RenderPassCreateInfo( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const & attachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const & subpasses_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const & dependencies_ = {}, const void * pNext_ = nullptr )
44650     : pNext( pNext_ ), flags( flags_ ), attachmentCount( static_cast<uint32_t>( attachments_.size() ) ), pAttachments( attachments_.data() ), subpassCount( static_cast<uint32_t>( subpasses_.size() ) ), pSubpasses( subpasses_.data() ), dependencyCount( static_cast<uint32_t>( dependencies_.size() ) ), pDependencies( dependencies_.data() )
44651     {}
44652 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44653 
44654 
44655     RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44656 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44657 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreateInfo44658     RenderPassCreateInfo & operator=( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
44659     {
44660       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const *>( &rhs );
44661       return *this;
44662     }
44663 
44664 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44665     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44666     {
44667       pNext = pNext_;
44668       return *this;
44669     }
44670 
setFlagsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44671     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
44672     {
44673       flags = flags_;
44674       return *this;
44675     }
44676 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44677     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
44678     {
44679       attachmentCount = attachmentCount_;
44680       return *this;
44681     }
44682 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44683     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments_ ) VULKAN_HPP_NOEXCEPT
44684     {
44685       pAttachments = pAttachments_;
44686       return *this;
44687     }
44688 
44689 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44690     RenderPassCreateInfo & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription> const & attachments_ ) VULKAN_HPP_NOEXCEPT
44691     {
44692       attachmentCount = static_cast<uint32_t>( attachments_.size() );
44693       pAttachments = attachments_.data();
44694       return *this;
44695     }
44696 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44697 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44698     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
44699     {
44700       subpassCount = subpassCount_;
44701       return *this;
44702     }
44703 
setPSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44704     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses_ ) VULKAN_HPP_NOEXCEPT
44705     {
44706       pSubpasses = pSubpasses_;
44707       return *this;
44708     }
44709 
44710 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44711     RenderPassCreateInfo & setSubpasses( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription> const & subpasses_ ) VULKAN_HPP_NOEXCEPT
44712     {
44713       subpassCount = static_cast<uint32_t>( subpasses_.size() );
44714       pSubpasses = subpasses_.data();
44715       return *this;
44716     }
44717 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44718 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44719     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
44720     {
44721       dependencyCount = dependencyCount_;
44722       return *this;
44723     }
44724 
setPDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44725     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies_ ) VULKAN_HPP_NOEXCEPT
44726     {
44727       pDependencies = pDependencies_;
44728       return *this;
44729     }
44730 
44731 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44732     RenderPassCreateInfo & setDependencies( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency> const & dependencies_ ) VULKAN_HPP_NOEXCEPT
44733     {
44734       dependencyCount = static_cast<uint32_t>( dependencies_.size() );
44735       pDependencies = dependencies_.data();
44736       return *this;
44737     }
44738 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44739 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44740 
44741 
operator VkRenderPassCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo44742     operator VkRenderPassCreateInfo const &() const VULKAN_HPP_NOEXCEPT
44743     {
44744       return *reinterpret_cast<const VkRenderPassCreateInfo*>( this );
44745     }
44746 
operator VkRenderPassCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo44747     operator VkRenderPassCreateInfo &() VULKAN_HPP_NOEXCEPT
44748     {
44749       return *reinterpret_cast<VkRenderPassCreateInfo*>( this );
44750     }
44751 
44752 #if defined( VULKAN_HPP_USE_REFLECT )
44753 #if 14 <= VULKAN_HPP_CPP_VERSION
44754     auto
44755 #else
44756     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderPassCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AttachmentDescription * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SubpassDescription * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SubpassDependency * const &>
44757 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreateInfo44758       reflect() const VULKAN_HPP_NOEXCEPT
44759     {
44760       return std::tie( sType, pNext, flags, attachmentCount, pAttachments, subpassCount, pSubpasses, dependencyCount, pDependencies );
44761     }
44762 #endif
44763 
44764 
44765 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
44766 auto operator<=>( RenderPassCreateInfo const & ) const = default;
44767 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreateInfo44768     bool operator==( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44769     {
44770 #if defined( VULKAN_HPP_USE_REFLECT )
44771       return this->reflect() == rhs.reflect();
44772 #else
44773       return ( sType == rhs.sType )
44774           && ( pNext == rhs.pNext )
44775           && ( flags == rhs.flags )
44776           && ( attachmentCount == rhs.attachmentCount )
44777           && ( pAttachments == rhs.pAttachments )
44778           && ( subpassCount == rhs.subpassCount )
44779           && ( pSubpasses == rhs.pSubpasses )
44780           && ( dependencyCount == rhs.dependencyCount )
44781           && ( pDependencies == rhs.pDependencies );
44782 #endif
44783     }
44784 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreateInfo44785     bool operator!=( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
44786     {
44787       return !operator==( rhs );
44788     }
44789 #endif
44790 
44791     public:
44792     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo;
44793     const void * pNext = {};
44794     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags = {};
44795     uint32_t attachmentCount = {};
44796     const VULKAN_HPP_NAMESPACE::AttachmentDescription * pAttachments = {};
44797     uint32_t subpassCount = {};
44798     const VULKAN_HPP_NAMESPACE::SubpassDescription * pSubpasses = {};
44799     uint32_t dependencyCount = {};
44800     const VULKAN_HPP_NAMESPACE::SubpassDependency * pDependencies = {};
44801 
44802   };
44803 
44804   template <>
44805   struct CppType<StructureType, StructureType::eRenderPassCreateInfo>
44806   {
44807     using Type = RenderPassCreateInfo;
44808   };
44809 
44810   struct SubpassDescription2
44811   {
44812     using NativeType = VkSubpassDescription2;
44813 
44814     static const bool allowDuplicate = false;
44815     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDescription2;
44816 
44817 
44818 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription244819 VULKAN_HPP_CONSTEXPR SubpassDescription2(VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ = {}, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, uint32_t viewMask_ = {}, uint32_t inputAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_ = {}, uint32_t colorAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ = {}, uint32_t preserveAttachmentCount_ = {}, const uint32_t * pPreserveAttachments_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
44820     : pNext( pNext_ ), flags( flags_ ), pipelineBindPoint( pipelineBindPoint_ ), viewMask( viewMask_ ), inputAttachmentCount( inputAttachmentCount_ ), pInputAttachments( pInputAttachments_ ), colorAttachmentCount( colorAttachmentCount_ ), pColorAttachments( pColorAttachments_ ), pResolveAttachments( pResolveAttachments_ ), pDepthStencilAttachment( pDepthStencilAttachment_ ), preserveAttachmentCount( preserveAttachmentCount_ ), pPreserveAttachments( pPreserveAttachments_ )
44821     {}
44822 
44823     VULKAN_HPP_CONSTEXPR SubpassDescription2( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44824 
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription244825     SubpassDescription2( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
44826       : SubpassDescription2( *reinterpret_cast<SubpassDescription2 const *>( &rhs ) )
44827     {}
44828 
44829 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubpassDescription2VULKAN_HPP_NAMESPACE::SubpassDescription244830     SubpassDescription2( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, uint32_t viewMask_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & inputAttachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & colorAttachments_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & resolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ = {}, const void * pNext_ = nullptr )
44831     : pNext( pNext_ ), flags( flags_ ), pipelineBindPoint( pipelineBindPoint_ ), viewMask( viewMask_ ), inputAttachmentCount( static_cast<uint32_t>( inputAttachments_.size() ) ), pInputAttachments( inputAttachments_.data() ), colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) ), pColorAttachments( colorAttachments_.data() ), pResolveAttachments( resolveAttachments_.data() ), pDepthStencilAttachment( pDepthStencilAttachment_ ), preserveAttachmentCount( static_cast<uint32_t>( preserveAttachments_.size() ) ), pPreserveAttachments( preserveAttachments_.data() )
44832     {
44833 #ifdef VULKAN_HPP_NO_EXCEPTIONS
44834       VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) );
44835 #else
44836       if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) )
44837       {
44838         throw LogicError( VULKAN_HPP_NAMESPACE_STRING"::SubpassDescription2::SubpassDescription2: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" );
44839       }
44840 #endif /*VULKAN_HPP_NO_EXCEPTIONS*/
44841     }
44842 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44843 
44844 
44845     SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
44846 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
44847 
operator =VULKAN_HPP_NAMESPACE::SubpassDescription244848     SubpassDescription2 & operator=( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT
44849     {
44850       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescription2 const *>( &rhs );
44851       return *this;
44852     }
44853 
44854 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDescription244855     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
44856     {
44857       pNext = pNext_;
44858       return *this;
44859     }
44860 
setFlagsVULKAN_HPP_NAMESPACE::SubpassDescription244861     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT
44862     {
44863       flags = flags_;
44864       return *this;
44865     }
44866 
setPipelineBindPointVULKAN_HPP_NAMESPACE::SubpassDescription244867     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT
44868     {
44869       pipelineBindPoint = pipelineBindPoint_;
44870       return *this;
44871     }
44872 
setViewMaskVULKAN_HPP_NAMESPACE::SubpassDescription244873     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
44874     {
44875       viewMask = viewMask_;
44876       return *this;
44877     }
44878 
setInputAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription244879     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
44880     {
44881       inputAttachmentCount = inputAttachmentCount_;
44882       return *this;
44883     }
44884 
setPInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription244885     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments_ ) VULKAN_HPP_NOEXCEPT
44886     {
44887       pInputAttachments = pInputAttachments_;
44888       return *this;
44889     }
44890 
44891 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setInputAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription244892     SubpassDescription2 & setInputAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT
44893     {
44894       inputAttachmentCount = static_cast<uint32_t>( inputAttachments_.size() );
44895       pInputAttachments = inputAttachments_.data();
44896       return *this;
44897     }
44898 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44899 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription244900     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
44901     {
44902       colorAttachmentCount = colorAttachmentCount_;
44903       return *this;
44904     }
44905 
setPColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription244906     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
44907     {
44908       pColorAttachments = pColorAttachments_;
44909       return *this;
44910     }
44911 
44912 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription244913     SubpassDescription2 & setColorAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
44914     {
44915       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
44916       pColorAttachments = colorAttachments_.data();
44917       return *this;
44918     }
44919 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44920 
setPResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription244921     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPResolveAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT
44922     {
44923       pResolveAttachments = pResolveAttachments_;
44924       return *this;
44925     }
44926 
44927 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setResolveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription244928     SubpassDescription2 & setResolveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentReference2> const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT
44929     {
44930       colorAttachmentCount = static_cast<uint32_t>( resolveAttachments_.size() );
44931       pResolveAttachments = resolveAttachments_.data();
44932       return *this;
44933     }
44934 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44935 
setPDepthStencilAttachmentVULKAN_HPP_NAMESPACE::SubpassDescription244936     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPDepthStencilAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
44937     {
44938       pDepthStencilAttachment = pDepthStencilAttachment_;
44939       return *this;
44940     }
44941 
setPreserveAttachmentCountVULKAN_HPP_NAMESPACE::SubpassDescription244942     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
44943     {
44944       preserveAttachmentCount = preserveAttachmentCount_;
44945       return *this;
44946     }
44947 
setPPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription244948     VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPPreserveAttachments( const uint32_t * pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT
44949     {
44950       pPreserveAttachments = pPreserveAttachments_;
44951       return *this;
44952     }
44953 
44954 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPreserveAttachmentsVULKAN_HPP_NAMESPACE::SubpassDescription244955     SubpassDescription2 & setPreserveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT
44956     {
44957       preserveAttachmentCount = static_cast<uint32_t>( preserveAttachments_.size() );
44958       pPreserveAttachments = preserveAttachments_.data();
44959       return *this;
44960     }
44961 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44962 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
44963 
44964 
operator VkSubpassDescription2 const&VULKAN_HPP_NAMESPACE::SubpassDescription244965     operator VkSubpassDescription2 const &() const VULKAN_HPP_NOEXCEPT
44966     {
44967       return *reinterpret_cast<const VkSubpassDescription2*>( this );
44968     }
44969 
operator VkSubpassDescription2&VULKAN_HPP_NAMESPACE::SubpassDescription244970     operator VkSubpassDescription2 &() VULKAN_HPP_NOEXCEPT
44971     {
44972       return *reinterpret_cast<VkSubpassDescription2*>( this );
44973     }
44974 
44975 #if defined( VULKAN_HPP_USE_REFLECT )
44976 #if 14 <= VULKAN_HPP_CPP_VERSION
44977     auto
44978 #else
44979     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags const &, VULKAN_HPP_NAMESPACE::PipelineBindPoint const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &, uint32_t const &, const uint32_t * const &>
44980 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescription244981       reflect() const VULKAN_HPP_NOEXCEPT
44982     {
44983       return std::tie( sType, pNext, flags, pipelineBindPoint, viewMask, inputAttachmentCount, pInputAttachments, colorAttachmentCount, pColorAttachments, pResolveAttachments, pDepthStencilAttachment, preserveAttachmentCount, pPreserveAttachments );
44984     }
44985 #endif
44986 
44987 
44988 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
44989 auto operator<=>( SubpassDescription2 const & ) const = default;
44990 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescription244991     bool operator==( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
44992     {
44993 #if defined( VULKAN_HPP_USE_REFLECT )
44994       return this->reflect() == rhs.reflect();
44995 #else
44996       return ( sType == rhs.sType )
44997           && ( pNext == rhs.pNext )
44998           && ( flags == rhs.flags )
44999           && ( pipelineBindPoint == rhs.pipelineBindPoint )
45000           && ( viewMask == rhs.viewMask )
45001           && ( inputAttachmentCount == rhs.inputAttachmentCount )
45002           && ( pInputAttachments == rhs.pInputAttachments )
45003           && ( colorAttachmentCount == rhs.colorAttachmentCount )
45004           && ( pColorAttachments == rhs.pColorAttachments )
45005           && ( pResolveAttachments == rhs.pResolveAttachments )
45006           && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
45007           && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
45008           && ( pPreserveAttachments == rhs.pPreserveAttachments );
45009 #endif
45010     }
45011 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescription245012     bool operator!=( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45013     {
45014       return !operator==( rhs );
45015     }
45016 #endif
45017 
45018     public:
45019     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescription2;
45020     const void * pNext = {};
45021     VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags = {};
45022     VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics;
45023     uint32_t viewMask = {};
45024     uint32_t inputAttachmentCount = {};
45025     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pInputAttachments = {};
45026     uint32_t colorAttachmentCount = {};
45027     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pColorAttachments = {};
45028     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pResolveAttachments = {};
45029     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilAttachment = {};
45030     uint32_t preserveAttachmentCount = {};
45031     const uint32_t * pPreserveAttachments = {};
45032 
45033   };
45034 
45035   template <>
45036   struct CppType<StructureType, StructureType::eSubpassDescription2>
45037   {
45038     using Type = SubpassDescription2;
45039   };
45040   using SubpassDescription2KHR = SubpassDescription2;
45041 
45042   struct SubpassDependency2
45043   {
45044     using NativeType = VkSubpassDependency2;
45045 
45046     static const bool allowDuplicate = false;
45047     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDependency2;
45048 
45049 
45050 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDependency2VULKAN_HPP_NAMESPACE::SubpassDependency245051 VULKAN_HPP_CONSTEXPR SubpassDependency2(uint32_t srcSubpass_ = {}, uint32_t dstSubpass_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ = {}, int32_t viewOffset_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
45052     : pNext( pNext_ ), srcSubpass( srcSubpass_ ), dstSubpass( dstSubpass_ ), srcStageMask( srcStageMask_ ), dstStageMask( dstStageMask_ ), srcAccessMask( srcAccessMask_ ), dstAccessMask( dstAccessMask_ ), dependencyFlags( dependencyFlags_ ), viewOffset( viewOffset_ )
45053     {}
45054 
45055     VULKAN_HPP_CONSTEXPR SubpassDependency2( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45056 
SubpassDependency2VULKAN_HPP_NAMESPACE::SubpassDependency245057     SubpassDependency2( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
45058       : SubpassDependency2( *reinterpret_cast<SubpassDependency2 const *>( &rhs ) )
45059     {}
45060 
45061 
45062     SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45063 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45064 
operator =VULKAN_HPP_NAMESPACE::SubpassDependency245065     SubpassDependency2 & operator=( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT
45066     {
45067       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDependency2 const *>( &rhs );
45068       return *this;
45069     }
45070 
45071 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDependency245072     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45073     {
45074       pNext = pNext_;
45075       return *this;
45076     }
45077 
setSrcSubpassVULKAN_HPP_NAMESPACE::SubpassDependency245078     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT
45079     {
45080       srcSubpass = srcSubpass_;
45081       return *this;
45082     }
45083 
setDstSubpassVULKAN_HPP_NAMESPACE::SubpassDependency245084     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT
45085     {
45086       dstSubpass = dstSubpass_;
45087       return *this;
45088     }
45089 
setSrcStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency245090     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT
45091     {
45092       srcStageMask = srcStageMask_;
45093       return *this;
45094     }
45095 
setDstStageMaskVULKAN_HPP_NAMESPACE::SubpassDependency245096     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT
45097     {
45098       dstStageMask = dstStageMask_;
45099       return *this;
45100     }
45101 
setSrcAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency245102     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT
45103     {
45104       srcAccessMask = srcAccessMask_;
45105       return *this;
45106     }
45107 
setDstAccessMaskVULKAN_HPP_NAMESPACE::SubpassDependency245108     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT
45109     {
45110       dstAccessMask = dstAccessMask_;
45111       return *this;
45112     }
45113 
setDependencyFlagsVULKAN_HPP_NAMESPACE::SubpassDependency245114     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT
45115     {
45116       dependencyFlags = dependencyFlags_;
45117       return *this;
45118     }
45119 
setViewOffsetVULKAN_HPP_NAMESPACE::SubpassDependency245120     VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setViewOffset( int32_t viewOffset_ ) VULKAN_HPP_NOEXCEPT
45121     {
45122       viewOffset = viewOffset_;
45123       return *this;
45124     }
45125 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45126 
45127 
operator VkSubpassDependency2 const&VULKAN_HPP_NAMESPACE::SubpassDependency245128     operator VkSubpassDependency2 const &() const VULKAN_HPP_NOEXCEPT
45129     {
45130       return *reinterpret_cast<const VkSubpassDependency2*>( this );
45131     }
45132 
operator VkSubpassDependency2&VULKAN_HPP_NAMESPACE::SubpassDependency245133     operator VkSubpassDependency2 &() VULKAN_HPP_NOEXCEPT
45134     {
45135       return *reinterpret_cast<VkSubpassDependency2*>( this );
45136     }
45137 
45138 #if defined( VULKAN_HPP_USE_REFLECT )
45139 #if 14 <= VULKAN_HPP_CPP_VERSION
45140     auto
45141 #else
45142     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, VULKAN_HPP_NAMESPACE::AccessFlags const &, VULKAN_HPP_NAMESPACE::DependencyFlags const &, int32_t const &>
45143 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDependency245144       reflect() const VULKAN_HPP_NOEXCEPT
45145     {
45146       return std::tie( sType, pNext, srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags, viewOffset );
45147     }
45148 #endif
45149 
45150 
45151 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
45152 auto operator<=>( SubpassDependency2 const & ) const = default;
45153 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDependency245154     bool operator==( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45155     {
45156 #if defined( VULKAN_HPP_USE_REFLECT )
45157       return this->reflect() == rhs.reflect();
45158 #else
45159       return ( sType == rhs.sType )
45160           && ( pNext == rhs.pNext )
45161           && ( srcSubpass == rhs.srcSubpass )
45162           && ( dstSubpass == rhs.dstSubpass )
45163           && ( srcStageMask == rhs.srcStageMask )
45164           && ( dstStageMask == rhs.dstStageMask )
45165           && ( srcAccessMask == rhs.srcAccessMask )
45166           && ( dstAccessMask == rhs.dstAccessMask )
45167           && ( dependencyFlags == rhs.dependencyFlags )
45168           && ( viewOffset == rhs.viewOffset );
45169 #endif
45170     }
45171 
operator !=VULKAN_HPP_NAMESPACE::SubpassDependency245172     bool operator!=( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45173     {
45174       return !operator==( rhs );
45175     }
45176 #endif
45177 
45178     public:
45179     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDependency2;
45180     const void * pNext = {};
45181     uint32_t srcSubpass = {};
45182     uint32_t dstSubpass = {};
45183     VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask = {};
45184     VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask = {};
45185     VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {};
45186     VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {};
45187     VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {};
45188     int32_t viewOffset = {};
45189 
45190   };
45191 
45192   template <>
45193   struct CppType<StructureType, StructureType::eSubpassDependency2>
45194   {
45195     using Type = SubpassDependency2;
45196   };
45197   using SubpassDependency2KHR = SubpassDependency2;
45198 
45199   struct RenderPassCreateInfo2
45200   {
45201     using NativeType = VkRenderPassCreateInfo2;
45202 
45203     static const bool allowDuplicate = false;
45204     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreateInfo2;
45205 
45206 
45207 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo245208 VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2(VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ = {}, uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_ = {}, uint32_t subpassCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses_ = {}, uint32_t dependencyCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies_ = {}, uint32_t correlatedViewMaskCount_ = {}, const uint32_t * pCorrelatedViewMasks_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
45209     : pNext( pNext_ ), flags( flags_ ), attachmentCount( attachmentCount_ ), pAttachments( pAttachments_ ), subpassCount( subpassCount_ ), pSubpasses( pSubpasses_ ), dependencyCount( dependencyCount_ ), pDependencies( pDependencies_ ), correlatedViewMaskCount( correlatedViewMaskCount_ ), pCorrelatedViewMasks( pCorrelatedViewMasks_ )
45210     {}
45211 
45212     VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45213 
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo245214     RenderPassCreateInfo2( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
45215       : RenderPassCreateInfo2( *reinterpret_cast<RenderPassCreateInfo2 const *>( &rhs ) )
45216     {}
45217 
45218 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassCreateInfo2VULKAN_HPP_NAMESPACE::RenderPassCreateInfo245219     RenderPassCreateInfo2( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const & attachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const & subpasses_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const & dependencies_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlatedViewMasks_ = {}, const void * pNext_ = nullptr )
45220     : pNext( pNext_ ), flags( flags_ ), attachmentCount( static_cast<uint32_t>( attachments_.size() ) ), pAttachments( attachments_.data() ), subpassCount( static_cast<uint32_t>( subpasses_.size() ) ), pSubpasses( subpasses_.data() ), dependencyCount( static_cast<uint32_t>( dependencies_.size() ) ), pDependencies( dependencies_.data() ), correlatedViewMaskCount( static_cast<uint32_t>( correlatedViewMasks_.size() ) ), pCorrelatedViewMasks( correlatedViewMasks_.data() )
45221     {}
45222 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45223 
45224 
45225     RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45226 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45227 
operator =VULKAN_HPP_NAMESPACE::RenderPassCreateInfo245228     RenderPassCreateInfo2 & operator=( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
45229     {
45230       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const *>( &rhs );
45231       return *this;
45232     }
45233 
45234 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245235     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45236     {
45237       pNext = pNext_;
45238       return *this;
45239     }
45240 
setFlagsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245241     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
45242     {
45243       flags = flags_;
45244       return *this;
45245     }
45246 
setAttachmentCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245247     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT
45248     {
45249       attachmentCount = attachmentCount_;
45250       return *this;
45251     }
45252 
setPAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245253     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments_ ) VULKAN_HPP_NOEXCEPT
45254     {
45255       pAttachments = pAttachments_;
45256       return *this;
45257     }
45258 
45259 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentsVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245260     RenderPassCreateInfo2 & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentDescription2> const & attachments_ ) VULKAN_HPP_NOEXCEPT
45261     {
45262       attachmentCount = static_cast<uint32_t>( attachments_.size() );
45263       pAttachments = attachments_.data();
45264       return *this;
45265     }
45266 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45267 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245268     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
45269     {
45270       subpassCount = subpassCount_;
45271       return *this;
45272     }
45273 
setPSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245274     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses_ ) VULKAN_HPP_NOEXCEPT
45275     {
45276       pSubpasses = pSubpasses_;
45277       return *this;
45278     }
45279 
45280 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSubpassesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245281     RenderPassCreateInfo2 & setSubpasses( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDescription2> const & subpasses_ ) VULKAN_HPP_NOEXCEPT
45282     {
45283       subpassCount = static_cast<uint32_t>( subpasses_.size() );
45284       pSubpasses = subpasses_.data();
45285       return *this;
45286     }
45287 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45288 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245289     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
45290     {
45291       dependencyCount = dependencyCount_;
45292       return *this;
45293     }
45294 
setPDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245295     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies_ ) VULKAN_HPP_NOEXCEPT
45296     {
45297       pDependencies = pDependencies_;
45298       return *this;
45299     }
45300 
45301 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDependenciesVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245302     RenderPassCreateInfo2 & setDependencies( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassDependency2> const & dependencies_ ) VULKAN_HPP_NOEXCEPT
45303     {
45304       dependencyCount = static_cast<uint32_t>( dependencies_.size() );
45305       pDependencies = dependencies_.data();
45306       return *this;
45307     }
45308 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45309 
setCorrelatedViewMaskCountVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245310     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) VULKAN_HPP_NOEXCEPT
45311     {
45312       correlatedViewMaskCount = correlatedViewMaskCount_;
45313       return *this;
45314     }
45315 
setPCorrelatedViewMasksVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245316     VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPCorrelatedViewMasks( const uint32_t * pCorrelatedViewMasks_ ) VULKAN_HPP_NOEXCEPT
45317     {
45318       pCorrelatedViewMasks = pCorrelatedViewMasks_;
45319       return *this;
45320     }
45321 
45322 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCorrelatedViewMasksVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245323     RenderPassCreateInfo2 & setCorrelatedViewMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlatedViewMasks_ ) VULKAN_HPP_NOEXCEPT
45324     {
45325       correlatedViewMaskCount = static_cast<uint32_t>( correlatedViewMasks_.size() );
45326       pCorrelatedViewMasks = correlatedViewMasks_.data();
45327       return *this;
45328     }
45329 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45330 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45331 
45332 
operator VkRenderPassCreateInfo2 const&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo245333     operator VkRenderPassCreateInfo2 const &() const VULKAN_HPP_NOEXCEPT
45334     {
45335       return *reinterpret_cast<const VkRenderPassCreateInfo2*>( this );
45336     }
45337 
operator VkRenderPassCreateInfo2&VULKAN_HPP_NAMESPACE::RenderPassCreateInfo245338     operator VkRenderPassCreateInfo2 &() VULKAN_HPP_NOEXCEPT
45339     {
45340       return *reinterpret_cast<VkRenderPassCreateInfo2*>( this );
45341     }
45342 
45343 #if defined( VULKAN_HPP_USE_REFLECT )
45344 #if 14 <= VULKAN_HPP_CPP_VERSION
45345     auto
45346 #else
45347     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderPassCreateFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SubpassDescription2 * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SubpassDependency2 * const &, uint32_t const &, const uint32_t * const &>
45348 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassCreateInfo245349       reflect() const VULKAN_HPP_NOEXCEPT
45350     {
45351       return std::tie( sType, pNext, flags, attachmentCount, pAttachments, subpassCount, pSubpasses, dependencyCount, pDependencies, correlatedViewMaskCount, pCorrelatedViewMasks );
45352     }
45353 #endif
45354 
45355 
45356 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
45357 auto operator<=>( RenderPassCreateInfo2 const & ) const = default;
45358 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassCreateInfo245359     bool operator==( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45360     {
45361 #if defined( VULKAN_HPP_USE_REFLECT )
45362       return this->reflect() == rhs.reflect();
45363 #else
45364       return ( sType == rhs.sType )
45365           && ( pNext == rhs.pNext )
45366           && ( flags == rhs.flags )
45367           && ( attachmentCount == rhs.attachmentCount )
45368           && ( pAttachments == rhs.pAttachments )
45369           && ( subpassCount == rhs.subpassCount )
45370           && ( pSubpasses == rhs.pSubpasses )
45371           && ( dependencyCount == rhs.dependencyCount )
45372           && ( pDependencies == rhs.pDependencies )
45373           && ( correlatedViewMaskCount == rhs.correlatedViewMaskCount )
45374           && ( pCorrelatedViewMasks == rhs.pCorrelatedViewMasks );
45375 #endif
45376     }
45377 
operator !=VULKAN_HPP_NAMESPACE::RenderPassCreateInfo245378     bool operator!=( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
45379     {
45380       return !operator==( rhs );
45381     }
45382 #endif
45383 
45384     public:
45385     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo2;
45386     const void * pNext = {};
45387     VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags = {};
45388     uint32_t attachmentCount = {};
45389     const VULKAN_HPP_NAMESPACE::AttachmentDescription2 * pAttachments = {};
45390     uint32_t subpassCount = {};
45391     const VULKAN_HPP_NAMESPACE::SubpassDescription2 * pSubpasses = {};
45392     uint32_t dependencyCount = {};
45393     const VULKAN_HPP_NAMESPACE::SubpassDependency2 * pDependencies = {};
45394     uint32_t correlatedViewMaskCount = {};
45395     const uint32_t * pCorrelatedViewMasks = {};
45396 
45397   };
45398 
45399   template <>
45400   struct CppType<StructureType, StructureType::eRenderPassCreateInfo2>
45401   {
45402     using Type = RenderPassCreateInfo2;
45403   };
45404   using RenderPassCreateInfo2KHR = RenderPassCreateInfo2;
45405 
45406   struct RenderPassInputAttachmentAspectCreateInfo
45407   {
45408     using NativeType = VkRenderPassInputAttachmentAspectCreateInfo;
45409 
45410     static const bool allowDuplicate = false;
45411     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
45412 
45413 
45414 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45415 VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo(uint32_t aspectReferenceCount_ = {}, const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
45416     : pNext( pNext_ ), aspectReferenceCount( aspectReferenceCount_ ), pAspectReferences( pAspectReferences_ )
45417     {}
45418 
45419     VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45420 
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45421     RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45422       : RenderPassInputAttachmentAspectCreateInfo( *reinterpret_cast<RenderPassInputAttachmentAspectCreateInfo const *>( &rhs ) )
45423     {}
45424 
45425 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassInputAttachmentAspectCreateInfoVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45426     RenderPassInputAttachmentAspectCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const & aspectReferences_, const void * pNext_ = nullptr )
45427     : pNext( pNext_ ), aspectReferenceCount( static_cast<uint32_t>( aspectReferences_.size() ) ), pAspectReferences( aspectReferences_.data() )
45428     {}
45429 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45430 
45431 
45432     RenderPassInputAttachmentAspectCreateInfo & operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45433 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45434 
operator =VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45435     RenderPassInputAttachmentAspectCreateInfo & operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45436     {
45437       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo const *>( &rhs );
45438       return *this;
45439     }
45440 
45441 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45442     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45443     {
45444       pNext = pNext_;
45445       return *this;
45446     }
45447 
setAspectReferenceCountVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45448     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setAspectReferenceCount( uint32_t aspectReferenceCount_ ) VULKAN_HPP_NOEXCEPT
45449     {
45450       aspectReferenceCount = aspectReferenceCount_;
45451       return *this;
45452     }
45453 
setPAspectReferencesVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45454     VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setPAspectReferences( const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences_ ) VULKAN_HPP_NOEXCEPT
45455     {
45456       pAspectReferences = pAspectReferences_;
45457       return *this;
45458     }
45459 
45460 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAspectReferencesVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45461     RenderPassInputAttachmentAspectCreateInfo & setAspectReferences( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference> const & aspectReferences_ ) VULKAN_HPP_NOEXCEPT
45462     {
45463       aspectReferenceCount = static_cast<uint32_t>( aspectReferences_.size() );
45464       pAspectReferences = aspectReferences_.data();
45465       return *this;
45466     }
45467 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45468 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45469 
45470 
operator VkRenderPassInputAttachmentAspectCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45471     operator VkRenderPassInputAttachmentAspectCreateInfo const &() const VULKAN_HPP_NOEXCEPT
45472     {
45473       return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfo*>( this );
45474     }
45475 
operator VkRenderPassInputAttachmentAspectCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45476     operator VkRenderPassInputAttachmentAspectCreateInfo &() VULKAN_HPP_NOEXCEPT
45477     {
45478       return *reinterpret_cast<VkRenderPassInputAttachmentAspectCreateInfo*>( this );
45479     }
45480 
45481 #if defined( VULKAN_HPP_USE_REFLECT )
45482 #if 14 <= VULKAN_HPP_CPP_VERSION
45483     auto
45484 #else
45485     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * const &>
45486 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45487       reflect() const VULKAN_HPP_NOEXCEPT
45488     {
45489       return std::tie( sType, pNext, aspectReferenceCount, pAspectReferences );
45490     }
45491 #endif
45492 
45493 
45494 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
45495 auto operator<=>( RenderPassInputAttachmentAspectCreateInfo const & ) const = default;
45496 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45497     bool operator==( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45498     {
45499 #if defined( VULKAN_HPP_USE_REFLECT )
45500       return this->reflect() == rhs.reflect();
45501 #else
45502       return ( sType == rhs.sType )
45503           && ( pNext == rhs.pNext )
45504           && ( aspectReferenceCount == rhs.aspectReferenceCount )
45505           && ( pAspectReferences == rhs.pAspectReferences );
45506 #endif
45507     }
45508 
operator !=VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo45509     bool operator!=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45510     {
45511       return !operator==( rhs );
45512     }
45513 #endif
45514 
45515     public:
45516     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo;
45517     const void * pNext = {};
45518     uint32_t aspectReferenceCount = {};
45519     const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference * pAspectReferences = {};
45520 
45521   };
45522 
45523   template <>
45524   struct CppType<StructureType, StructureType::eRenderPassInputAttachmentAspectCreateInfo>
45525   {
45526     using Type = RenderPassInputAttachmentAspectCreateInfo;
45527   };
45528   using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo;
45529 
45530   struct RenderPassMultiviewCreateInfo
45531   {
45532     using NativeType = VkRenderPassMultiviewCreateInfo;
45533 
45534     static const bool allowDuplicate = false;
45535     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassMultiviewCreateInfo;
45536 
45537 
45538 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45539 VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo(uint32_t subpassCount_ = {}, const uint32_t * pViewMasks_ = {}, uint32_t dependencyCount_ = {}, const int32_t * pViewOffsets_ = {}, uint32_t correlationMaskCount_ = {}, const uint32_t * pCorrelationMasks_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
45540     : pNext( pNext_ ), subpassCount( subpassCount_ ), pViewMasks( pViewMasks_ ), dependencyCount( dependencyCount_ ), pViewOffsets( pViewOffsets_ ), correlationMaskCount( correlationMaskCount_ ), pCorrelationMasks( pCorrelationMasks_ )
45541     {}
45542 
45543     VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45544 
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45545     RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45546       : RenderPassMultiviewCreateInfo( *reinterpret_cast<RenderPassMultiviewCreateInfo const *>( &rhs ) )
45547     {}
45548 
45549 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassMultiviewCreateInfoVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45550     RenderPassMultiviewCreateInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const & viewOffsets_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ = {}, const void * pNext_ = nullptr )
45551     : pNext( pNext_ ), subpassCount( static_cast<uint32_t>( viewMasks_.size() ) ), pViewMasks( viewMasks_.data() ), dependencyCount( static_cast<uint32_t>( viewOffsets_.size() ) ), pViewOffsets( viewOffsets_.data() ), correlationMaskCount( static_cast<uint32_t>( correlationMasks_.size() ) ), pCorrelationMasks( correlationMasks_.data() )
45552     {}
45553 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45554 
45555 
45556     RenderPassMultiviewCreateInfo & operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45557 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45558 
operator =VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45559     RenderPassMultiviewCreateInfo & operator=( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45560     {
45561       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo const *>( &rhs );
45562       return *this;
45563     }
45564 
45565 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45566     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45567     {
45568       pNext = pNext_;
45569       return *this;
45570     }
45571 
setSubpassCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45572     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT
45573     {
45574       subpassCount = subpassCount_;
45575       return *this;
45576     }
45577 
setPViewMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45578     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPViewMasks( const uint32_t * pViewMasks_ ) VULKAN_HPP_NOEXCEPT
45579     {
45580       pViewMasks = pViewMasks_;
45581       return *this;
45582     }
45583 
45584 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45585     RenderPassMultiviewCreateInfo & setViewMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & viewMasks_ ) VULKAN_HPP_NOEXCEPT
45586     {
45587       subpassCount = static_cast<uint32_t>( viewMasks_.size() );
45588       pViewMasks = viewMasks_.data();
45589       return *this;
45590     }
45591 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45592 
setDependencyCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45593     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT
45594     {
45595       dependencyCount = dependencyCount_;
45596       return *this;
45597     }
45598 
setPViewOffsetsVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45599     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPViewOffsets( const int32_t * pViewOffsets_ ) VULKAN_HPP_NOEXCEPT
45600     {
45601       pViewOffsets = pViewOffsets_;
45602       return *this;
45603     }
45604 
45605 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setViewOffsetsVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45606     RenderPassMultiviewCreateInfo & setViewOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const int32_t> const & viewOffsets_ ) VULKAN_HPP_NOEXCEPT
45607     {
45608       dependencyCount = static_cast<uint32_t>( viewOffsets_.size() );
45609       pViewOffsets = viewOffsets_.data();
45610       return *this;
45611     }
45612 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45613 
setCorrelationMaskCountVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45614     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setCorrelationMaskCount( uint32_t correlationMaskCount_ ) VULKAN_HPP_NOEXCEPT
45615     {
45616       correlationMaskCount = correlationMaskCount_;
45617       return *this;
45618     }
45619 
setPCorrelationMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45620     VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPCorrelationMasks( const uint32_t * pCorrelationMasks_ ) VULKAN_HPP_NOEXCEPT
45621     {
45622       pCorrelationMasks = pCorrelationMasks_;
45623       return *this;
45624     }
45625 
45626 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCorrelationMasksVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45627     RenderPassMultiviewCreateInfo & setCorrelationMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & correlationMasks_ ) VULKAN_HPP_NOEXCEPT
45628     {
45629       correlationMaskCount = static_cast<uint32_t>( correlationMasks_.size() );
45630       pCorrelationMasks = correlationMasks_.data();
45631       return *this;
45632     }
45633 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45634 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45635 
45636 
operator VkRenderPassMultiviewCreateInfo const&VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45637     operator VkRenderPassMultiviewCreateInfo const &() const VULKAN_HPP_NOEXCEPT
45638     {
45639       return *reinterpret_cast<const VkRenderPassMultiviewCreateInfo*>( this );
45640     }
45641 
operator VkRenderPassMultiviewCreateInfo&VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45642     operator VkRenderPassMultiviewCreateInfo &() VULKAN_HPP_NOEXCEPT
45643     {
45644       return *reinterpret_cast<VkRenderPassMultiviewCreateInfo*>( this );
45645     }
45646 
45647 #if defined( VULKAN_HPP_USE_REFLECT )
45648 #if 14 <= VULKAN_HPP_CPP_VERSION
45649     auto
45650 #else
45651     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint32_t * const &, uint32_t const &, const int32_t * const &, uint32_t const &, const uint32_t * const &>
45652 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45653       reflect() const VULKAN_HPP_NOEXCEPT
45654     {
45655       return std::tie( sType, pNext, subpassCount, pViewMasks, dependencyCount, pViewOffsets, correlationMaskCount, pCorrelationMasks );
45656     }
45657 #endif
45658 
45659 
45660 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
45661 auto operator<=>( RenderPassMultiviewCreateInfo const & ) const = default;
45662 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45663     bool operator==( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45664     {
45665 #if defined( VULKAN_HPP_USE_REFLECT )
45666       return this->reflect() == rhs.reflect();
45667 #else
45668       return ( sType == rhs.sType )
45669           && ( pNext == rhs.pNext )
45670           && ( subpassCount == rhs.subpassCount )
45671           && ( pViewMasks == rhs.pViewMasks )
45672           && ( dependencyCount == rhs.dependencyCount )
45673           && ( pViewOffsets == rhs.pViewOffsets )
45674           && ( correlationMaskCount == rhs.correlationMaskCount )
45675           && ( pCorrelationMasks == rhs.pCorrelationMasks );
45676 #endif
45677     }
45678 
operator !=VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo45679     bool operator!=( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
45680     {
45681       return !operator==( rhs );
45682     }
45683 #endif
45684 
45685     public:
45686     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassMultiviewCreateInfo;
45687     const void * pNext = {};
45688     uint32_t subpassCount = {};
45689     const uint32_t * pViewMasks = {};
45690     uint32_t dependencyCount = {};
45691     const int32_t * pViewOffsets = {};
45692     uint32_t correlationMaskCount = {};
45693     const uint32_t * pCorrelationMasks = {};
45694 
45695   };
45696 
45697   template <>
45698   struct CppType<StructureType, StructureType::eRenderPassMultiviewCreateInfo>
45699   {
45700     using Type = RenderPassMultiviewCreateInfo;
45701   };
45702   using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo;
45703 
45704   struct SubpassSampleLocationsEXT
45705   {
45706     using NativeType = VkSubpassSampleLocationsEXT;
45707 
45708 
45709 
45710 
45711 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassSampleLocationsEXTVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45712 VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT(uint32_t subpassIndex_ = {}, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {}) VULKAN_HPP_NOEXCEPT
45713     : subpassIndex( subpassIndex_ ), sampleLocationsInfo( sampleLocationsInfo_ )
45714     {}
45715 
45716     VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45717 
SubpassSampleLocationsEXTVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45718     SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45719       : SubpassSampleLocationsEXT( *reinterpret_cast<SubpassSampleLocationsEXT const *>( &rhs ) )
45720     {}
45721 
45722 
45723     SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45724 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45725 
operator =VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45726     SubpassSampleLocationsEXT & operator=( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45727     {
45728       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT const *>( &rhs );
45729       return *this;
45730     }
45731 
45732 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setSubpassIndexVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45733     VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) VULKAN_HPP_NOEXCEPT
45734     {
45735       subpassIndex = subpassIndex_;
45736       return *this;
45737     }
45738 
setSampleLocationsInfoVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45739     VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT
45740     {
45741       sampleLocationsInfo = sampleLocationsInfo_;
45742       return *this;
45743     }
45744 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45745 
45746 
operator VkSubpassSampleLocationsEXT const&VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45747     operator VkSubpassSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT
45748     {
45749       return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>( this );
45750     }
45751 
operator VkSubpassSampleLocationsEXT&VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45752     operator VkSubpassSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT
45753     {
45754       return *reinterpret_cast<VkSubpassSampleLocationsEXT*>( this );
45755     }
45756 
45757 #if defined( VULKAN_HPP_USE_REFLECT )
45758 #if 14 <= VULKAN_HPP_CPP_VERSION
45759     auto
45760 #else
45761     std::tuple<uint32_t const &, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const &>
45762 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45763       reflect() const VULKAN_HPP_NOEXCEPT
45764     {
45765       return std::tie( subpassIndex, sampleLocationsInfo );
45766     }
45767 #endif
45768 
45769 
45770 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
45771 auto operator<=>( SubpassSampleLocationsEXT const & ) const = default;
45772 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45773     bool operator==( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45774     {
45775 #if defined( VULKAN_HPP_USE_REFLECT )
45776       return this->reflect() == rhs.reflect();
45777 #else
45778       return ( subpassIndex == rhs.subpassIndex )
45779           && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
45780 #endif
45781     }
45782 
operator !=VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT45783     bool operator!=( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45784     {
45785       return !operator==( rhs );
45786     }
45787 #endif
45788 
45789     public:
45790     uint32_t subpassIndex = {};
45791     VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {};
45792 
45793   };
45794 
45795   struct RenderPassSampleLocationsBeginInfoEXT
45796   {
45797     using NativeType = VkRenderPassSampleLocationsBeginInfoEXT;
45798 
45799     static const bool allowDuplicate = false;
45800     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
45801 
45802 
45803 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45804 VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT(uint32_t attachmentInitialSampleLocationsCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_ = {}, uint32_t postSubpassSampleLocationsCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
45805     : pNext( pNext_ ), attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ ), pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ ), postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ ), pPostSubpassSampleLocations( pPostSubpassSampleLocations_ )
45806     {}
45807 
45808     VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45809 
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45810     RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45811       : RenderPassSampleLocationsBeginInfoEXT( *reinterpret_cast<RenderPassSampleLocationsBeginInfoEXT const *>( &rhs ) )
45812     {}
45813 
45814 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderPassSampleLocationsBeginInfoEXTVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45815     RenderPassSampleLocationsBeginInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const & attachmentInitialSampleLocations_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const & postSubpassSampleLocations_ = {}, const void * pNext_ = nullptr )
45816     : pNext( pNext_ ), attachmentInitialSampleLocationsCount( static_cast<uint32_t>( attachmentInitialSampleLocations_.size() ) ), pAttachmentInitialSampleLocations( attachmentInitialSampleLocations_.data() ), postSubpassSampleLocationsCount( static_cast<uint32_t>( postSubpassSampleLocations_.size() ) ), pPostSubpassSampleLocations( postSubpassSampleLocations_.data() )
45817     {}
45818 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45819 
45820 
45821     RenderPassSampleLocationsBeginInfoEXT & operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45822 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45823 
operator =VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45824     RenderPassSampleLocationsBeginInfoEXT & operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
45825     {
45826       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT const *>( &rhs );
45827       return *this;
45828     }
45829 
45830 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45831     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45832     {
45833       pNext = pNext_;
45834       return *this;
45835     }
45836 
setAttachmentInitialSampleLocationsCountVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45837     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
45838     {
45839       attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
45840       return *this;
45841     }
45842 
setPAttachmentInitialSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45843     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPAttachmentInitialSampleLocations( const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT
45844     {
45845       pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
45846       return *this;
45847     }
45848 
45849 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setAttachmentInitialSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45850     RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT> const & attachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT
45851     {
45852       attachmentInitialSampleLocationsCount = static_cast<uint32_t>( attachmentInitialSampleLocations_.size() );
45853       pAttachmentInitialSampleLocations = attachmentInitialSampleLocations_.data();
45854       return *this;
45855     }
45856 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45857 
setPostSubpassSampleLocationsCountVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45858     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT
45859     {
45860       postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
45861       return *this;
45862     }
45863 
setPPostSubpassSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45864     VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPPostSubpassSampleLocations( const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT
45865     {
45866       pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
45867       return *this;
45868     }
45869 
45870 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setPostSubpassSampleLocationsVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45871     RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT> const & postSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT
45872     {
45873       postSubpassSampleLocationsCount = static_cast<uint32_t>( postSubpassSampleLocations_.size() );
45874       pPostSubpassSampleLocations = postSubpassSampleLocations_.data();
45875       return *this;
45876     }
45877 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
45878 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
45879 
45880 
operator VkRenderPassSampleLocationsBeginInfoEXT const&VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45881     operator VkRenderPassSampleLocationsBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT
45882     {
45883       return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>( this );
45884     }
45885 
operator VkRenderPassSampleLocationsBeginInfoEXT&VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45886     operator VkRenderPassSampleLocationsBeginInfoEXT &() VULKAN_HPP_NOEXCEPT
45887     {
45888       return *reinterpret_cast<VkRenderPassSampleLocationsBeginInfoEXT*>( this );
45889     }
45890 
45891 #if defined( VULKAN_HPP_USE_REFLECT )
45892 #if 14 <= VULKAN_HPP_CPP_VERSION
45893     auto
45894 #else
45895     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * const &>
45896 #endif
reflectVULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45897       reflect() const VULKAN_HPP_NOEXCEPT
45898     {
45899       return std::tie( sType, pNext, attachmentInitialSampleLocationsCount, pAttachmentInitialSampleLocations, postSubpassSampleLocationsCount, pPostSubpassSampleLocations );
45900     }
45901 #endif
45902 
45903 
45904 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
45905 auto operator<=>( RenderPassSampleLocationsBeginInfoEXT const & ) const = default;
45906 #else
operator ==VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45907     bool operator==( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45908     {
45909 #if defined( VULKAN_HPP_USE_REFLECT )
45910       return this->reflect() == rhs.reflect();
45911 #else
45912       return ( sType == rhs.sType )
45913           && ( pNext == rhs.pNext )
45914           && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
45915           && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
45916           && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
45917           && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
45918 #endif
45919     }
45920 
operator !=VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT45921     bool operator!=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
45922     {
45923       return !operator==( rhs );
45924     }
45925 #endif
45926 
45927     public:
45928     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
45929     const void * pNext = {};
45930     uint32_t attachmentInitialSampleLocationsCount = {};
45931     const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT * pAttachmentInitialSampleLocations = {};
45932     uint32_t postSubpassSampleLocationsCount = {};
45933     const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT * pPostSubpassSampleLocations = {};
45934 
45935   };
45936 
45937   template <>
45938   struct CppType<StructureType, StructureType::eRenderPassSampleLocationsBeginInfoEXT>
45939   {
45940     using Type = RenderPassSampleLocationsBeginInfoEXT;
45941   };
45942 
45943   struct RenderingAttachmentInfo
45944   {
45945     using NativeType = VkRenderingAttachmentInfo;
45946 
45947     static const bool allowDuplicate = false;
45948     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingAttachmentInfo;
45949 
45950 
45951 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingAttachmentInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo45952 VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo(VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone, VULKAN_HPP_NAMESPACE::ImageView resolveImageView_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::ClearValue clearValue_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
45953     : pNext( pNext_ ), imageView( imageView_ ), imageLayout( imageLayout_ ), resolveMode( resolveMode_ ), resolveImageView( resolveImageView_ ), resolveImageLayout( resolveImageLayout_ ), loadOp( loadOp_ ), storeOp( storeOp_ ), clearValue( clearValue_ )
45954     {}
45955 
45956     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45957 
RenderingAttachmentInfoVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo45958     RenderingAttachmentInfo( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45959       : RenderingAttachmentInfo( *reinterpret_cast<RenderingAttachmentInfo const *>( &rhs ) )
45960     {}
45961 
45962 
45963     RenderingAttachmentInfo & operator=( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
45964 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
45965 
operator =VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo45966     RenderingAttachmentInfo & operator=( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT
45967     {
45968       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo const *>( &rhs );
45969       return *this;
45970     }
45971 
45972 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo45973     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
45974     {
45975       pNext = pNext_;
45976       return *this;
45977     }
45978 
setImageViewVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo45979     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT
45980     {
45981       imageView = imageView_;
45982       return *this;
45983     }
45984 
setImageLayoutVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo45985     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT
45986     {
45987       imageLayout = imageLayout_;
45988       return *this;
45989     }
45990 
setResolveModeVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo45991     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode_ ) VULKAN_HPP_NOEXCEPT
45992     {
45993       resolveMode = resolveMode_;
45994       return *this;
45995     }
45996 
setResolveImageViewVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo45997     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveImageView( VULKAN_HPP_NAMESPACE::ImageView resolveImageView_ ) VULKAN_HPP_NOEXCEPT
45998     {
45999       resolveImageView = resolveImageView_;
46000       return *this;
46001     }
46002 
setResolveImageLayoutVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo46003     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout_ ) VULKAN_HPP_NOEXCEPT
46004     {
46005       resolveImageLayout = resolveImageLayout_;
46006       return *this;
46007     }
46008 
setLoadOpVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo46009     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT
46010     {
46011       loadOp = loadOp_;
46012       return *this;
46013     }
46014 
setStoreOpVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo46015     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT
46016     {
46017       storeOp = storeOp_;
46018       return *this;
46019     }
46020 
setClearValueVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo46021     VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT
46022     {
46023       clearValue = clearValue_;
46024       return *this;
46025     }
46026 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46027 
46028 
operator VkRenderingAttachmentInfo const&VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo46029     operator VkRenderingAttachmentInfo const &() const VULKAN_HPP_NOEXCEPT
46030     {
46031       return *reinterpret_cast<const VkRenderingAttachmentInfo*>( this );
46032     }
46033 
operator VkRenderingAttachmentInfo&VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo46034     operator VkRenderingAttachmentInfo &() VULKAN_HPP_NOEXCEPT
46035     {
46036       return *reinterpret_cast<VkRenderingAttachmentInfo*>( this );
46037     }
46038 
46039 #if defined( VULKAN_HPP_USE_REFLECT )
46040 #if 14 <= VULKAN_HPP_CPP_VERSION
46041     auto
46042 #else
46043     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ImageView const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &, VULKAN_HPP_NAMESPACE::ImageView const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::AttachmentLoadOp const &, VULKAN_HPP_NAMESPACE::AttachmentStoreOp const &, VULKAN_HPP_NAMESPACE::ClearValue const &>
46044 #endif
reflectVULKAN_HPP_NAMESPACE::RenderingAttachmentInfo46045       reflect() const VULKAN_HPP_NOEXCEPT
46046     {
46047       return std::tie( sType, pNext, imageView, imageLayout, resolveMode, resolveImageView, resolveImageLayout, loadOp, storeOp, clearValue );
46048     }
46049 #endif
46050 
46051 
46052     public:
46053     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderingAttachmentInfo;
46054     const void * pNext = {};
46055     VULKAN_HPP_NAMESPACE::ImageView imageView = {};
46056     VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
46057     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits resolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
46058     VULKAN_HPP_NAMESPACE::ImageView resolveImageView = {};
46059     VULKAN_HPP_NAMESPACE::ImageLayout resolveImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
46060     VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad;
46061     VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore;
46062     VULKAN_HPP_NAMESPACE::ClearValue clearValue = {};
46063 
46064   };
46065 
46066   template <>
46067   struct CppType<StructureType, StructureType::eRenderingAttachmentInfo>
46068   {
46069     using Type = RenderingAttachmentInfo;
46070   };
46071   using RenderingAttachmentInfoKHR = RenderingAttachmentInfo;
46072 
46073   struct RenderingInfo
46074   {
46075     using NativeType = VkRenderingInfo;
46076 
46077     static const bool allowDuplicate = false;
46078     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingInfo;
46079 
46080 
46081 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo46082 VULKAN_HPP_CONSTEXPR_14 RenderingInfo(VULKAN_HPP_NAMESPACE::RenderingFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Rect2D renderArea_ = {}, uint32_t layerCount_ = {}, uint32_t viewMask_ = {}, uint32_t colorAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments_ = {}, const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_ = {}, const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
46083     : pNext( pNext_ ), flags( flags_ ), renderArea( renderArea_ ), layerCount( layerCount_ ), viewMask( viewMask_ ), colorAttachmentCount( colorAttachmentCount_ ), pColorAttachments( pColorAttachments_ ), pDepthAttachment( pDepthAttachment_ ), pStencilAttachment( pStencilAttachment_ )
46084     {}
46085 
46086     VULKAN_HPP_CONSTEXPR_14 RenderingInfo( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46087 
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo46088     RenderingInfo( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46089       : RenderingInfo( *reinterpret_cast<RenderingInfo const *>( &rhs ) )
46090     {}
46091 
46092 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
RenderingInfoVULKAN_HPP_NAMESPACE::RenderingInfo46093     RenderingInfo( VULKAN_HPP_NAMESPACE::RenderingFlags flags_, VULKAN_HPP_NAMESPACE::Rect2D renderArea_, uint32_t layerCount_, uint32_t viewMask_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo> const & colorAttachments_, const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_ = {}, const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_ = {}, const void * pNext_ = nullptr )
46094     : pNext( pNext_ ), flags( flags_ ), renderArea( renderArea_ ), layerCount( layerCount_ ), viewMask( viewMask_ ), colorAttachmentCount( static_cast<uint32_t>( colorAttachments_.size() ) ), pColorAttachments( colorAttachments_.data() ), pDepthAttachment( pDepthAttachment_ ), pStencilAttachment( pStencilAttachment_ )
46095     {}
46096 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
46097 
46098 
46099     RenderingInfo & operator=( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46100 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46101 
operator =VULKAN_HPP_NAMESPACE::RenderingInfo46102     RenderingInfo & operator=( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46103     {
46104       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::RenderingInfo const *>( &rhs );
46105       return *this;
46106     }
46107 
46108 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::RenderingInfo46109     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46110     {
46111       pNext = pNext_;
46112       return *this;
46113     }
46114 
setFlagsVULKAN_HPP_NAMESPACE::RenderingInfo46115     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderingFlags flags_ ) VULKAN_HPP_NOEXCEPT
46116     {
46117       flags = flags_;
46118       return *this;
46119     }
46120 
setRenderAreaVULKAN_HPP_NAMESPACE::RenderingInfo46121     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT
46122     {
46123       renderArea = renderArea_;
46124       return *this;
46125     }
46126 
setLayerCountVULKAN_HPP_NAMESPACE::RenderingInfo46127     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT
46128     {
46129       layerCount = layerCount_;
46130       return *this;
46131     }
46132 
setViewMaskVULKAN_HPP_NAMESPACE::RenderingInfo46133     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT
46134     {
46135       viewMask = viewMask_;
46136       return *this;
46137     }
46138 
setColorAttachmentCountVULKAN_HPP_NAMESPACE::RenderingInfo46139     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT
46140     {
46141       colorAttachmentCount = colorAttachmentCount_;
46142       return *this;
46143     }
46144 
setPColorAttachmentsVULKAN_HPP_NAMESPACE::RenderingInfo46145     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPColorAttachments( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments_ ) VULKAN_HPP_NOEXCEPT
46146     {
46147       pColorAttachments = pColorAttachments_;
46148       return *this;
46149     }
46150 
46151 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setColorAttachmentsVULKAN_HPP_NAMESPACE::RenderingInfo46152     RenderingInfo & setColorAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo> const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT
46153     {
46154       colorAttachmentCount = static_cast<uint32_t>( colorAttachments_.size() );
46155       pColorAttachments = colorAttachments_.data();
46156       return *this;
46157     }
46158 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
46159 
setPDepthAttachmentVULKAN_HPP_NAMESPACE::RenderingInfo46160     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPDepthAttachment( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment_ ) VULKAN_HPP_NOEXCEPT
46161     {
46162       pDepthAttachment = pDepthAttachment_;
46163       return *this;
46164     }
46165 
setPStencilAttachmentVULKAN_HPP_NAMESPACE::RenderingInfo46166     VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPStencilAttachment( const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment_ ) VULKAN_HPP_NOEXCEPT
46167     {
46168       pStencilAttachment = pStencilAttachment_;
46169       return *this;
46170     }
46171 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46172 
46173 
operator VkRenderingInfo const&VULKAN_HPP_NAMESPACE::RenderingInfo46174     operator VkRenderingInfo const &() const VULKAN_HPP_NOEXCEPT
46175     {
46176       return *reinterpret_cast<const VkRenderingInfo*>( this );
46177     }
46178 
operator VkRenderingInfo&VULKAN_HPP_NAMESPACE::RenderingInfo46179     operator VkRenderingInfo &() VULKAN_HPP_NOEXCEPT
46180     {
46181       return *reinterpret_cast<VkRenderingInfo*>( this );
46182     }
46183 
46184 #if defined( VULKAN_HPP_USE_REFLECT )
46185 #if 14 <= VULKAN_HPP_CPP_VERSION
46186     auto
46187 #else
46188     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::RenderingFlags const &, VULKAN_HPP_NAMESPACE::Rect2D const &, uint32_t const &, uint32_t const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &, const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &, const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * const &>
46189 #endif
reflectVULKAN_HPP_NAMESPACE::RenderingInfo46190       reflect() const VULKAN_HPP_NOEXCEPT
46191     {
46192       return std::tie( sType, pNext, flags, renderArea, layerCount, viewMask, colorAttachmentCount, pColorAttachments, pDepthAttachment, pStencilAttachment );
46193     }
46194 #endif
46195 
46196 
46197 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
46198 auto operator<=>( RenderingInfo const & ) const = default;
46199 #else
operator ==VULKAN_HPP_NAMESPACE::RenderingInfo46200     bool operator==( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46201     {
46202 #if defined( VULKAN_HPP_USE_REFLECT )
46203       return this->reflect() == rhs.reflect();
46204 #else
46205       return ( sType == rhs.sType )
46206           && ( pNext == rhs.pNext )
46207           && ( flags == rhs.flags )
46208           && ( renderArea == rhs.renderArea )
46209           && ( layerCount == rhs.layerCount )
46210           && ( viewMask == rhs.viewMask )
46211           && ( colorAttachmentCount == rhs.colorAttachmentCount )
46212           && ( pColorAttachments == rhs.pColorAttachments )
46213           && ( pDepthAttachment == rhs.pDepthAttachment )
46214           && ( pStencilAttachment == rhs.pStencilAttachment );
46215 #endif
46216     }
46217 
operator !=VULKAN_HPP_NAMESPACE::RenderingInfo46218     bool operator!=( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46219     {
46220       return !operator==( rhs );
46221     }
46222 #endif
46223 
46224     public:
46225     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderingInfo;
46226     const void * pNext = {};
46227     VULKAN_HPP_NAMESPACE::RenderingFlags flags = {};
46228     VULKAN_HPP_NAMESPACE::Rect2D renderArea = {};
46229     uint32_t layerCount = {};
46230     uint32_t viewMask = {};
46231     uint32_t colorAttachmentCount = {};
46232     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pColorAttachments = {};
46233     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pDepthAttachment = {};
46234     const VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo * pStencilAttachment = {};
46235 
46236   };
46237 
46238   template <>
46239   struct CppType<StructureType, StructureType::eRenderingInfo>
46240   {
46241     using Type = RenderingInfo;
46242   };
46243   using RenderingInfoKHR = RenderingInfo;
46244 
46245   struct ResolveImageInfo2
46246   {
46247     using NativeType = VkResolveImageInfo2;
46248 
46249     static const bool allowDuplicate = false;
46250     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eResolveImageInfo2;
46251 
46252 
46253 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo246254 VULKAN_HPP_CONSTEXPR ResolveImageInfo2(VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
46255     : pNext( pNext_ ), srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( regionCount_ ), pRegions( pRegions_ )
46256     {}
46257 
46258     VULKAN_HPP_CONSTEXPR ResolveImageInfo2( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46259 
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo246260     ResolveImageInfo2( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
46261       : ResolveImageInfo2( *reinterpret_cast<ResolveImageInfo2 const *>( &rhs ) )
46262     {}
46263 
46264 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ResolveImageInfo2VULKAN_HPP_NAMESPACE::ResolveImageInfo246265     ResolveImageInfo2( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2> const & regions_, const void * pNext_ = nullptr )
46266     : pNext( pNext_ ), srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( static_cast<uint32_t>( regions_.size() ) ), pRegions( regions_.data() )
46267     {}
46268 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
46269 
46270 
46271     ResolveImageInfo2 & operator=( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46272 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46273 
operator =VULKAN_HPP_NAMESPACE::ResolveImageInfo246274     ResolveImageInfo2 & operator=( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
46275     {
46276       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ResolveImageInfo2 const *>( &rhs );
46277       return *this;
46278     }
46279 
46280 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ResolveImageInfo246281     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46282     {
46283       pNext = pNext_;
46284       return *this;
46285     }
46286 
setSrcImageVULKAN_HPP_NAMESPACE::ResolveImageInfo246287     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT
46288     {
46289       srcImage = srcImage_;
46290       return *this;
46291     }
46292 
setSrcImageLayoutVULKAN_HPP_NAMESPACE::ResolveImageInfo246293     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT
46294     {
46295       srcImageLayout = srcImageLayout_;
46296       return *this;
46297     }
46298 
setDstImageVULKAN_HPP_NAMESPACE::ResolveImageInfo246299     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT
46300     {
46301       dstImage = dstImage_;
46302       return *this;
46303     }
46304 
setDstImageLayoutVULKAN_HPP_NAMESPACE::ResolveImageInfo246305     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT
46306     {
46307       dstImageLayout = dstImageLayout_;
46308       return *this;
46309     }
46310 
setRegionCountVULKAN_HPP_NAMESPACE::ResolveImageInfo246311     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT
46312     {
46313       regionCount = regionCount_;
46314       return *this;
46315     }
46316 
setPRegionsVULKAN_HPP_NAMESPACE::ResolveImageInfo246317     VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPRegions( const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions_ ) VULKAN_HPP_NOEXCEPT
46318     {
46319       pRegions = pRegions_;
46320       return *this;
46321     }
46322 
46323 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setRegionsVULKAN_HPP_NAMESPACE::ResolveImageInfo246324     ResolveImageInfo2 & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ImageResolve2> const & regions_ ) VULKAN_HPP_NOEXCEPT
46325     {
46326       regionCount = static_cast<uint32_t>( regions_.size() );
46327       pRegions = regions_.data();
46328       return *this;
46329     }
46330 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
46331 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46332 
46333 
operator VkResolveImageInfo2 const&VULKAN_HPP_NAMESPACE::ResolveImageInfo246334     operator VkResolveImageInfo2 const &() const VULKAN_HPP_NOEXCEPT
46335     {
46336       return *reinterpret_cast<const VkResolveImageInfo2*>( this );
46337     }
46338 
operator VkResolveImageInfo2&VULKAN_HPP_NAMESPACE::ResolveImageInfo246339     operator VkResolveImageInfo2 &() VULKAN_HPP_NOEXCEPT
46340     {
46341       return *reinterpret_cast<VkResolveImageInfo2*>( this );
46342     }
46343 
46344 #if defined( VULKAN_HPP_USE_REFLECT )
46345 #if 14 <= VULKAN_HPP_CPP_VERSION
46346     auto
46347 #else
46348     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, VULKAN_HPP_NAMESPACE::Image const &, VULKAN_HPP_NAMESPACE::ImageLayout const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ImageResolve2 * const &>
46349 #endif
reflectVULKAN_HPP_NAMESPACE::ResolveImageInfo246350       reflect() const VULKAN_HPP_NOEXCEPT
46351     {
46352       return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions );
46353     }
46354 #endif
46355 
46356 
46357 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
46358 auto operator<=>( ResolveImageInfo2 const & ) const = default;
46359 #else
operator ==VULKAN_HPP_NAMESPACE::ResolveImageInfo246360     bool operator==( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
46361     {
46362 #if defined( VULKAN_HPP_USE_REFLECT )
46363       return this->reflect() == rhs.reflect();
46364 #else
46365       return ( sType == rhs.sType )
46366           && ( pNext == rhs.pNext )
46367           && ( srcImage == rhs.srcImage )
46368           && ( srcImageLayout == rhs.srcImageLayout )
46369           && ( dstImage == rhs.dstImage )
46370           && ( dstImageLayout == rhs.dstImageLayout )
46371           && ( regionCount == rhs.regionCount )
46372           && ( pRegions == rhs.pRegions );
46373 #endif
46374     }
46375 
operator !=VULKAN_HPP_NAMESPACE::ResolveImageInfo246376     bool operator!=( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
46377     {
46378       return !operator==( rhs );
46379     }
46380 #endif
46381 
46382     public:
46383     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eResolveImageInfo2;
46384     const void * pNext = {};
46385     VULKAN_HPP_NAMESPACE::Image srcImage = {};
46386     VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
46387     VULKAN_HPP_NAMESPACE::Image dstImage = {};
46388     VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined;
46389     uint32_t regionCount = {};
46390     const VULKAN_HPP_NAMESPACE::ImageResolve2 * pRegions = {};
46391 
46392   };
46393 
46394   template <>
46395   struct CppType<StructureType, StructureType::eResolveImageInfo2>
46396   {
46397     using Type = ResolveImageInfo2;
46398   };
46399   using ResolveImageInfo2KHR = ResolveImageInfo2;
46400 
46401   struct SamplerCreateInfo
46402   {
46403     using NativeType = VkSamplerCreateInfo;
46404 
46405     static const bool allowDuplicate = false;
46406     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCreateInfo;
46407 
46408 
46409 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCreateInfoVULKAN_HPP_NAMESPACE::SamplerCreateInfo46410 VULKAN_HPP_CONSTEXPR SamplerCreateInfo(VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Filter magFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, VULKAN_HPP_NAMESPACE::Filter minFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest, VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, float mipLodBias_ = {}, VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ = {}, float maxAnisotropy_ = {}, VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ = {}, VULKAN_HPP_NAMESPACE::CompareOp compareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever, float minLod_ = {}, float maxLod_ = {}, VULKAN_HPP_NAMESPACE::BorderColor borderColor_ = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack, VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
46411     : pNext( pNext_ ), flags( flags_ ), magFilter( magFilter_ ), minFilter( minFilter_ ), mipmapMode( mipmapMode_ ), addressModeU( addressModeU_ ), addressModeV( addressModeV_ ), addressModeW( addressModeW_ ), mipLodBias( mipLodBias_ ), anisotropyEnable( anisotropyEnable_ ), maxAnisotropy( maxAnisotropy_ ), compareEnable( compareEnable_ ), compareOp( compareOp_ ), minLod( minLod_ ), maxLod( maxLod_ ), borderColor( borderColor_ ), unnormalizedCoordinates( unnormalizedCoordinates_ )
46412     {}
46413 
46414     VULKAN_HPP_CONSTEXPR SamplerCreateInfo( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46415 
SamplerCreateInfoVULKAN_HPP_NAMESPACE::SamplerCreateInfo46416     SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46417       : SamplerCreateInfo( *reinterpret_cast<SamplerCreateInfo const *>( &rhs ) )
46418     {}
46419 
46420 
46421     SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46422 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46423 
operator =VULKAN_HPP_NAMESPACE::SamplerCreateInfo46424     SamplerCreateInfo & operator=( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46425     {
46426       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCreateInfo const *>( &rhs );
46427       return *this;
46428     }
46429 
46430 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCreateInfo46431     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46432     {
46433       pNext = pNext_;
46434       return *this;
46435     }
46436 
setFlagsVULKAN_HPP_NAMESPACE::SamplerCreateInfo46437     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
46438     {
46439       flags = flags_;
46440       return *this;
46441     }
46442 
setMagFilterVULKAN_HPP_NAMESPACE::SamplerCreateInfo46443     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMagFilter( VULKAN_HPP_NAMESPACE::Filter magFilter_ ) VULKAN_HPP_NOEXCEPT
46444     {
46445       magFilter = magFilter_;
46446       return *this;
46447     }
46448 
setMinFilterVULKAN_HPP_NAMESPACE::SamplerCreateInfo46449     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinFilter( VULKAN_HPP_NAMESPACE::Filter minFilter_ ) VULKAN_HPP_NOEXCEPT
46450     {
46451       minFilter = minFilter_;
46452       return *this;
46453     }
46454 
setMipmapModeVULKAN_HPP_NAMESPACE::SamplerCreateInfo46455     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipmapMode( VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ ) VULKAN_HPP_NOEXCEPT
46456     {
46457       mipmapMode = mipmapMode_;
46458       return *this;
46459     }
46460 
setAddressModeUVULKAN_HPP_NAMESPACE::SamplerCreateInfo46461     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeU( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ ) VULKAN_HPP_NOEXCEPT
46462     {
46463       addressModeU = addressModeU_;
46464       return *this;
46465     }
46466 
setAddressModeVVULKAN_HPP_NAMESPACE::SamplerCreateInfo46467     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeV( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ ) VULKAN_HPP_NOEXCEPT
46468     {
46469       addressModeV = addressModeV_;
46470       return *this;
46471     }
46472 
setAddressModeWVULKAN_HPP_NAMESPACE::SamplerCreateInfo46473     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeW( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ ) VULKAN_HPP_NOEXCEPT
46474     {
46475       addressModeW = addressModeW_;
46476       return *this;
46477     }
46478 
setMipLodBiasVULKAN_HPP_NAMESPACE::SamplerCreateInfo46479     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipLodBias( float mipLodBias_ ) VULKAN_HPP_NOEXCEPT
46480     {
46481       mipLodBias = mipLodBias_;
46482       return *this;
46483     }
46484 
setAnisotropyEnableVULKAN_HPP_NAMESPACE::SamplerCreateInfo46485     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAnisotropyEnable( VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ ) VULKAN_HPP_NOEXCEPT
46486     {
46487       anisotropyEnable = anisotropyEnable_;
46488       return *this;
46489     }
46490 
setMaxAnisotropyVULKAN_HPP_NAMESPACE::SamplerCreateInfo46491     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxAnisotropy( float maxAnisotropy_ ) VULKAN_HPP_NOEXCEPT
46492     {
46493       maxAnisotropy = maxAnisotropy_;
46494       return *this;
46495     }
46496 
setCompareEnableVULKAN_HPP_NAMESPACE::SamplerCreateInfo46497     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setCompareEnable( VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ ) VULKAN_HPP_NOEXCEPT
46498     {
46499       compareEnable = compareEnable_;
46500       return *this;
46501     }
46502 
setCompareOpVULKAN_HPP_NAMESPACE::SamplerCreateInfo46503     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT
46504     {
46505       compareOp = compareOp_;
46506       return *this;
46507     }
46508 
setMinLodVULKAN_HPP_NAMESPACE::SamplerCreateInfo46509     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT
46510     {
46511       minLod = minLod_;
46512       return *this;
46513     }
46514 
setMaxLodVULKAN_HPP_NAMESPACE::SamplerCreateInfo46515     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxLod( float maxLod_ ) VULKAN_HPP_NOEXCEPT
46516     {
46517       maxLod = maxLod_;
46518       return *this;
46519     }
46520 
setBorderColorVULKAN_HPP_NAMESPACE::SamplerCreateInfo46521     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setBorderColor( VULKAN_HPP_NAMESPACE::BorderColor borderColor_ ) VULKAN_HPP_NOEXCEPT
46522     {
46523       borderColor = borderColor_;
46524       return *this;
46525     }
46526 
setUnnormalizedCoordinatesVULKAN_HPP_NAMESPACE::SamplerCreateInfo46527     VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setUnnormalizedCoordinates( VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ ) VULKAN_HPP_NOEXCEPT
46528     {
46529       unnormalizedCoordinates = unnormalizedCoordinates_;
46530       return *this;
46531     }
46532 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46533 
46534 
operator VkSamplerCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerCreateInfo46535     operator VkSamplerCreateInfo const &() const VULKAN_HPP_NOEXCEPT
46536     {
46537       return *reinterpret_cast<const VkSamplerCreateInfo*>( this );
46538     }
46539 
operator VkSamplerCreateInfo&VULKAN_HPP_NAMESPACE::SamplerCreateInfo46540     operator VkSamplerCreateInfo &() VULKAN_HPP_NOEXCEPT
46541     {
46542       return *reinterpret_cast<VkSamplerCreateInfo*>( this );
46543     }
46544 
46545 #if defined( VULKAN_HPP_USE_REFLECT )
46546 #if 14 <= VULKAN_HPP_CPP_VERSION
46547     auto
46548 #else
46549     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SamplerCreateFlags const &, VULKAN_HPP_NAMESPACE::Filter const &, VULKAN_HPP_NAMESPACE::Filter const &, VULKAN_HPP_NAMESPACE::SamplerMipmapMode const &, VULKAN_HPP_NAMESPACE::SamplerAddressMode const &, VULKAN_HPP_NAMESPACE::SamplerAddressMode const &, VULKAN_HPP_NAMESPACE::SamplerAddressMode const &, float const &, VULKAN_HPP_NAMESPACE::Bool32 const &, float const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::CompareOp const &, float const &, float const &, VULKAN_HPP_NAMESPACE::BorderColor const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
46550 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerCreateInfo46551       reflect() const VULKAN_HPP_NOEXCEPT
46552     {
46553       return std::tie( sType, pNext, flags, magFilter, minFilter, mipmapMode, addressModeU, addressModeV, addressModeW, mipLodBias, anisotropyEnable, maxAnisotropy, compareEnable, compareOp, minLod, maxLod, borderColor, unnormalizedCoordinates );
46554     }
46555 #endif
46556 
46557 
46558 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
46559 auto operator<=>( SamplerCreateInfo const & ) const = default;
46560 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerCreateInfo46561     bool operator==( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46562     {
46563 #if defined( VULKAN_HPP_USE_REFLECT )
46564       return this->reflect() == rhs.reflect();
46565 #else
46566       return ( sType == rhs.sType )
46567           && ( pNext == rhs.pNext )
46568           && ( flags == rhs.flags )
46569           && ( magFilter == rhs.magFilter )
46570           && ( minFilter == rhs.minFilter )
46571           && ( mipmapMode == rhs.mipmapMode )
46572           && ( addressModeU == rhs.addressModeU )
46573           && ( addressModeV == rhs.addressModeV )
46574           && ( addressModeW == rhs.addressModeW )
46575           && ( mipLodBias == rhs.mipLodBias )
46576           && ( anisotropyEnable == rhs.anisotropyEnable )
46577           && ( maxAnisotropy == rhs.maxAnisotropy )
46578           && ( compareEnable == rhs.compareEnable )
46579           && ( compareOp == rhs.compareOp )
46580           && ( minLod == rhs.minLod )
46581           && ( maxLod == rhs.maxLod )
46582           && ( borderColor == rhs.borderColor )
46583           && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
46584 #endif
46585     }
46586 
operator !=VULKAN_HPP_NAMESPACE::SamplerCreateInfo46587     bool operator!=( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46588     {
46589       return !operator==( rhs );
46590     }
46591 #endif
46592 
46593     public:
46594     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCreateInfo;
46595     const void * pNext = {};
46596     VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags = {};
46597     VULKAN_HPP_NAMESPACE::Filter magFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest;
46598     VULKAN_HPP_NAMESPACE::Filter minFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest;
46599     VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest;
46600     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
46601     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
46602     VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat;
46603     float mipLodBias = {};
46604     VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable = {};
46605     float maxAnisotropy = {};
46606     VULKAN_HPP_NAMESPACE::Bool32 compareEnable = {};
46607     VULKAN_HPP_NAMESPACE::CompareOp compareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever;
46608     float minLod = {};
46609     float maxLod = {};
46610     VULKAN_HPP_NAMESPACE::BorderColor borderColor = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack;
46611     VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates = {};
46612 
46613   };
46614 
46615   template <>
46616   struct CppType<StructureType, StructureType::eSamplerCreateInfo>
46617   {
46618     using Type = SamplerCreateInfo;
46619   };
46620 
46621   struct SamplerCustomBorderColorCreateInfoEXT
46622   {
46623     using NativeType = VkSamplerCustomBorderColorCreateInfoEXT;
46624 
46625     static const bool allowDuplicate = false;
46626     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
46627 
46628 
46629 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerCustomBorderColorCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46630 VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT(VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
46631     : pNext( pNext_ ), customBorderColor( customBorderColor_ ), format( format_ )
46632     {}
46633 
46634     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46635 
SamplerCustomBorderColorCreateInfoEXTVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46636     SamplerCustomBorderColorCreateInfoEXT( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46637       : SamplerCustomBorderColorCreateInfoEXT( *reinterpret_cast<SamplerCustomBorderColorCreateInfoEXT const *>( &rhs ) )
46638     {}
46639 
46640 
46641     SamplerCustomBorderColorCreateInfoEXT & operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46642 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46643 
operator =VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46644     SamplerCustomBorderColorCreateInfoEXT & operator=( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
46645     {
46646       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT const *>( &rhs );
46647       return *this;
46648     }
46649 
46650 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46651     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46652     {
46653       pNext = pNext_;
46654       return *this;
46655     }
46656 
setCustomBorderColorVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46657     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setCustomBorderColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & customBorderColor_ ) VULKAN_HPP_NOEXCEPT
46658     {
46659       customBorderColor = customBorderColor_;
46660       return *this;
46661     }
46662 
setFormatVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46663     VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
46664     {
46665       format = format_;
46666       return *this;
46667     }
46668 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46669 
46670 
operator VkSamplerCustomBorderColorCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46671     operator VkSamplerCustomBorderColorCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
46672     {
46673       return *reinterpret_cast<const VkSamplerCustomBorderColorCreateInfoEXT*>( this );
46674     }
46675 
operator VkSamplerCustomBorderColorCreateInfoEXT&VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46676     operator VkSamplerCustomBorderColorCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
46677     {
46678       return *reinterpret_cast<VkSamplerCustomBorderColorCreateInfoEXT*>( this );
46679     }
46680 
46681 #if defined( VULKAN_HPP_USE_REFLECT )
46682 #if 14 <= VULKAN_HPP_CPP_VERSION
46683     auto
46684 #else
46685     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ClearColorValue const &, VULKAN_HPP_NAMESPACE::Format const &>
46686 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT46687       reflect() const VULKAN_HPP_NOEXCEPT
46688     {
46689       return std::tie( sType, pNext, customBorderColor, format );
46690     }
46691 #endif
46692 
46693 
46694     public:
46695     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCustomBorderColorCreateInfoEXT;
46696     const void * pNext = {};
46697     VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor = {};
46698     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
46699 
46700   };
46701 
46702   template <>
46703   struct CppType<StructureType, StructureType::eSamplerCustomBorderColorCreateInfoEXT>
46704   {
46705     using Type = SamplerCustomBorderColorCreateInfoEXT;
46706   };
46707 
46708   struct SamplerReductionModeCreateInfo
46709   {
46710     using NativeType = VkSamplerReductionModeCreateInfo;
46711 
46712     static const bool allowDuplicate = false;
46713     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerReductionModeCreateInfo;
46714 
46715 
46716 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerReductionModeCreateInfoVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46717 VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo(VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
46718     : pNext( pNext_ ), reductionMode( reductionMode_ )
46719     {}
46720 
46721     VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46722 
SamplerReductionModeCreateInfoVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46723     SamplerReductionModeCreateInfo( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46724       : SamplerReductionModeCreateInfo( *reinterpret_cast<SamplerReductionModeCreateInfo const *>( &rhs ) )
46725     {}
46726 
46727 
46728     SamplerReductionModeCreateInfo & operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46729 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46730 
operator =VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46731     SamplerReductionModeCreateInfo & operator=( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46732     {
46733       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo const *>( &rhs );
46734       return *this;
46735     }
46736 
46737 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46738     VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46739     {
46740       pNext = pNext_;
46741       return *this;
46742     }
46743 
setReductionModeVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46744     VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setReductionMode( VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ ) VULKAN_HPP_NOEXCEPT
46745     {
46746       reductionMode = reductionMode_;
46747       return *this;
46748     }
46749 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46750 
46751 
operator VkSamplerReductionModeCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46752     operator VkSamplerReductionModeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
46753     {
46754       return *reinterpret_cast<const VkSamplerReductionModeCreateInfo*>( this );
46755     }
46756 
operator VkSamplerReductionModeCreateInfo&VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46757     operator VkSamplerReductionModeCreateInfo &() VULKAN_HPP_NOEXCEPT
46758     {
46759       return *reinterpret_cast<VkSamplerReductionModeCreateInfo*>( this );
46760     }
46761 
46762 #if defined( VULKAN_HPP_USE_REFLECT )
46763 #if 14 <= VULKAN_HPP_CPP_VERSION
46764     auto
46765 #else
46766     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SamplerReductionMode const &>
46767 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46768       reflect() const VULKAN_HPP_NOEXCEPT
46769     {
46770       return std::tie( sType, pNext, reductionMode );
46771     }
46772 #endif
46773 
46774 
46775 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
46776 auto operator<=>( SamplerReductionModeCreateInfo const & ) const = default;
46777 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46778     bool operator==( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46779     {
46780 #if defined( VULKAN_HPP_USE_REFLECT )
46781       return this->reflect() == rhs.reflect();
46782 #else
46783       return ( sType == rhs.sType )
46784           && ( pNext == rhs.pNext )
46785           && ( reductionMode == rhs.reductionMode );
46786 #endif
46787     }
46788 
operator !=VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo46789     bool operator!=( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46790     {
46791       return !operator==( rhs );
46792     }
46793 #endif
46794 
46795     public:
46796     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerReductionModeCreateInfo;
46797     const void * pNext = {};
46798     VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage;
46799 
46800   };
46801 
46802   template <>
46803   struct CppType<StructureType, StructureType::eSamplerReductionModeCreateInfo>
46804   {
46805     using Type = SamplerReductionModeCreateInfo;
46806   };
46807   using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo;
46808 
46809   struct SamplerYcbcrConversionCreateInfo
46810   {
46811     using NativeType = VkSamplerYcbcrConversionCreateInfo;
46812 
46813     static const bool allowDuplicate = false;
46814     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionCreateInfo;
46815 
46816 
46817 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionCreateInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46818 VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity, VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull, VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {}, VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, VULKAN_HPP_NAMESPACE::Filter chromaFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
46819     : pNext( pNext_ ), format( format_ ), ycbcrModel( ycbcrModel_ ), ycbcrRange( ycbcrRange_ ), components( components_ ), xChromaOffset( xChromaOffset_ ), yChromaOffset( yChromaOffset_ ), chromaFilter( chromaFilter_ ), forceExplicitReconstruction( forceExplicitReconstruction_ )
46820     {}
46821 
46822     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46823 
SamplerYcbcrConversionCreateInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46824     SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46825       : SamplerYcbcrConversionCreateInfo( *reinterpret_cast<SamplerYcbcrConversionCreateInfo const *>( &rhs ) )
46826     {}
46827 
46828 
46829     SamplerYcbcrConversionCreateInfo & operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46830 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46831 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46832     SamplerYcbcrConversionCreateInfo & operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
46833     {
46834       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const *>( &rhs );
46835       return *this;
46836     }
46837 
46838 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46839     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
46840     {
46841       pNext = pNext_;
46842       return *this;
46843     }
46844 
setFormatVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46845     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
46846     {
46847       format = format_;
46848       return *this;
46849     }
46850 
setYcbcrModelVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46851     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYcbcrModel( VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ ) VULKAN_HPP_NOEXCEPT
46852     {
46853       ycbcrModel = ycbcrModel_;
46854       return *this;
46855     }
46856 
setYcbcrRangeVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46857     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYcbcrRange( VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ ) VULKAN_HPP_NOEXCEPT
46858     {
46859       ycbcrRange = ycbcrRange_;
46860       return *this;
46861     }
46862 
setComponentsVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46863     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT
46864     {
46865       components = components_;
46866       return *this;
46867     }
46868 
setXChromaOffsetVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46869     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setXChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ ) VULKAN_HPP_NOEXCEPT
46870     {
46871       xChromaOffset = xChromaOffset_;
46872       return *this;
46873     }
46874 
setYChromaOffsetVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46875     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ ) VULKAN_HPP_NOEXCEPT
46876     {
46877       yChromaOffset = yChromaOffset_;
46878       return *this;
46879     }
46880 
setChromaFilterVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46881     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setChromaFilter( VULKAN_HPP_NAMESPACE::Filter chromaFilter_ ) VULKAN_HPP_NOEXCEPT
46882     {
46883       chromaFilter = chromaFilter_;
46884       return *this;
46885     }
46886 
setForceExplicitReconstructionVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46887     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setForceExplicitReconstruction( VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ ) VULKAN_HPP_NOEXCEPT
46888     {
46889       forceExplicitReconstruction = forceExplicitReconstruction_;
46890       return *this;
46891     }
46892 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
46893 
46894 
operator VkSamplerYcbcrConversionCreateInfo const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46895     operator VkSamplerYcbcrConversionCreateInfo const &() const VULKAN_HPP_NOEXCEPT
46896     {
46897       return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo*>( this );
46898     }
46899 
operator VkSamplerYcbcrConversionCreateInfo&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46900     operator VkSamplerYcbcrConversionCreateInfo &() VULKAN_HPP_NOEXCEPT
46901     {
46902       return *reinterpret_cast<VkSamplerYcbcrConversionCreateInfo*>( this );
46903     }
46904 
46905 #if defined( VULKAN_HPP_USE_REFLECT )
46906 #if 14 <= VULKAN_HPP_CPP_VERSION
46907     auto
46908 #else
46909     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &, VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &, VULKAN_HPP_NAMESPACE::ComponentMapping const &, VULKAN_HPP_NAMESPACE::ChromaLocation const &, VULKAN_HPP_NAMESPACE::ChromaLocation const &, VULKAN_HPP_NAMESPACE::Filter const &, VULKAN_HPP_NAMESPACE::Bool32 const &>
46910 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46911       reflect() const VULKAN_HPP_NOEXCEPT
46912     {
46913       return std::tie( sType, pNext, format, ycbcrModel, ycbcrRange, components, xChromaOffset, yChromaOffset, chromaFilter, forceExplicitReconstruction );
46914     }
46915 #endif
46916 
46917 
46918 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
46919 auto operator<=>( SamplerYcbcrConversionCreateInfo const & ) const = default;
46920 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46921     bool operator==( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46922     {
46923 #if defined( VULKAN_HPP_USE_REFLECT )
46924       return this->reflect() == rhs.reflect();
46925 #else
46926       return ( sType == rhs.sType )
46927           && ( pNext == rhs.pNext )
46928           && ( format == rhs.format )
46929           && ( ycbcrModel == rhs.ycbcrModel )
46930           && ( ycbcrRange == rhs.ycbcrRange )
46931           && ( components == rhs.components )
46932           && ( xChromaOffset == rhs.xChromaOffset )
46933           && ( yChromaOffset == rhs.yChromaOffset )
46934           && ( chromaFilter == rhs.chromaFilter )
46935           && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
46936 #endif
46937     }
46938 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo46939     bool operator!=( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
46940     {
46941       return !operator==( rhs );
46942     }
46943 #endif
46944 
46945     public:
46946     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo;
46947     const void * pNext = {};
46948     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
46949     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
46950     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
46951     VULKAN_HPP_NAMESPACE::ComponentMapping components = {};
46952     VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
46953     VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
46954     VULKAN_HPP_NAMESPACE::Filter chromaFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest;
46955     VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction = {};
46956 
46957   };
46958 
46959   template <>
46960   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionCreateInfo>
46961   {
46962     using Type = SamplerYcbcrConversionCreateInfo;
46963   };
46964   using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo;
46965 
46966   struct SamplerYcbcrConversionImageFormatProperties
46967   {
46968     using NativeType = VkSamplerYcbcrConversionImageFormatProperties;
46969 
46970     static const bool allowDuplicate = false;
46971     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionImageFormatProperties;
46972 
46973 
46974 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionImageFormatPropertiesVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties46975 VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties(uint32_t combinedImageSamplerDescriptorCount_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
46976     : pNext( pNext_ ), combinedImageSamplerDescriptorCount( combinedImageSamplerDescriptorCount_ )
46977     {}
46978 
46979     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46980 
SamplerYcbcrConversionImageFormatPropertiesVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties46981     SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
46982       : SamplerYcbcrConversionImageFormatProperties( *reinterpret_cast<SamplerYcbcrConversionImageFormatProperties const *>( &rhs ) )
46983     {}
46984 
46985 
46986     SamplerYcbcrConversionImageFormatProperties & operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default;
46987 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
46988 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties46989     SamplerYcbcrConversionImageFormatProperties & operator=( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT
46990     {
46991       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties const *>( &rhs );
46992       return *this;
46993     }
46994 
46995 
operator VkSamplerYcbcrConversionImageFormatProperties const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties46996     operator VkSamplerYcbcrConversionImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT
46997     {
46998       return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatProperties*>( this );
46999     }
47000 
operator VkSamplerYcbcrConversionImageFormatProperties&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties47001     operator VkSamplerYcbcrConversionImageFormatProperties &() VULKAN_HPP_NOEXCEPT
47002     {
47003       return *reinterpret_cast<VkSamplerYcbcrConversionImageFormatProperties*>( this );
47004     }
47005 
47006 #if defined( VULKAN_HPP_USE_REFLECT )
47007 #if 14 <= VULKAN_HPP_CPP_VERSION
47008     auto
47009 #else
47010     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &>
47011 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties47012       reflect() const VULKAN_HPP_NOEXCEPT
47013     {
47014       return std::tie( sType, pNext, combinedImageSamplerDescriptorCount );
47015     }
47016 #endif
47017 
47018 
47019 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47020 auto operator<=>( SamplerYcbcrConversionImageFormatProperties const & ) const = default;
47021 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties47022     bool operator==( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
47023     {
47024 #if defined( VULKAN_HPP_USE_REFLECT )
47025       return this->reflect() == rhs.reflect();
47026 #else
47027       return ( sType == rhs.sType )
47028           && ( pNext == rhs.pNext )
47029           && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
47030 #endif
47031     }
47032 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties47033     bool operator!=( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT
47034     {
47035       return !operator==( rhs );
47036     }
47037 #endif
47038 
47039     public:
47040     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties;
47041     void * pNext = {};
47042     uint32_t combinedImageSamplerDescriptorCount = {};
47043 
47044   };
47045 
47046   template <>
47047   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionImageFormatProperties>
47048   {
47049     using Type = SamplerYcbcrConversionImageFormatProperties;
47050   };
47051   using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties;
47052 
47053   struct SamplerYcbcrConversionInfo
47054   {
47055     using NativeType = VkSamplerYcbcrConversionInfo;
47056 
47057     static const bool allowDuplicate = false;
47058     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionInfo;
47059 
47060 
47061 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SamplerYcbcrConversionInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47062 VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47063     : pNext( pNext_ ), conversion( conversion_ )
47064     {}
47065 
47066     VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47067 
SamplerYcbcrConversionInfoVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47068     SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
47069       : SamplerYcbcrConversionInfo( *reinterpret_cast<SamplerYcbcrConversionInfo const *>( &rhs ) )
47070     {}
47071 
47072 
47073     SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47074 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47075 
operator =VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47076     SamplerYcbcrConversionInfo & operator=( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT
47077     {
47078       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo const *>( &rhs );
47079       return *this;
47080     }
47081 
47082 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47083     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47084     {
47085       pNext = pNext_;
47086       return *this;
47087     }
47088 
setConversionVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47089     VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ ) VULKAN_HPP_NOEXCEPT
47090     {
47091       conversion = conversion_;
47092       return *this;
47093     }
47094 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47095 
47096 
operator VkSamplerYcbcrConversionInfo const&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47097     operator VkSamplerYcbcrConversionInfo const &() const VULKAN_HPP_NOEXCEPT
47098     {
47099       return *reinterpret_cast<const VkSamplerYcbcrConversionInfo*>( this );
47100     }
47101 
operator VkSamplerYcbcrConversionInfo&VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47102     operator VkSamplerYcbcrConversionInfo &() VULKAN_HPP_NOEXCEPT
47103     {
47104       return *reinterpret_cast<VkSamplerYcbcrConversionInfo*>( this );
47105     }
47106 
47107 #if defined( VULKAN_HPP_USE_REFLECT )
47108 #if 14 <= VULKAN_HPP_CPP_VERSION
47109     auto
47110 #else
47111     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const &>
47112 #endif
reflectVULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47113       reflect() const VULKAN_HPP_NOEXCEPT
47114     {
47115       return std::tie( sType, pNext, conversion );
47116     }
47117 #endif
47118 
47119 
47120 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47121 auto operator<=>( SamplerYcbcrConversionInfo const & ) const = default;
47122 #else
operator ==VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47123     bool operator==( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
47124     {
47125 #if defined( VULKAN_HPP_USE_REFLECT )
47126       return this->reflect() == rhs.reflect();
47127 #else
47128       return ( sType == rhs.sType )
47129           && ( pNext == rhs.pNext )
47130           && ( conversion == rhs.conversion );
47131 #endif
47132     }
47133 
operator !=VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo47134     bool operator!=( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
47135     {
47136       return !operator==( rhs );
47137     }
47138 #endif
47139 
47140     public:
47141     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionInfo;
47142     const void * pNext = {};
47143     VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion = {};
47144 
47145   };
47146 
47147   template <>
47148   struct CppType<StructureType, StructureType::eSamplerYcbcrConversionInfo>
47149   {
47150     using Type = SamplerYcbcrConversionInfo;
47151   };
47152   using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo;
47153 
47154 #if defined( VK_USE_PLATFORM_SCI )
47155   struct SciSyncAttributesInfoNV
47156   {
47157     using NativeType = VkSciSyncAttributesInfoNV;
47158 
47159     static const bool allowDuplicate = false;
47160     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSciSyncAttributesInfoNV;
47161 
47162 
47163 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SciSyncAttributesInfoNVVULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47164 VULKAN_HPP_CONSTEXPR SciSyncAttributesInfoNV(VULKAN_HPP_NAMESPACE::SciSyncClientTypeNV clientType_ = VULKAN_HPP_NAMESPACE::SciSyncClientTypeNV::eSignaler, VULKAN_HPP_NAMESPACE::SciSyncPrimitiveTypeNV primitiveType_ = VULKAN_HPP_NAMESPACE::SciSyncPrimitiveTypeNV::eFence, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47165     : pNext( pNext_ ), clientType( clientType_ ), primitiveType( primitiveType_ )
47166     {}
47167 
47168     VULKAN_HPP_CONSTEXPR SciSyncAttributesInfoNV( SciSyncAttributesInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47169 
SciSyncAttributesInfoNVVULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47170     SciSyncAttributesInfoNV( VkSciSyncAttributesInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47171       : SciSyncAttributesInfoNV( *reinterpret_cast<SciSyncAttributesInfoNV const *>( &rhs ) )
47172     {}
47173 
47174 
47175     SciSyncAttributesInfoNV & operator=( SciSyncAttributesInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47176 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47177 
operator =VULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47178     SciSyncAttributesInfoNV & operator=( VkSciSyncAttributesInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47179     {
47180       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV const *>( &rhs );
47181       return *this;
47182     }
47183 
47184 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47185     VULKAN_HPP_CONSTEXPR_14 SciSyncAttributesInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47186     {
47187       pNext = pNext_;
47188       return *this;
47189     }
47190 
setClientTypeVULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47191     VULKAN_HPP_CONSTEXPR_14 SciSyncAttributesInfoNV & setClientType( VULKAN_HPP_NAMESPACE::SciSyncClientTypeNV clientType_ ) VULKAN_HPP_NOEXCEPT
47192     {
47193       clientType = clientType_;
47194       return *this;
47195     }
47196 
setPrimitiveTypeVULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47197     VULKAN_HPP_CONSTEXPR_14 SciSyncAttributesInfoNV & setPrimitiveType( VULKAN_HPP_NAMESPACE::SciSyncPrimitiveTypeNV primitiveType_ ) VULKAN_HPP_NOEXCEPT
47198     {
47199       primitiveType = primitiveType_;
47200       return *this;
47201     }
47202 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47203 
47204 
operator VkSciSyncAttributesInfoNV const&VULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47205     operator VkSciSyncAttributesInfoNV const &() const VULKAN_HPP_NOEXCEPT
47206     {
47207       return *reinterpret_cast<const VkSciSyncAttributesInfoNV*>( this );
47208     }
47209 
operator VkSciSyncAttributesInfoNV&VULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47210     operator VkSciSyncAttributesInfoNV &() VULKAN_HPP_NOEXCEPT
47211     {
47212       return *reinterpret_cast<VkSciSyncAttributesInfoNV*>( this );
47213     }
47214 
47215 #if defined( VULKAN_HPP_USE_REFLECT )
47216 #if 14 <= VULKAN_HPP_CPP_VERSION
47217     auto
47218 #else
47219     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SciSyncClientTypeNV const &, VULKAN_HPP_NAMESPACE::SciSyncPrimitiveTypeNV const &>
47220 #endif
reflectVULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47221       reflect() const VULKAN_HPP_NOEXCEPT
47222     {
47223       return std::tie( sType, pNext, clientType, primitiveType );
47224     }
47225 #endif
47226 
47227 
47228 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47229 auto operator<=>( SciSyncAttributesInfoNV const & ) const = default;
47230 #else
operator ==VULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47231     bool operator==( SciSyncAttributesInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47232     {
47233 #if defined( VULKAN_HPP_USE_REFLECT )
47234       return this->reflect() == rhs.reflect();
47235 #else
47236       return ( sType == rhs.sType )
47237           && ( pNext == rhs.pNext )
47238           && ( clientType == rhs.clientType )
47239           && ( primitiveType == rhs.primitiveType );
47240 #endif
47241     }
47242 
operator !=VULKAN_HPP_NAMESPACE::SciSyncAttributesInfoNV47243     bool operator!=( SciSyncAttributesInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47244     {
47245       return !operator==( rhs );
47246     }
47247 #endif
47248 
47249     public:
47250     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSciSyncAttributesInfoNV;
47251     const void * pNext = {};
47252     VULKAN_HPP_NAMESPACE::SciSyncClientTypeNV clientType = VULKAN_HPP_NAMESPACE::SciSyncClientTypeNV::eSignaler;
47253     VULKAN_HPP_NAMESPACE::SciSyncPrimitiveTypeNV primitiveType = VULKAN_HPP_NAMESPACE::SciSyncPrimitiveTypeNV::eFence;
47254 
47255   };
47256 
47257   template <>
47258   struct CppType<StructureType, StructureType::eSciSyncAttributesInfoNV>
47259   {
47260     using Type = SciSyncAttributesInfoNV;
47261   };
47262 #endif /*VK_USE_PLATFORM_SCI*/
47263 
47264 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
47265   struct ScreenBufferFormatPropertiesQNX
47266   {
47267     using NativeType = VkScreenBufferFormatPropertiesQNX;
47268 
47269     static const bool allowDuplicate = false;
47270     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eScreenBufferFormatPropertiesQNX;
47271 
47272 
47273 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenBufferFormatPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX47274 VULKAN_HPP_CONSTEXPR ScreenBufferFormatPropertiesQNX(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, uint64_t externalFormat_ = {}, uint64_t screenUsage_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures_ = {}, VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents_ = {}, VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity, VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull, VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47275     : pNext( pNext_ ), format( format_ ), externalFormat( externalFormat_ ), screenUsage( screenUsage_ ), formatFeatures( formatFeatures_ ), samplerYcbcrConversionComponents( samplerYcbcrConversionComponents_ ), suggestedYcbcrModel( suggestedYcbcrModel_ ), suggestedYcbcrRange( suggestedYcbcrRange_ ), suggestedXChromaOffset( suggestedXChromaOffset_ ), suggestedYChromaOffset( suggestedYChromaOffset_ )
47276     {}
47277 
47278     VULKAN_HPP_CONSTEXPR ScreenBufferFormatPropertiesQNX( ScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47279 
ScreenBufferFormatPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX47280     ScreenBufferFormatPropertiesQNX( VkScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
47281       : ScreenBufferFormatPropertiesQNX( *reinterpret_cast<ScreenBufferFormatPropertiesQNX const *>( &rhs ) )
47282     {}
47283 
47284 
47285     ScreenBufferFormatPropertiesQNX & operator=( ScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47286 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47287 
operator =VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX47288     ScreenBufferFormatPropertiesQNX & operator=( VkScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
47289     {
47290       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX const *>( &rhs );
47291       return *this;
47292     }
47293 
47294 
operator VkScreenBufferFormatPropertiesQNX const&VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX47295     operator VkScreenBufferFormatPropertiesQNX const &() const VULKAN_HPP_NOEXCEPT
47296     {
47297       return *reinterpret_cast<const VkScreenBufferFormatPropertiesQNX*>( this );
47298     }
47299 
operator VkScreenBufferFormatPropertiesQNX&VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX47300     operator VkScreenBufferFormatPropertiesQNX &() VULKAN_HPP_NOEXCEPT
47301     {
47302       return *reinterpret_cast<VkScreenBufferFormatPropertiesQNX*>( this );
47303     }
47304 
47305 #if defined( VULKAN_HPP_USE_REFLECT )
47306 #if 14 <= VULKAN_HPP_CPP_VERSION
47307     auto
47308 #else
47309     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::Format const &, uint64_t const &, uint64_t const &, VULKAN_HPP_NAMESPACE::FormatFeatureFlags const &, VULKAN_HPP_NAMESPACE::ComponentMapping const &, VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion const &, VULKAN_HPP_NAMESPACE::SamplerYcbcrRange const &, VULKAN_HPP_NAMESPACE::ChromaLocation const &, VULKAN_HPP_NAMESPACE::ChromaLocation const &>
47310 #endif
reflectVULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX47311       reflect() const VULKAN_HPP_NOEXCEPT
47312     {
47313       return std::tie( sType, pNext, format, externalFormat, screenUsage, formatFeatures, samplerYcbcrConversionComponents, suggestedYcbcrModel, suggestedYcbcrRange, suggestedXChromaOffset, suggestedYChromaOffset );
47314     }
47315 #endif
47316 
47317 
47318 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47319 auto operator<=>( ScreenBufferFormatPropertiesQNX const & ) const = default;
47320 #else
operator ==VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX47321     bool operator==( ScreenBufferFormatPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
47322     {
47323 #if defined( VULKAN_HPP_USE_REFLECT )
47324       return this->reflect() == rhs.reflect();
47325 #else
47326       return ( sType == rhs.sType )
47327           && ( pNext == rhs.pNext )
47328           && ( format == rhs.format )
47329           && ( externalFormat == rhs.externalFormat )
47330           && ( screenUsage == rhs.screenUsage )
47331           && ( formatFeatures == rhs.formatFeatures )
47332           && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents )
47333           && ( suggestedYcbcrModel == rhs.suggestedYcbcrModel )
47334           && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange )
47335           && ( suggestedXChromaOffset == rhs.suggestedXChromaOffset )
47336           && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset );
47337 #endif
47338     }
47339 
operator !=VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX47340     bool operator!=( ScreenBufferFormatPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
47341     {
47342       return !operator==( rhs );
47343     }
47344 #endif
47345 
47346     public:
47347     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eScreenBufferFormatPropertiesQNX;
47348     void * pNext = {};
47349     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
47350     uint64_t externalFormat = {};
47351     uint64_t screenUsage = {};
47352     VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures = {};
47353     VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents = {};
47354     VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity;
47355     VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull;
47356     VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
47357     VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven;
47358 
47359   };
47360 
47361   template <>
47362   struct CppType<StructureType, StructureType::eScreenBufferFormatPropertiesQNX>
47363   {
47364     using Type = ScreenBufferFormatPropertiesQNX;
47365   };
47366 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
47367 
47368 #if defined( VK_USE_PLATFORM_SCREEN_QNX )
47369   struct ScreenBufferPropertiesQNX
47370   {
47371     using NativeType = VkScreenBufferPropertiesQNX;
47372 
47373     static const bool allowDuplicate = false;
47374     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eScreenBufferPropertiesQNX;
47375 
47376 
47377 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ScreenBufferPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX47378 VULKAN_HPP_CONSTEXPR ScreenBufferPropertiesQNX(VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {}, uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47379     : pNext( pNext_ ), allocationSize( allocationSize_ ), memoryTypeBits( memoryTypeBits_ )
47380     {}
47381 
47382     VULKAN_HPP_CONSTEXPR ScreenBufferPropertiesQNX( ScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47383 
ScreenBufferPropertiesQNXVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX47384     ScreenBufferPropertiesQNX( VkScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
47385       : ScreenBufferPropertiesQNX( *reinterpret_cast<ScreenBufferPropertiesQNX const *>( &rhs ) )
47386     {}
47387 
47388 
47389     ScreenBufferPropertiesQNX & operator=( ScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47390 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47391 
operator =VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX47392     ScreenBufferPropertiesQNX & operator=( VkScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT
47393     {
47394       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX const *>( &rhs );
47395       return *this;
47396     }
47397 
47398 
operator VkScreenBufferPropertiesQNX const&VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX47399     operator VkScreenBufferPropertiesQNX const &() const VULKAN_HPP_NOEXCEPT
47400     {
47401       return *reinterpret_cast<const VkScreenBufferPropertiesQNX*>( this );
47402     }
47403 
operator VkScreenBufferPropertiesQNX&VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX47404     operator VkScreenBufferPropertiesQNX &() VULKAN_HPP_NOEXCEPT
47405     {
47406       return *reinterpret_cast<VkScreenBufferPropertiesQNX*>( this );
47407     }
47408 
47409 #if defined( VULKAN_HPP_USE_REFLECT )
47410 #if 14 <= VULKAN_HPP_CPP_VERSION
47411     auto
47412 #else
47413     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::DeviceSize const &, uint32_t const &>
47414 #endif
reflectVULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX47415       reflect() const VULKAN_HPP_NOEXCEPT
47416     {
47417       return std::tie( sType, pNext, allocationSize, memoryTypeBits );
47418     }
47419 #endif
47420 
47421 
47422 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47423 auto operator<=>( ScreenBufferPropertiesQNX const & ) const = default;
47424 #else
operator ==VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX47425     bool operator==( ScreenBufferPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
47426     {
47427 #if defined( VULKAN_HPP_USE_REFLECT )
47428       return this->reflect() == rhs.reflect();
47429 #else
47430       return ( sType == rhs.sType )
47431           && ( pNext == rhs.pNext )
47432           && ( allocationSize == rhs.allocationSize )
47433           && ( memoryTypeBits == rhs.memoryTypeBits );
47434 #endif
47435     }
47436 
operator !=VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX47437     bool operator!=( ScreenBufferPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT
47438     {
47439       return !operator==( rhs );
47440     }
47441 #endif
47442 
47443     public:
47444     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eScreenBufferPropertiesQNX;
47445     void * pNext = {};
47446     VULKAN_HPP_NAMESPACE::DeviceSize allocationSize = {};
47447     uint32_t memoryTypeBits = {};
47448 
47449   };
47450 
47451   template <>
47452   struct CppType<StructureType, StructureType::eScreenBufferPropertiesQNX>
47453   {
47454     using Type = ScreenBufferPropertiesQNX;
47455   };
47456 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
47457 
47458   struct SemaphoreCreateInfo
47459   {
47460     using NativeType = VkSemaphoreCreateInfo;
47461 
47462     static const bool allowDuplicate = false;
47463     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreCreateInfo;
47464 
47465 
47466 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47467 VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo(VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47468     : pNext( pNext_ ), flags( flags_ )
47469     {}
47470 
47471     VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47472 
SemaphoreCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47473     SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
47474       : SemaphoreCreateInfo( *reinterpret_cast<SemaphoreCreateInfo const *>( &rhs ) )
47475     {}
47476 
47477 
47478     SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47479 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47480 
operator =VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47481     SemaphoreCreateInfo & operator=( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
47482     {
47483       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const *>( &rhs );
47484       return *this;
47485     }
47486 
47487 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47488     VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47489     {
47490       pNext = pNext_;
47491       return *this;
47492     }
47493 
setFlagsVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47494     VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT
47495     {
47496       flags = flags_;
47497       return *this;
47498     }
47499 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47500 
47501 
operator VkSemaphoreCreateInfo const&VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47502     operator VkSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT
47503     {
47504       return *reinterpret_cast<const VkSemaphoreCreateInfo*>( this );
47505     }
47506 
operator VkSemaphoreCreateInfo&VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47507     operator VkSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT
47508     {
47509       return *reinterpret_cast<VkSemaphoreCreateInfo*>( this );
47510     }
47511 
47512 #if defined( VULKAN_HPP_USE_REFLECT )
47513 #if 14 <= VULKAN_HPP_CPP_VERSION
47514     auto
47515 #else
47516     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags const &>
47517 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47518       reflect() const VULKAN_HPP_NOEXCEPT
47519     {
47520       return std::tie( sType, pNext, flags );
47521     }
47522 #endif
47523 
47524 
47525 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47526 auto operator<=>( SemaphoreCreateInfo const & ) const = default;
47527 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47528     bool operator==( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
47529     {
47530 #if defined( VULKAN_HPP_USE_REFLECT )
47531       return this->reflect() == rhs.reflect();
47532 #else
47533       return ( sType == rhs.sType )
47534           && ( pNext == rhs.pNext )
47535           && ( flags == rhs.flags );
47536 #endif
47537     }
47538 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo47539     bool operator!=( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
47540     {
47541       return !operator==( rhs );
47542     }
47543 #endif
47544 
47545     public:
47546     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreCreateInfo;
47547     const void * pNext = {};
47548     VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags = {};
47549 
47550   };
47551 
47552   template <>
47553   struct CppType<StructureType, StructureType::eSemaphoreCreateInfo>
47554   {
47555     using Type = SemaphoreCreateInfo;
47556   };
47557 
47558   struct SemaphoreGetFdInfoKHR
47559   {
47560     using NativeType = VkSemaphoreGetFdInfoKHR;
47561 
47562     static const bool allowDuplicate = false;
47563     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetFdInfoKHR;
47564 
47565 
47566 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetFdInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47567 VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47568     : pNext( pNext_ ), semaphore( semaphore_ ), handleType( handleType_ )
47569     {}
47570 
47571     VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47572 
SemaphoreGetFdInfoKHRVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47573     SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47574       : SemaphoreGetFdInfoKHR( *reinterpret_cast<SemaphoreGetFdInfoKHR const *>( &rhs ) )
47575     {}
47576 
47577 
47578     SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47579 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47580 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47581     SemaphoreGetFdInfoKHR & operator=( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
47582     {
47583       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR const *>( &rhs );
47584       return *this;
47585     }
47586 
47587 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47588     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47589     {
47590       pNext = pNext_;
47591       return *this;
47592     }
47593 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47594     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
47595     {
47596       semaphore = semaphore_;
47597       return *this;
47598     }
47599 
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47600     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47601     {
47602       handleType = handleType_;
47603       return *this;
47604     }
47605 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47606 
47607 
operator VkSemaphoreGetFdInfoKHR const&VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47608     operator VkSemaphoreGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT
47609     {
47610       return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( this );
47611     }
47612 
operator VkSemaphoreGetFdInfoKHR&VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47613     operator VkSemaphoreGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT
47614     {
47615       return *reinterpret_cast<VkSemaphoreGetFdInfoKHR*>( this );
47616     }
47617 
47618 #if defined( VULKAN_HPP_USE_REFLECT )
47619 #if 14 <= VULKAN_HPP_CPP_VERSION
47620     auto
47621 #else
47622     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
47623 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47624       reflect() const VULKAN_HPP_NOEXCEPT
47625     {
47626       return std::tie( sType, pNext, semaphore, handleType );
47627     }
47628 #endif
47629 
47630 
47631 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47632 auto operator<=>( SemaphoreGetFdInfoKHR const & ) const = default;
47633 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47634     bool operator==( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47635     {
47636 #if defined( VULKAN_HPP_USE_REFLECT )
47637       return this->reflect() == rhs.reflect();
47638 #else
47639       return ( sType == rhs.sType )
47640           && ( pNext == rhs.pNext )
47641           && ( semaphore == rhs.semaphore )
47642           && ( handleType == rhs.handleType );
47643 #endif
47644     }
47645 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR47646     bool operator!=( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
47647     {
47648       return !operator==( rhs );
47649     }
47650 #endif
47651 
47652     public:
47653     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetFdInfoKHR;
47654     const void * pNext = {};
47655     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
47656     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
47657 
47658   };
47659 
47660   template <>
47661   struct CppType<StructureType, StructureType::eSemaphoreGetFdInfoKHR>
47662   {
47663     using Type = SemaphoreGetFdInfoKHR;
47664   };
47665 
47666 #if defined( VK_USE_PLATFORM_SCI )
47667   struct SemaphoreGetSciSyncInfoNV
47668   {
47669     using NativeType = VkSemaphoreGetSciSyncInfoNV;
47670 
47671     static const bool allowDuplicate = false;
47672     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetSciSyncInfoNV;
47673 
47674 
47675 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreGetSciSyncInfoNVVULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47676 VULKAN_HPP_CONSTEXPR SemaphoreGetSciSyncInfoNV(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47677     : pNext( pNext_ ), semaphore( semaphore_ ), handleType( handleType_ )
47678     {}
47679 
47680     VULKAN_HPP_CONSTEXPR SemaphoreGetSciSyncInfoNV( SemaphoreGetSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47681 
SemaphoreGetSciSyncInfoNVVULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47682     SemaphoreGetSciSyncInfoNV( VkSemaphoreGetSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47683       : SemaphoreGetSciSyncInfoNV( *reinterpret_cast<SemaphoreGetSciSyncInfoNV const *>( &rhs ) )
47684     {}
47685 
47686 
47687     SemaphoreGetSciSyncInfoNV & operator=( SemaphoreGetSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47688 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47689 
operator =VULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47690     SemaphoreGetSciSyncInfoNV & operator=( VkSemaphoreGetSciSyncInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47691     {
47692       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV const *>( &rhs );
47693       return *this;
47694     }
47695 
47696 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47697     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetSciSyncInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47698     {
47699       pNext = pNext_;
47700       return *this;
47701     }
47702 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47703     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetSciSyncInfoNV & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
47704     {
47705       semaphore = semaphore_;
47706       return *this;
47707     }
47708 
setHandleTypeVULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47709     VULKAN_HPP_CONSTEXPR_14 SemaphoreGetSciSyncInfoNV & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT
47710     {
47711       handleType = handleType_;
47712       return *this;
47713     }
47714 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47715 
47716 
operator VkSemaphoreGetSciSyncInfoNV const&VULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47717     operator VkSemaphoreGetSciSyncInfoNV const &() const VULKAN_HPP_NOEXCEPT
47718     {
47719       return *reinterpret_cast<const VkSemaphoreGetSciSyncInfoNV*>( this );
47720     }
47721 
operator VkSemaphoreGetSciSyncInfoNV&VULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47722     operator VkSemaphoreGetSciSyncInfoNV &() VULKAN_HPP_NOEXCEPT
47723     {
47724       return *reinterpret_cast<VkSemaphoreGetSciSyncInfoNV*>( this );
47725     }
47726 
47727 #if defined( VULKAN_HPP_USE_REFLECT )
47728 #if 14 <= VULKAN_HPP_CPP_VERSION
47729     auto
47730 #else
47731     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits const &>
47732 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47733       reflect() const VULKAN_HPP_NOEXCEPT
47734     {
47735       return std::tie( sType, pNext, semaphore, handleType );
47736     }
47737 #endif
47738 
47739 
47740 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47741 auto operator<=>( SemaphoreGetSciSyncInfoNV const & ) const = default;
47742 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47743     bool operator==( SemaphoreGetSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47744     {
47745 #if defined( VULKAN_HPP_USE_REFLECT )
47746       return this->reflect() == rhs.reflect();
47747 #else
47748       return ( sType == rhs.sType )
47749           && ( pNext == rhs.pNext )
47750           && ( semaphore == rhs.semaphore )
47751           && ( handleType == rhs.handleType );
47752 #endif
47753     }
47754 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreGetSciSyncInfoNV47755     bool operator!=( SemaphoreGetSciSyncInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47756     {
47757       return !operator==( rhs );
47758     }
47759 #endif
47760 
47761     public:
47762     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetSciSyncInfoNV;
47763     const void * pNext = {};
47764     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
47765     VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd;
47766 
47767   };
47768 
47769   template <>
47770   struct CppType<StructureType, StructureType::eSemaphoreGetSciSyncInfoNV>
47771   {
47772     using Type = SemaphoreGetSciSyncInfoNV;
47773   };
47774 #endif /*VK_USE_PLATFORM_SCI*/
47775 
47776 #if defined( VK_USE_PLATFORM_SCI )
47777   struct SemaphoreSciSyncCreateInfoNV
47778   {
47779     using NativeType = VkSemaphoreSciSyncCreateInfoNV;
47780 
47781     static const bool allowDuplicate = false;
47782     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSciSyncCreateInfoNV;
47783 
47784 
47785 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreSciSyncCreateInfoNVVULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47786 VULKAN_HPP_CONSTEXPR SemaphoreSciSyncCreateInfoNV(VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolNV semaphorePool_ = {}, const NvSciSyncFence * pFence_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47787     : pNext( pNext_ ), semaphorePool( semaphorePool_ ), pFence( pFence_ )
47788     {}
47789 
47790     VULKAN_HPP_CONSTEXPR SemaphoreSciSyncCreateInfoNV( SemaphoreSciSyncCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47791 
SemaphoreSciSyncCreateInfoNVVULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47792     SemaphoreSciSyncCreateInfoNV( VkSemaphoreSciSyncCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47793       : SemaphoreSciSyncCreateInfoNV( *reinterpret_cast<SemaphoreSciSyncCreateInfoNV const *>( &rhs ) )
47794     {}
47795 
47796 
47797     SemaphoreSciSyncCreateInfoNV & operator=( SemaphoreSciSyncCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47798 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47799 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47800     SemaphoreSciSyncCreateInfoNV & operator=( VkSemaphoreSciSyncCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47801     {
47802       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV const *>( &rhs );
47803       return *this;
47804     }
47805 
47806 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47807     VULKAN_HPP_CONSTEXPR_14 SemaphoreSciSyncCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47808     {
47809       pNext = pNext_;
47810       return *this;
47811     }
47812 
setSemaphorePoolVULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47813     VULKAN_HPP_CONSTEXPR_14 SemaphoreSciSyncCreateInfoNV & setSemaphorePool( VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolNV semaphorePool_ ) VULKAN_HPP_NOEXCEPT
47814     {
47815       semaphorePool = semaphorePool_;
47816       return *this;
47817     }
47818 
setPFenceVULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47819     VULKAN_HPP_CONSTEXPR_14 SemaphoreSciSyncCreateInfoNV & setPFence( const NvSciSyncFence * pFence_ ) VULKAN_HPP_NOEXCEPT
47820     {
47821       pFence = pFence_;
47822       return *this;
47823     }
47824 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47825 
47826 
operator VkSemaphoreSciSyncCreateInfoNV const&VULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47827     operator VkSemaphoreSciSyncCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
47828     {
47829       return *reinterpret_cast<const VkSemaphoreSciSyncCreateInfoNV*>( this );
47830     }
47831 
operator VkSemaphoreSciSyncCreateInfoNV&VULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47832     operator VkSemaphoreSciSyncCreateInfoNV &() VULKAN_HPP_NOEXCEPT
47833     {
47834       return *reinterpret_cast<VkSemaphoreSciSyncCreateInfoNV*>( this );
47835     }
47836 
47837 #if defined( VULKAN_HPP_USE_REFLECT )
47838 #if 14 <= VULKAN_HPP_CPP_VERSION
47839     auto
47840 #else
47841     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolNV const &, const NvSciSyncFence * const &>
47842 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47843       reflect() const VULKAN_HPP_NOEXCEPT
47844     {
47845       return std::tie( sType, pNext, semaphorePool, pFence );
47846     }
47847 #endif
47848 
47849 
47850 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
47851 auto operator<=>( SemaphoreSciSyncCreateInfoNV const & ) const = default;
47852 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47853     bool operator==( SemaphoreSciSyncCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47854     {
47855 #if defined( VULKAN_HPP_USE_REFLECT )
47856       return this->reflect() == rhs.reflect();
47857 #else
47858       return ( sType == rhs.sType )
47859           && ( pNext == rhs.pNext )
47860           && ( semaphorePool == rhs.semaphorePool )
47861           && ( pFence == rhs.pFence );
47862 #endif
47863     }
47864 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSciSyncCreateInfoNV47865     bool operator!=( SemaphoreSciSyncCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47866     {
47867       return !operator==( rhs );
47868     }
47869 #endif
47870 
47871     public:
47872     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSciSyncCreateInfoNV;
47873     const void * pNext = {};
47874     VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolNV semaphorePool = {};
47875     const NvSciSyncFence * pFence = {};
47876 
47877   };
47878 
47879   template <>
47880   struct CppType<StructureType, StructureType::eSemaphoreSciSyncCreateInfoNV>
47881   {
47882     using Type = SemaphoreSciSyncCreateInfoNV;
47883   };
47884 #endif /*VK_USE_PLATFORM_SCI*/
47885 
47886 #if defined( VK_USE_PLATFORM_SCI )
47887   struct SemaphoreSciSyncPoolCreateInfoNV
47888   {
47889     using NativeType = VkSemaphoreSciSyncPoolCreateInfoNV;
47890 
47891     static const bool allowDuplicate = false;
47892     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSciSyncPoolCreateInfoNV;
47893 
47894 
47895 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreSciSyncPoolCreateInfoNVVULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47896 VULKAN_HPP_CONSTEXPR SemaphoreSciSyncPoolCreateInfoNV(NvSciSyncObj handle_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
47897     : pNext( pNext_ ), handle( handle_ )
47898     {}
47899 
47900     VULKAN_HPP_CONSTEXPR SemaphoreSciSyncPoolCreateInfoNV( SemaphoreSciSyncPoolCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47901 
SemaphoreSciSyncPoolCreateInfoNVVULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47902     SemaphoreSciSyncPoolCreateInfoNV( VkSemaphoreSciSyncPoolCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47903       : SemaphoreSciSyncPoolCreateInfoNV( *reinterpret_cast<SemaphoreSciSyncPoolCreateInfoNV const *>( &rhs ) )
47904     {}
47905 
47906 
47907     SemaphoreSciSyncPoolCreateInfoNV & operator=( SemaphoreSciSyncPoolCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default;
47908 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
47909 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47910     SemaphoreSciSyncPoolCreateInfoNV & operator=( VkSemaphoreSciSyncPoolCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT
47911     {
47912       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV const *>( &rhs );
47913       return *this;
47914     }
47915 
47916 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47917     VULKAN_HPP_CONSTEXPR_14 SemaphoreSciSyncPoolCreateInfoNV & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
47918     {
47919       pNext = pNext_;
47920       return *this;
47921     }
47922 
setHandleVULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47923     VULKAN_HPP_CONSTEXPR_14 SemaphoreSciSyncPoolCreateInfoNV & setHandle( NvSciSyncObj handle_ ) VULKAN_HPP_NOEXCEPT
47924     {
47925       handle = handle_;
47926       return *this;
47927     }
47928 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
47929 
47930 
operator VkSemaphoreSciSyncPoolCreateInfoNV const&VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47931     operator VkSemaphoreSciSyncPoolCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT
47932     {
47933       return *reinterpret_cast<const VkSemaphoreSciSyncPoolCreateInfoNV*>( this );
47934     }
47935 
operator VkSemaphoreSciSyncPoolCreateInfoNV&VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47936     operator VkSemaphoreSciSyncPoolCreateInfoNV &() VULKAN_HPP_NOEXCEPT
47937     {
47938       return *reinterpret_cast<VkSemaphoreSciSyncPoolCreateInfoNV*>( this );
47939     }
47940 
47941 #if defined( VULKAN_HPP_USE_REFLECT )
47942 #if 14 <= VULKAN_HPP_CPP_VERSION
47943     auto
47944 #else
47945     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, NvSciSyncObj const &>
47946 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47947       reflect() const VULKAN_HPP_NOEXCEPT
47948     {
47949       return std::tie( sType, pNext, handle );
47950     }
47951 #endif
47952 
47953 
47954 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
operator <=>VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47955     std::strong_ordering operator<=>( SemaphoreSciSyncPoolCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47956     {
47957       if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) return cmp;
47958       if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) return cmp;
47959       if ( auto cmp = memcmp( &handle, &rhs.handle, sizeof( NvSciSyncObj ) ); cmp != 0 )
47960         return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater;
47961 
47962       return std::strong_ordering::equivalent;
47963     }
47964 #endif
47965 
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47966     bool operator==( SemaphoreSciSyncPoolCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47967     {
47968       return ( sType == rhs.sType )
47969           && ( pNext == rhs.pNext )
47970           && ( memcmp( &handle, &rhs.handle, sizeof( NvSciSyncObj ) ) == 0 );
47971     }
47972 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSciSyncPoolCreateInfoNV47973     bool operator!=( SemaphoreSciSyncPoolCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT
47974     {
47975       return !operator==( rhs );
47976     }
47977 
47978     public:
47979     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSciSyncPoolCreateInfoNV;
47980     const void * pNext = {};
47981     NvSciSyncObj handle = {};
47982 
47983   };
47984 
47985   template <>
47986   struct CppType<StructureType, StructureType::eSemaphoreSciSyncPoolCreateInfoNV>
47987   {
47988     using Type = SemaphoreSciSyncPoolCreateInfoNV;
47989   };
47990 #endif /*VK_USE_PLATFORM_SCI*/
47991 
47992   struct SemaphoreSignalInfo
47993   {
47994     using NativeType = VkSemaphoreSignalInfo;
47995 
47996     static const bool allowDuplicate = false;
47997     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSignalInfo;
47998 
47999 
48000 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreSignalInfoVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48001 VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, uint64_t value_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
48002     : pNext( pNext_ ), semaphore( semaphore_ ), value( value_ )
48003     {}
48004 
48005     VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48006 
SemaphoreSignalInfoVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48007     SemaphoreSignalInfo( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48008       : SemaphoreSignalInfo( *reinterpret_cast<SemaphoreSignalInfo const *>( &rhs ) )
48009     {}
48010 
48011 
48012     SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48013 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48014 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48015     SemaphoreSignalInfo & operator=( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48016     {
48017       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo const *>( &rhs );
48018       return *this;
48019     }
48020 
48021 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48022     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48023     {
48024       pNext = pNext_;
48025       return *this;
48026     }
48027 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48028     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
48029     {
48030       semaphore = semaphore_;
48031       return *this;
48032     }
48033 
setValueVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48034     VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
48035     {
48036       value = value_;
48037       return *this;
48038     }
48039 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48040 
48041 
operator VkSemaphoreSignalInfo const&VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48042     operator VkSemaphoreSignalInfo const &() const VULKAN_HPP_NOEXCEPT
48043     {
48044       return *reinterpret_cast<const VkSemaphoreSignalInfo*>( this );
48045     }
48046 
operator VkSemaphoreSignalInfo&VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48047     operator VkSemaphoreSignalInfo &() VULKAN_HPP_NOEXCEPT
48048     {
48049       return *reinterpret_cast<VkSemaphoreSignalInfo*>( this );
48050     }
48051 
48052 #if defined( VULKAN_HPP_USE_REFLECT )
48053 #if 14 <= VULKAN_HPP_CPP_VERSION
48054     auto
48055 #else
48056     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, uint64_t const &>
48057 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48058       reflect() const VULKAN_HPP_NOEXCEPT
48059     {
48060       return std::tie( sType, pNext, semaphore, value );
48061     }
48062 #endif
48063 
48064 
48065 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
48066 auto operator<=>( SemaphoreSignalInfo const & ) const = default;
48067 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48068     bool operator==( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48069     {
48070 #if defined( VULKAN_HPP_USE_REFLECT )
48071       return this->reflect() == rhs.reflect();
48072 #else
48073       return ( sType == rhs.sType )
48074           && ( pNext == rhs.pNext )
48075           && ( semaphore == rhs.semaphore )
48076           && ( value == rhs.value );
48077 #endif
48078     }
48079 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo48080     bool operator!=( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48081     {
48082       return !operator==( rhs );
48083     }
48084 #endif
48085 
48086     public:
48087     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSignalInfo;
48088     const void * pNext = {};
48089     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
48090     uint64_t value = {};
48091 
48092   };
48093 
48094   template <>
48095   struct CppType<StructureType, StructureType::eSemaphoreSignalInfo>
48096   {
48097     using Type = SemaphoreSignalInfo;
48098   };
48099   using SemaphoreSignalInfoKHR = SemaphoreSignalInfo;
48100 
48101   struct SemaphoreSubmitInfo
48102   {
48103     using NativeType = VkSemaphoreSubmitInfo;
48104 
48105     static const bool allowDuplicate = false;
48106     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSubmitInfo;
48107 
48108 
48109 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48110 VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, uint64_t value_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ = {}, uint32_t deviceIndex_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
48111     : pNext( pNext_ ), semaphore( semaphore_ ), value( value_ ), stageMask( stageMask_ ), deviceIndex( deviceIndex_ )
48112     {}
48113 
48114     VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48115 
SemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48116     SemaphoreSubmitInfo( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48117       : SemaphoreSubmitInfo( *reinterpret_cast<SemaphoreSubmitInfo const *>( &rhs ) )
48118     {}
48119 
48120 
48121     SemaphoreSubmitInfo & operator=( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48122 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48123 
operator =VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48124     SemaphoreSubmitInfo & operator=( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48125     {
48126       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const *>( &rhs );
48127       return *this;
48128     }
48129 
48130 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48131     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48132     {
48133       pNext = pNext_;
48134       return *this;
48135     }
48136 
setSemaphoreVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48137     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT
48138     {
48139       semaphore = semaphore_;
48140       return *this;
48141     }
48142 
setValueVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48143     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT
48144     {
48145       value = value_;
48146       return *this;
48147     }
48148 
setStageMaskVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48149     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask_ ) VULKAN_HPP_NOEXCEPT
48150     {
48151       stageMask = stageMask_;
48152       return *this;
48153     }
48154 
setDeviceIndexVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48155     VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setDeviceIndex( uint32_t deviceIndex_ ) VULKAN_HPP_NOEXCEPT
48156     {
48157       deviceIndex = deviceIndex_;
48158       return *this;
48159     }
48160 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48161 
48162 
operator VkSemaphoreSubmitInfo const&VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48163     operator VkSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
48164     {
48165       return *reinterpret_cast<const VkSemaphoreSubmitInfo*>( this );
48166     }
48167 
operator VkSemaphoreSubmitInfo&VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48168     operator VkSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
48169     {
48170       return *reinterpret_cast<VkSemaphoreSubmitInfo*>( this );
48171     }
48172 
48173 #if defined( VULKAN_HPP_USE_REFLECT )
48174 #if 14 <= VULKAN_HPP_CPP_VERSION
48175     auto
48176 #else
48177     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::Semaphore const &, uint64_t const &, VULKAN_HPP_NAMESPACE::PipelineStageFlags2 const &, uint32_t const &>
48178 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48179       reflect() const VULKAN_HPP_NOEXCEPT
48180     {
48181       return std::tie( sType, pNext, semaphore, value, stageMask, deviceIndex );
48182     }
48183 #endif
48184 
48185 
48186 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
48187 auto operator<=>( SemaphoreSubmitInfo const & ) const = default;
48188 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48189     bool operator==( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48190     {
48191 #if defined( VULKAN_HPP_USE_REFLECT )
48192       return this->reflect() == rhs.reflect();
48193 #else
48194       return ( sType == rhs.sType )
48195           && ( pNext == rhs.pNext )
48196           && ( semaphore == rhs.semaphore )
48197           && ( value == rhs.value )
48198           && ( stageMask == rhs.stageMask )
48199           && ( deviceIndex == rhs.deviceIndex );
48200 #endif
48201     }
48202 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo48203     bool operator!=( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48204     {
48205       return !operator==( rhs );
48206     }
48207 #endif
48208 
48209     public:
48210     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSubmitInfo;
48211     const void * pNext = {};
48212     VULKAN_HPP_NAMESPACE::Semaphore semaphore = {};
48213     uint64_t value = {};
48214     VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask = {};
48215     uint32_t deviceIndex = {};
48216 
48217   };
48218 
48219   template <>
48220   struct CppType<StructureType, StructureType::eSemaphoreSubmitInfo>
48221   {
48222     using Type = SemaphoreSubmitInfo;
48223   };
48224   using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo;
48225 
48226   struct SemaphoreTypeCreateInfo
48227   {
48228     using NativeType = VkSemaphoreTypeCreateInfo;
48229 
48230     static const bool allowDuplicate = false;
48231     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreTypeCreateInfo;
48232 
48233 
48234 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreTypeCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48235 VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo(VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary, uint64_t initialValue_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
48236     : pNext( pNext_ ), semaphoreType( semaphoreType_ ), initialValue( initialValue_ )
48237     {}
48238 
48239     VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48240 
SemaphoreTypeCreateInfoVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48241     SemaphoreTypeCreateInfo( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48242       : SemaphoreTypeCreateInfo( *reinterpret_cast<SemaphoreTypeCreateInfo const *>( &rhs ) )
48243     {}
48244 
48245 
48246     SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48247 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48248 
operator =VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48249     SemaphoreTypeCreateInfo & operator=( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48250     {
48251       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const *>( &rhs );
48252       return *this;
48253     }
48254 
48255 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48256     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48257     {
48258       pNext = pNext_;
48259       return *this;
48260     }
48261 
setSemaphoreTypeVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48262     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setSemaphoreType( VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ ) VULKAN_HPP_NOEXCEPT
48263     {
48264       semaphoreType = semaphoreType_;
48265       return *this;
48266     }
48267 
setInitialValueVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48268     VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setInitialValue( uint64_t initialValue_ ) VULKAN_HPP_NOEXCEPT
48269     {
48270       initialValue = initialValue_;
48271       return *this;
48272     }
48273 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48274 
48275 
operator VkSemaphoreTypeCreateInfo const&VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48276     operator VkSemaphoreTypeCreateInfo const &() const VULKAN_HPP_NOEXCEPT
48277     {
48278       return *reinterpret_cast<const VkSemaphoreTypeCreateInfo*>( this );
48279     }
48280 
operator VkSemaphoreTypeCreateInfo&VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48281     operator VkSemaphoreTypeCreateInfo &() VULKAN_HPP_NOEXCEPT
48282     {
48283       return *reinterpret_cast<VkSemaphoreTypeCreateInfo*>( this );
48284     }
48285 
48286 #if defined( VULKAN_HPP_USE_REFLECT )
48287 #if 14 <= VULKAN_HPP_CPP_VERSION
48288     auto
48289 #else
48290     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SemaphoreType const &, uint64_t const &>
48291 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48292       reflect() const VULKAN_HPP_NOEXCEPT
48293     {
48294       return std::tie( sType, pNext, semaphoreType, initialValue );
48295     }
48296 #endif
48297 
48298 
48299 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
48300 auto operator<=>( SemaphoreTypeCreateInfo const & ) const = default;
48301 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48302     bool operator==( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48303     {
48304 #if defined( VULKAN_HPP_USE_REFLECT )
48305       return this->reflect() == rhs.reflect();
48306 #else
48307       return ( sType == rhs.sType )
48308           && ( pNext == rhs.pNext )
48309           && ( semaphoreType == rhs.semaphoreType )
48310           && ( initialValue == rhs.initialValue );
48311 #endif
48312     }
48313 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo48314     bool operator!=( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48315     {
48316       return !operator==( rhs );
48317     }
48318 #endif
48319 
48320     public:
48321     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreTypeCreateInfo;
48322     const void * pNext = {};
48323     VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary;
48324     uint64_t initialValue = {};
48325 
48326   };
48327 
48328   template <>
48329   struct CppType<StructureType, StructureType::eSemaphoreTypeCreateInfo>
48330   {
48331     using Type = SemaphoreTypeCreateInfo;
48332   };
48333   using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo;
48334 
48335   struct SemaphoreWaitInfo
48336   {
48337     using NativeType = VkSemaphoreWaitInfo;
48338 
48339     static const bool allowDuplicate = false;
48340     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreWaitInfo;
48341 
48342 
48343 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48344 VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo(VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ = {}, uint32_t semaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores_ = {}, const uint64_t * pValues_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
48345     : pNext( pNext_ ), flags( flags_ ), semaphoreCount( semaphoreCount_ ), pSemaphores( pSemaphores_ ), pValues( pValues_ )
48346     {}
48347 
48348     VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48349 
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48350     SemaphoreWaitInfo( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48351       : SemaphoreWaitInfo( *reinterpret_cast<SemaphoreWaitInfo const *>( &rhs ) )
48352     {}
48353 
48354 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SemaphoreWaitInfoVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48355     SemaphoreWaitInfo( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & values_ = {}, const void * pNext_ = nullptr )
48356     : pNext( pNext_ ), flags( flags_ ), semaphoreCount( static_cast<uint32_t>( semaphores_.size() ) ), pSemaphores( semaphores_.data() ), pValues( values_.data() )
48357     {
48358 #ifdef VULKAN_HPP_NO_EXCEPTIONS
48359       VULKAN_HPP_ASSERT( semaphores_.size() == values_.size() );
48360 #else
48361       if ( semaphores_.size() != values_.size() )
48362       {
48363         throw LogicError( VULKAN_HPP_NAMESPACE_STRING"::SemaphoreWaitInfo::SemaphoreWaitInfo: semaphores_.size() != values_.size()" );
48364       }
48365 #endif /*VULKAN_HPP_NO_EXCEPTIONS*/
48366     }
48367 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48368 
48369 
48370     SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48371 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48372 
operator =VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48373     SemaphoreWaitInfo & operator=( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48374     {
48375       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo const *>( &rhs );
48376       return *this;
48377     }
48378 
48379 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48380     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48381     {
48382       pNext = pNext_;
48383       return *this;
48384     }
48385 
setFlagsVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48386     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ ) VULKAN_HPP_NOEXCEPT
48387     {
48388       flags = flags_;
48389       return *this;
48390     }
48391 
setSemaphoreCountVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48392     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setSemaphoreCount( uint32_t semaphoreCount_ ) VULKAN_HPP_NOEXCEPT
48393     {
48394       semaphoreCount = semaphoreCount_;
48395       return *this;
48396     }
48397 
setPSemaphoresVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48398     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores_ ) VULKAN_HPP_NOEXCEPT
48399     {
48400       pSemaphores = pSemaphores_;
48401       return *this;
48402     }
48403 
48404 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSemaphoresVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48405     SemaphoreWaitInfo & setSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & semaphores_ ) VULKAN_HPP_NOEXCEPT
48406     {
48407       semaphoreCount = static_cast<uint32_t>( semaphores_.size() );
48408       pSemaphores = semaphores_.data();
48409       return *this;
48410     }
48411 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48412 
setPValuesVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48413     VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPValues( const uint64_t * pValues_ ) VULKAN_HPP_NOEXCEPT
48414     {
48415       pValues = pValues_;
48416       return *this;
48417     }
48418 
48419 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setValuesVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48420     SemaphoreWaitInfo & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & values_ ) VULKAN_HPP_NOEXCEPT
48421     {
48422       semaphoreCount = static_cast<uint32_t>( values_.size() );
48423       pValues = values_.data();
48424       return *this;
48425     }
48426 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48427 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48428 
48429 
operator VkSemaphoreWaitInfo const&VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48430     operator VkSemaphoreWaitInfo const &() const VULKAN_HPP_NOEXCEPT
48431     {
48432       return *reinterpret_cast<const VkSemaphoreWaitInfo*>( this );
48433     }
48434 
operator VkSemaphoreWaitInfo&VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48435     operator VkSemaphoreWaitInfo &() VULKAN_HPP_NOEXCEPT
48436     {
48437       return *reinterpret_cast<VkSemaphoreWaitInfo*>( this );
48438     }
48439 
48440 #if defined( VULKAN_HPP_USE_REFLECT )
48441 #if 14 <= VULKAN_HPP_CPP_VERSION
48442     auto
48443 #else
48444     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Semaphore * const &, const uint64_t * const &>
48445 #endif
reflectVULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48446       reflect() const VULKAN_HPP_NOEXCEPT
48447     {
48448       return std::tie( sType, pNext, flags, semaphoreCount, pSemaphores, pValues );
48449     }
48450 #endif
48451 
48452 
48453 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
48454 auto operator<=>( SemaphoreWaitInfo const & ) const = default;
48455 #else
operator ==VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48456     bool operator==( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48457     {
48458 #if defined( VULKAN_HPP_USE_REFLECT )
48459       return this->reflect() == rhs.reflect();
48460 #else
48461       return ( sType == rhs.sType )
48462           && ( pNext == rhs.pNext )
48463           && ( flags == rhs.flags )
48464           && ( semaphoreCount == rhs.semaphoreCount )
48465           && ( pSemaphores == rhs.pSemaphores )
48466           && ( pValues == rhs.pValues );
48467 #endif
48468     }
48469 
operator !=VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo48470     bool operator!=( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48471     {
48472       return !operator==( rhs );
48473     }
48474 #endif
48475 
48476     public:
48477     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreWaitInfo;
48478     const void * pNext = {};
48479     VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags = {};
48480     uint32_t semaphoreCount = {};
48481     const VULKAN_HPP_NAMESPACE::Semaphore * pSemaphores = {};
48482     const uint64_t * pValues = {};
48483 
48484   };
48485 
48486   template <>
48487   struct CppType<StructureType, StructureType::eSemaphoreWaitInfo>
48488   {
48489     using Type = SemaphoreWaitInfo;
48490   };
48491   using SemaphoreWaitInfoKHR = SemaphoreWaitInfo;
48492 
48493   struct SharedPresentSurfaceCapabilitiesKHR
48494   {
48495     using NativeType = VkSharedPresentSurfaceCapabilitiesKHR;
48496 
48497     static const bool allowDuplicate = false;
48498     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
48499 
48500 
48501 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SharedPresentSurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR48502 VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR(VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
48503     : pNext( pNext_ ), sharedPresentSupportedUsageFlags( sharedPresentSupportedUsageFlags_ )
48504     {}
48505 
48506     VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48507 
SharedPresentSurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR48508     SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48509       : SharedPresentSurfaceCapabilitiesKHR( *reinterpret_cast<SharedPresentSurfaceCapabilitiesKHR const *>( &rhs ) )
48510     {}
48511 
48512 
48513     SharedPresentSurfaceCapabilitiesKHR & operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48514 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48515 
operator =VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR48516     SharedPresentSurfaceCapabilitiesKHR & operator=( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
48517     {
48518       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR const *>( &rhs );
48519       return *this;
48520     }
48521 
48522 
operator VkSharedPresentSurfaceCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR48523     operator VkSharedPresentSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
48524     {
48525       return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>( this );
48526     }
48527 
operator VkSharedPresentSurfaceCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR48528     operator VkSharedPresentSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
48529     {
48530       return *reinterpret_cast<VkSharedPresentSurfaceCapabilitiesKHR*>( this );
48531     }
48532 
48533 #if defined( VULKAN_HPP_USE_REFLECT )
48534 #if 14 <= VULKAN_HPP_CPP_VERSION
48535     auto
48536 #else
48537     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
48538 #endif
reflectVULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR48539       reflect() const VULKAN_HPP_NOEXCEPT
48540     {
48541       return std::tie( sType, pNext, sharedPresentSupportedUsageFlags );
48542     }
48543 #endif
48544 
48545 
48546 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
48547 auto operator<=>( SharedPresentSurfaceCapabilitiesKHR const & ) const = default;
48548 #else
operator ==VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR48549     bool operator==( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48550     {
48551 #if defined( VULKAN_HPP_USE_REFLECT )
48552       return this->reflect() == rhs.reflect();
48553 #else
48554       return ( sType == rhs.sType )
48555           && ( pNext == rhs.pNext )
48556           && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
48557 #endif
48558     }
48559 
operator !=VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR48560     bool operator!=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
48561     {
48562       return !operator==( rhs );
48563     }
48564 #endif
48565 
48566     public:
48567     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
48568     void * pNext = {};
48569     VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags = {};
48570 
48571   };
48572 
48573   template <>
48574   struct CppType<StructureType, StructureType::eSharedPresentSurfaceCapabilitiesKHR>
48575   {
48576     using Type = SharedPresentSurfaceCapabilitiesKHR;
48577   };
48578 
48579   struct SubmitInfo
48580   {
48581     using NativeType = VkSubmitInfo;
48582 
48583     static const bool allowDuplicate = false;
48584     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubmitInfo;
48585 
48586 
48587 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo48588 VULKAN_HPP_CONSTEXPR SubmitInfo(uint32_t waitSemaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ = {}, const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_ = {}, uint32_t commandBufferCount_ = {}, const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers_ = {}, uint32_t signalSemaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
48589     : pNext( pNext_ ), waitSemaphoreCount( waitSemaphoreCount_ ), pWaitSemaphores( pWaitSemaphores_ ), pWaitDstStageMask( pWaitDstStageMask_ ), commandBufferCount( commandBufferCount_ ), pCommandBuffers( pCommandBuffers_ ), signalSemaphoreCount( signalSemaphoreCount_ ), pSignalSemaphores( pSignalSemaphores_ )
48590     {}
48591 
48592     VULKAN_HPP_CONSTEXPR SubmitInfo( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48593 
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo48594     SubmitInfo( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48595       : SubmitInfo( *reinterpret_cast<SubmitInfo const *>( &rhs ) )
48596     {}
48597 
48598 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubmitInfoVULKAN_HPP_NAMESPACE::SubmitInfo48599     SubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const & waitDstStageMask_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ = {}, const void * pNext_ = nullptr )
48600     : pNext( pNext_ ), waitSemaphoreCount( static_cast<uint32_t>( waitSemaphores_.size() ) ), pWaitSemaphores( waitSemaphores_.data() ), pWaitDstStageMask( waitDstStageMask_.data() ), commandBufferCount( static_cast<uint32_t>( commandBuffers_.size() ) ), pCommandBuffers( commandBuffers_.data() ), signalSemaphoreCount( static_cast<uint32_t>( signalSemaphores_.size() ) ), pSignalSemaphores( signalSemaphores_.data() )
48601     {
48602 #ifdef VULKAN_HPP_NO_EXCEPTIONS
48603       VULKAN_HPP_ASSERT( waitSemaphores_.size() == waitDstStageMask_.size() );
48604 #else
48605       if ( waitSemaphores_.size() != waitDstStageMask_.size() )
48606       {
48607         throw LogicError( VULKAN_HPP_NAMESPACE_STRING"::SubmitInfo::SubmitInfo: waitSemaphores_.size() != waitDstStageMask_.size()" );
48608       }
48609 #endif /*VULKAN_HPP_NO_EXCEPTIONS*/
48610     }
48611 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48612 
48613 
48614     SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48615 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48616 
operator =VULKAN_HPP_NAMESPACE::SubmitInfo48617     SubmitInfo & operator=( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48618     {
48619       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo const *>( &rhs );
48620       return *this;
48621     }
48622 
48623 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubmitInfo48624     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48625     {
48626       pNext = pNext_;
48627       return *this;
48628     }
48629 
setWaitSemaphoreCountVULKAN_HPP_NAMESPACE::SubmitInfo48630     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
48631     {
48632       waitSemaphoreCount = waitSemaphoreCount_;
48633       return *this;
48634     }
48635 
setPWaitSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo48636     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT
48637     {
48638       pWaitSemaphores = pWaitSemaphores_;
48639       return *this;
48640     }
48641 
48642 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo48643     SubmitInfo & setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT
48644     {
48645       waitSemaphoreCount = static_cast<uint32_t>( waitSemaphores_.size() );
48646       pWaitSemaphores = waitSemaphores_.data();
48647       return *this;
48648     }
48649 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48650 
setPWaitDstStageMaskVULKAN_HPP_NAMESPACE::SubmitInfo48651     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPWaitDstStageMask( const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask_ ) VULKAN_HPP_NOEXCEPT
48652     {
48653       pWaitDstStageMask = pWaitDstStageMask_;
48654       return *this;
48655     }
48656 
48657 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitDstStageMaskVULKAN_HPP_NAMESPACE::SubmitInfo48658     SubmitInfo & setWaitDstStageMask( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::PipelineStageFlags> const & waitDstStageMask_ ) VULKAN_HPP_NOEXCEPT
48659     {
48660       waitSemaphoreCount = static_cast<uint32_t>( waitDstStageMask_.size() );
48661       pWaitDstStageMask = waitDstStageMask_.data();
48662       return *this;
48663     }
48664 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48665 
setCommandBufferCountVULKAN_HPP_NAMESPACE::SubmitInfo48666     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT
48667     {
48668       commandBufferCount = commandBufferCount_;
48669       return *this;
48670     }
48671 
setPCommandBuffersVULKAN_HPP_NAMESPACE::SubmitInfo48672     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers_ ) VULKAN_HPP_NOEXCEPT
48673     {
48674       pCommandBuffers = pCommandBuffers_;
48675       return *this;
48676     }
48677 
48678 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCommandBuffersVULKAN_HPP_NAMESPACE::SubmitInfo48679     SubmitInfo & setCommandBuffers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers_ ) VULKAN_HPP_NOEXCEPT
48680     {
48681       commandBufferCount = static_cast<uint32_t>( commandBuffers_.size() );
48682       pCommandBuffers = commandBuffers_.data();
48683       return *this;
48684     }
48685 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48686 
setSignalSemaphoreCountVULKAN_HPP_NAMESPACE::SubmitInfo48687     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT
48688     {
48689       signalSemaphoreCount = signalSemaphoreCount_;
48690       return *this;
48691     }
48692 
setPSignalSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo48693     VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT
48694     {
48695       pSignalSemaphores = pSignalSemaphores_;
48696       return *this;
48697     }
48698 
48699 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoresVULKAN_HPP_NAMESPACE::SubmitInfo48700     SubmitInfo & setSignalSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::Semaphore> const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT
48701     {
48702       signalSemaphoreCount = static_cast<uint32_t>( signalSemaphores_.size() );
48703       pSignalSemaphores = signalSemaphores_.data();
48704       return *this;
48705     }
48706 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48707 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48708 
48709 
operator VkSubmitInfo const&VULKAN_HPP_NAMESPACE::SubmitInfo48710     operator VkSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
48711     {
48712       return *reinterpret_cast<const VkSubmitInfo*>( this );
48713     }
48714 
operator VkSubmitInfo&VULKAN_HPP_NAMESPACE::SubmitInfo48715     operator VkSubmitInfo &() VULKAN_HPP_NOEXCEPT
48716     {
48717       return *reinterpret_cast<VkSubmitInfo*>( this );
48718     }
48719 
48720 #if defined( VULKAN_HPP_USE_REFLECT )
48721 #if 14 <= VULKAN_HPP_CPP_VERSION
48722     auto
48723 #else
48724     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Semaphore * const &, const VULKAN_HPP_NAMESPACE::PipelineStageFlags * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::CommandBuffer * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::Semaphore * const &>
48725 #endif
reflectVULKAN_HPP_NAMESPACE::SubmitInfo48726       reflect() const VULKAN_HPP_NOEXCEPT
48727     {
48728       return std::tie( sType, pNext, waitSemaphoreCount, pWaitSemaphores, pWaitDstStageMask, commandBufferCount, pCommandBuffers, signalSemaphoreCount, pSignalSemaphores );
48729     }
48730 #endif
48731 
48732 
48733 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
48734 auto operator<=>( SubmitInfo const & ) const = default;
48735 #else
operator ==VULKAN_HPP_NAMESPACE::SubmitInfo48736     bool operator==( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48737     {
48738 #if defined( VULKAN_HPP_USE_REFLECT )
48739       return this->reflect() == rhs.reflect();
48740 #else
48741       return ( sType == rhs.sType )
48742           && ( pNext == rhs.pNext )
48743           && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
48744           && ( pWaitSemaphores == rhs.pWaitSemaphores )
48745           && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
48746           && ( commandBufferCount == rhs.commandBufferCount )
48747           && ( pCommandBuffers == rhs.pCommandBuffers )
48748           && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
48749           && ( pSignalSemaphores == rhs.pSignalSemaphores );
48750 #endif
48751     }
48752 
operator !=VULKAN_HPP_NAMESPACE::SubmitInfo48753     bool operator!=( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
48754     {
48755       return !operator==( rhs );
48756     }
48757 #endif
48758 
48759     public:
48760     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubmitInfo;
48761     const void * pNext = {};
48762     uint32_t waitSemaphoreCount = {};
48763     const VULKAN_HPP_NAMESPACE::Semaphore * pWaitSemaphores = {};
48764     const VULKAN_HPP_NAMESPACE::PipelineStageFlags * pWaitDstStageMask = {};
48765     uint32_t commandBufferCount = {};
48766     const VULKAN_HPP_NAMESPACE::CommandBuffer * pCommandBuffers = {};
48767     uint32_t signalSemaphoreCount = {};
48768     const VULKAN_HPP_NAMESPACE::Semaphore * pSignalSemaphores = {};
48769 
48770   };
48771 
48772   template <>
48773   struct CppType<StructureType, StructureType::eSubmitInfo>
48774   {
48775     using Type = SubmitInfo;
48776   };
48777 
48778   struct SubmitInfo2
48779   {
48780     using NativeType = VkSubmitInfo2;
48781 
48782     static const bool allowDuplicate = false;
48783     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubmitInfo2;
48784 
48785 
48786 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo248787 VULKAN_HPP_CONSTEXPR SubmitInfo2(VULKAN_HPP_NAMESPACE::SubmitFlags flags_ = {}, uint32_t waitSemaphoreInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pWaitSemaphoreInfos_ = {}, uint32_t commandBufferInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos_ = {}, uint32_t signalSemaphoreInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pSignalSemaphoreInfos_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
48788     : pNext( pNext_ ), flags( flags_ ), waitSemaphoreInfoCount( waitSemaphoreInfoCount_ ), pWaitSemaphoreInfos( pWaitSemaphoreInfos_ ), commandBufferInfoCount( commandBufferInfoCount_ ), pCommandBufferInfos( pCommandBufferInfos_ ), signalSemaphoreInfoCount( signalSemaphoreInfoCount_ ), pSignalSemaphoreInfos( pSignalSemaphoreInfos_ )
48789     {}
48790 
48791     VULKAN_HPP_CONSTEXPR SubmitInfo2( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48792 
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo248793     SubmitInfo2( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
48794       : SubmitInfo2( *reinterpret_cast<SubmitInfo2 const *>( &rhs ) )
48795     {}
48796 
48797 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SubmitInfo2VULKAN_HPP_NAMESPACE::SubmitInfo248798     SubmitInfo2( VULKAN_HPP_NAMESPACE::SubmitFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & waitSemaphoreInfos_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo> const & commandBufferInfos_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & signalSemaphoreInfos_ = {}, const void * pNext_ = nullptr )
48799     : pNext( pNext_ ), flags( flags_ ), waitSemaphoreInfoCount( static_cast<uint32_t>( waitSemaphoreInfos_.size() ) ), pWaitSemaphoreInfos( waitSemaphoreInfos_.data() ), commandBufferInfoCount( static_cast<uint32_t>( commandBufferInfos_.size() ) ), pCommandBufferInfos( commandBufferInfos_.data() ), signalSemaphoreInfoCount( static_cast<uint32_t>( signalSemaphoreInfos_.size() ) ), pSignalSemaphoreInfos( signalSemaphoreInfos_.data() )
48800     {}
48801 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48802 
48803 
48804     SubmitInfo2 & operator=( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48805 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48806 
operator =VULKAN_HPP_NAMESPACE::SubmitInfo248807     SubmitInfo2 & operator=( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT
48808     {
48809       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubmitInfo2 const *>( &rhs );
48810       return *this;
48811     }
48812 
48813 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubmitInfo248814     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48815     {
48816       pNext = pNext_;
48817       return *this;
48818     }
48819 
setFlagsVULKAN_HPP_NAMESPACE::SubmitInfo248820     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setFlags( VULKAN_HPP_NAMESPACE::SubmitFlags flags_ ) VULKAN_HPP_NOEXCEPT
48821     {
48822       flags = flags_;
48823       return *this;
48824     }
48825 
setWaitSemaphoreInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo248826     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setWaitSemaphoreInfoCount( uint32_t waitSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
48827     {
48828       waitSemaphoreInfoCount = waitSemaphoreInfoCount_;
48829       return *this;
48830     }
48831 
setPWaitSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo248832     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPWaitSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pWaitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
48833     {
48834       pWaitSemaphoreInfos = pWaitSemaphoreInfos_;
48835       return *this;
48836     }
48837 
48838 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo248839     SubmitInfo2 & setWaitSemaphoreInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & waitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
48840     {
48841       waitSemaphoreInfoCount = static_cast<uint32_t>( waitSemaphoreInfos_.size() );
48842       pWaitSemaphoreInfos = waitSemaphoreInfos_.data();
48843       return *this;
48844     }
48845 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48846 
setCommandBufferInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo248847     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setCommandBufferInfoCount( uint32_t commandBufferInfoCount_ ) VULKAN_HPP_NOEXCEPT
48848     {
48849       commandBufferInfoCount = commandBufferInfoCount_;
48850       return *this;
48851     }
48852 
setPCommandBufferInfosVULKAN_HPP_NAMESPACE::SubmitInfo248853     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPCommandBufferInfos( const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos_ ) VULKAN_HPP_NOEXCEPT
48854     {
48855       pCommandBufferInfos = pCommandBufferInfos_;
48856       return *this;
48857     }
48858 
48859 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setCommandBufferInfosVULKAN_HPP_NAMESPACE::SubmitInfo248860     SubmitInfo2 & setCommandBufferInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo> const & commandBufferInfos_ ) VULKAN_HPP_NOEXCEPT
48861     {
48862       commandBufferInfoCount = static_cast<uint32_t>( commandBufferInfos_.size() );
48863       pCommandBufferInfos = commandBufferInfos_.data();
48864       return *this;
48865     }
48866 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48867 
setSignalSemaphoreInfoCountVULKAN_HPP_NAMESPACE::SubmitInfo248868     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setSignalSemaphoreInfoCount( uint32_t signalSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT
48869     {
48870       signalSemaphoreInfoCount = signalSemaphoreInfoCount_;
48871       return *this;
48872     }
48873 
setPSignalSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo248874     VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPSignalSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pSignalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
48875     {
48876       pSignalSemaphoreInfos = pSignalSemaphoreInfos_;
48877       return *this;
48878     }
48879 
48880 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreInfosVULKAN_HPP_NAMESPACE::SubmitInfo248881     SubmitInfo2 & setSignalSemaphoreInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo> const & signalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT
48882     {
48883       signalSemaphoreInfoCount = static_cast<uint32_t>( signalSemaphoreInfos_.size() );
48884       pSignalSemaphoreInfos = signalSemaphoreInfos_.data();
48885       return *this;
48886     }
48887 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
48888 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
48889 
48890 
operator VkSubmitInfo2 const&VULKAN_HPP_NAMESPACE::SubmitInfo248891     operator VkSubmitInfo2 const &() const VULKAN_HPP_NOEXCEPT
48892     {
48893       return *reinterpret_cast<const VkSubmitInfo2*>( this );
48894     }
48895 
operator VkSubmitInfo2&VULKAN_HPP_NAMESPACE::SubmitInfo248896     operator VkSubmitInfo2 &() VULKAN_HPP_NOEXCEPT
48897     {
48898       return *reinterpret_cast<VkSubmitInfo2*>( this );
48899     }
48900 
48901 #if defined( VULKAN_HPP_USE_REFLECT )
48902 #if 14 <= VULKAN_HPP_CPP_VERSION
48903     auto
48904 #else
48905     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SubmitFlags const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * const &>
48906 #endif
reflectVULKAN_HPP_NAMESPACE::SubmitInfo248907       reflect() const VULKAN_HPP_NOEXCEPT
48908     {
48909       return std::tie( sType, pNext, flags, waitSemaphoreInfoCount, pWaitSemaphoreInfos, commandBufferInfoCount, pCommandBufferInfos, signalSemaphoreInfoCount, pSignalSemaphoreInfos );
48910     }
48911 #endif
48912 
48913 
48914 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
48915 auto operator<=>( SubmitInfo2 const & ) const = default;
48916 #else
operator ==VULKAN_HPP_NAMESPACE::SubmitInfo248917     bool operator==( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
48918     {
48919 #if defined( VULKAN_HPP_USE_REFLECT )
48920       return this->reflect() == rhs.reflect();
48921 #else
48922       return ( sType == rhs.sType )
48923           && ( pNext == rhs.pNext )
48924           && ( flags == rhs.flags )
48925           && ( waitSemaphoreInfoCount == rhs.waitSemaphoreInfoCount )
48926           && ( pWaitSemaphoreInfos == rhs.pWaitSemaphoreInfos )
48927           && ( commandBufferInfoCount == rhs.commandBufferInfoCount )
48928           && ( pCommandBufferInfos == rhs.pCommandBufferInfos )
48929           && ( signalSemaphoreInfoCount == rhs.signalSemaphoreInfoCount )
48930           && ( pSignalSemaphoreInfos == rhs.pSignalSemaphoreInfos );
48931 #endif
48932     }
48933 
operator !=VULKAN_HPP_NAMESPACE::SubmitInfo248934     bool operator!=( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT
48935     {
48936       return !operator==( rhs );
48937     }
48938 #endif
48939 
48940     public:
48941     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubmitInfo2;
48942     const void * pNext = {};
48943     VULKAN_HPP_NAMESPACE::SubmitFlags flags = {};
48944     uint32_t waitSemaphoreInfoCount = {};
48945     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pWaitSemaphoreInfos = {};
48946     uint32_t commandBufferInfoCount = {};
48947     const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo * pCommandBufferInfos = {};
48948     uint32_t signalSemaphoreInfoCount = {};
48949     const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo * pSignalSemaphoreInfos = {};
48950 
48951   };
48952 
48953   template <>
48954   struct CppType<StructureType, StructureType::eSubmitInfo2>
48955   {
48956     using Type = SubmitInfo2;
48957   };
48958   using SubmitInfo2KHR = SubmitInfo2;
48959 
48960   struct SubpassBeginInfo
48961   {
48962     using NativeType = VkSubpassBeginInfo;
48963 
48964     static const bool allowDuplicate = false;
48965     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassBeginInfo;
48966 
48967 
48968 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassBeginInfoVULKAN_HPP_NAMESPACE::SubpassBeginInfo48969 VULKAN_HPP_CONSTEXPR SubpassBeginInfo(VULKAN_HPP_NAMESPACE::SubpassContents contents_ = VULKAN_HPP_NAMESPACE::SubpassContents::eInline, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
48970     : pNext( pNext_ ), contents( contents_ )
48971     {}
48972 
48973     VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48974 
SubpassBeginInfoVULKAN_HPP_NAMESPACE::SubpassBeginInfo48975     SubpassBeginInfo( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48976       : SubpassBeginInfo( *reinterpret_cast<SubpassBeginInfo const *>( &rhs ) )
48977     {}
48978 
48979 
48980     SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
48981 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
48982 
operator =VULKAN_HPP_NAMESPACE::SubpassBeginInfo48983     SubpassBeginInfo & operator=( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT
48984     {
48985       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassBeginInfo const *>( &rhs );
48986       return *this;
48987     }
48988 
48989 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassBeginInfo48990     VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
48991     {
48992       pNext = pNext_;
48993       return *this;
48994     }
48995 
setContentsVULKAN_HPP_NAMESPACE::SubpassBeginInfo48996     VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setContents( VULKAN_HPP_NAMESPACE::SubpassContents contents_ ) VULKAN_HPP_NOEXCEPT
48997     {
48998       contents = contents_;
48999       return *this;
49000     }
49001 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49002 
49003 
operator VkSubpassBeginInfo const&VULKAN_HPP_NAMESPACE::SubpassBeginInfo49004     operator VkSubpassBeginInfo const &() const VULKAN_HPP_NOEXCEPT
49005     {
49006       return *reinterpret_cast<const VkSubpassBeginInfo*>( this );
49007     }
49008 
operator VkSubpassBeginInfo&VULKAN_HPP_NAMESPACE::SubpassBeginInfo49009     operator VkSubpassBeginInfo &() VULKAN_HPP_NOEXCEPT
49010     {
49011       return *reinterpret_cast<VkSubpassBeginInfo*>( this );
49012     }
49013 
49014 #if defined( VULKAN_HPP_USE_REFLECT )
49015 #if 14 <= VULKAN_HPP_CPP_VERSION
49016     auto
49017 #else
49018     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SubpassContents const &>
49019 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassBeginInfo49020       reflect() const VULKAN_HPP_NOEXCEPT
49021     {
49022       return std::tie( sType, pNext, contents );
49023     }
49024 #endif
49025 
49026 
49027 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49028 auto operator<=>( SubpassBeginInfo const & ) const = default;
49029 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassBeginInfo49030     bool operator==( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49031     {
49032 #if defined( VULKAN_HPP_USE_REFLECT )
49033       return this->reflect() == rhs.reflect();
49034 #else
49035       return ( sType == rhs.sType )
49036           && ( pNext == rhs.pNext )
49037           && ( contents == rhs.contents );
49038 #endif
49039     }
49040 
operator !=VULKAN_HPP_NAMESPACE::SubpassBeginInfo49041     bool operator!=( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49042     {
49043       return !operator==( rhs );
49044     }
49045 #endif
49046 
49047     public:
49048     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassBeginInfo;
49049     const void * pNext = {};
49050     VULKAN_HPP_NAMESPACE::SubpassContents contents = VULKAN_HPP_NAMESPACE::SubpassContents::eInline;
49051 
49052   };
49053 
49054   template <>
49055   struct CppType<StructureType, StructureType::eSubpassBeginInfo>
49056   {
49057     using Type = SubpassBeginInfo;
49058   };
49059   using SubpassBeginInfoKHR = SubpassBeginInfo;
49060 
49061   struct SubpassDescriptionDepthStencilResolve
49062   {
49063     using NativeType = VkSubpassDescriptionDepthStencilResolve;
49064 
49065     static const bool allowDuplicate = false;
49066     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDescriptionDepthStencilResolve;
49067 
49068 
49069 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassDescriptionDepthStencilResolveVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49070 VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve(VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone, VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
49071     : pNext( pNext_ ), depthResolveMode( depthResolveMode_ ), stencilResolveMode( stencilResolveMode_ ), pDepthStencilResolveAttachment( pDepthStencilResolveAttachment_ )
49072     {}
49073 
49074     VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49075 
SubpassDescriptionDepthStencilResolveVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49076     SubpassDescriptionDepthStencilResolve( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
49077       : SubpassDescriptionDepthStencilResolve( *reinterpret_cast<SubpassDescriptionDepthStencilResolve const *>( &rhs ) )
49078     {}
49079 
49080 
49081     SubpassDescriptionDepthStencilResolve & operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49082 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49083 
operator =VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49084     SubpassDescriptionDepthStencilResolve & operator=( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT
49085     {
49086       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve const *>( &rhs );
49087       return *this;
49088     }
49089 
49090 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49091     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49092     {
49093       pNext = pNext_;
49094       return *this;
49095     }
49096 
setDepthResolveModeVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49097     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setDepthResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ ) VULKAN_HPP_NOEXCEPT
49098     {
49099       depthResolveMode = depthResolveMode_;
49100       return *this;
49101     }
49102 
setStencilResolveModeVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49103     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setStencilResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ ) VULKAN_HPP_NOEXCEPT
49104     {
49105       stencilResolveMode = stencilResolveMode_;
49106       return *this;
49107     }
49108 
setPDepthStencilResolveAttachmentVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49109     VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPDepthStencilResolveAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment_ ) VULKAN_HPP_NOEXCEPT
49110     {
49111       pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_;
49112       return *this;
49113     }
49114 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49115 
49116 
operator VkSubpassDescriptionDepthStencilResolve const&VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49117     operator VkSubpassDescriptionDepthStencilResolve const &() const VULKAN_HPP_NOEXCEPT
49118     {
49119       return *reinterpret_cast<const VkSubpassDescriptionDepthStencilResolve*>( this );
49120     }
49121 
operator VkSubpassDescriptionDepthStencilResolve&VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49122     operator VkSubpassDescriptionDepthStencilResolve &() VULKAN_HPP_NOEXCEPT
49123     {
49124       return *reinterpret_cast<VkSubpassDescriptionDepthStencilResolve*>( this );
49125     }
49126 
49127 #if defined( VULKAN_HPP_USE_REFLECT )
49128 #if 14 <= VULKAN_HPP_CPP_VERSION
49129     auto
49130 #else
49131     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &, VULKAN_HPP_NAMESPACE::ResolveModeFlagBits const &, const VULKAN_HPP_NAMESPACE::AttachmentReference2 * const &>
49132 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49133       reflect() const VULKAN_HPP_NOEXCEPT
49134     {
49135       return std::tie( sType, pNext, depthResolveMode, stencilResolveMode, pDepthStencilResolveAttachment );
49136     }
49137 #endif
49138 
49139 
49140 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49141 auto operator<=>( SubpassDescriptionDepthStencilResolve const & ) const = default;
49142 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49143     bool operator==( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
49144     {
49145 #if defined( VULKAN_HPP_USE_REFLECT )
49146       return this->reflect() == rhs.reflect();
49147 #else
49148       return ( sType == rhs.sType )
49149           && ( pNext == rhs.pNext )
49150           && ( depthResolveMode == rhs.depthResolveMode )
49151           && ( stencilResolveMode == rhs.stencilResolveMode )
49152           && ( pDepthStencilResolveAttachment == rhs.pDepthStencilResolveAttachment );
49153 #endif
49154     }
49155 
operator !=VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve49156     bool operator!=( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT
49157     {
49158       return !operator==( rhs );
49159     }
49160 #endif
49161 
49162     public:
49163     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescriptionDepthStencilResolve;
49164     const void * pNext = {};
49165     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
49166     VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone;
49167     const VULKAN_HPP_NAMESPACE::AttachmentReference2 * pDepthStencilResolveAttachment = {};
49168 
49169   };
49170 
49171   template <>
49172   struct CppType<StructureType, StructureType::eSubpassDescriptionDepthStencilResolve>
49173   {
49174     using Type = SubpassDescriptionDepthStencilResolve;
49175   };
49176   using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve;
49177 
49178   struct SubpassEndInfo
49179   {
49180     using NativeType = VkSubpassEndInfo;
49181 
49182     static const bool allowDuplicate = false;
49183     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassEndInfo;
49184 
49185 
49186 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SubpassEndInfoVULKAN_HPP_NAMESPACE::SubpassEndInfo49187 VULKAN_HPP_CONSTEXPR SubpassEndInfo(const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
49188     : pNext( pNext_ )
49189     {}
49190 
49191     VULKAN_HPP_CONSTEXPR SubpassEndInfo( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49192 
SubpassEndInfoVULKAN_HPP_NAMESPACE::SubpassEndInfo49193     SubpassEndInfo( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
49194       : SubpassEndInfo( *reinterpret_cast<SubpassEndInfo const *>( &rhs ) )
49195     {}
49196 
49197 
49198     SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49199 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49200 
operator =VULKAN_HPP_NAMESPACE::SubpassEndInfo49201     SubpassEndInfo & operator=( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT
49202     {
49203       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SubpassEndInfo const *>( &rhs );
49204       return *this;
49205     }
49206 
49207 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SubpassEndInfo49208     VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49209     {
49210       pNext = pNext_;
49211       return *this;
49212     }
49213 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49214 
49215 
operator VkSubpassEndInfo const&VULKAN_HPP_NAMESPACE::SubpassEndInfo49216     operator VkSubpassEndInfo const &() const VULKAN_HPP_NOEXCEPT
49217     {
49218       return *reinterpret_cast<const VkSubpassEndInfo*>( this );
49219     }
49220 
operator VkSubpassEndInfo&VULKAN_HPP_NAMESPACE::SubpassEndInfo49221     operator VkSubpassEndInfo &() VULKAN_HPP_NOEXCEPT
49222     {
49223       return *reinterpret_cast<VkSubpassEndInfo*>( this );
49224     }
49225 
49226 #if defined( VULKAN_HPP_USE_REFLECT )
49227 #if 14 <= VULKAN_HPP_CPP_VERSION
49228     auto
49229 #else
49230     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &>
49231 #endif
reflectVULKAN_HPP_NAMESPACE::SubpassEndInfo49232       reflect() const VULKAN_HPP_NOEXCEPT
49233     {
49234       return std::tie( sType, pNext );
49235     }
49236 #endif
49237 
49238 
49239 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49240 auto operator<=>( SubpassEndInfo const & ) const = default;
49241 #else
operator ==VULKAN_HPP_NAMESPACE::SubpassEndInfo49242     bool operator==( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49243     {
49244 #if defined( VULKAN_HPP_USE_REFLECT )
49245       return this->reflect() == rhs.reflect();
49246 #else
49247       return ( sType == rhs.sType )
49248           && ( pNext == rhs.pNext );
49249 #endif
49250     }
49251 
operator !=VULKAN_HPP_NAMESPACE::SubpassEndInfo49252     bool operator!=( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
49253     {
49254       return !operator==( rhs );
49255     }
49256 #endif
49257 
49258     public:
49259     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassEndInfo;
49260     const void * pNext = {};
49261 
49262   };
49263 
49264   template <>
49265   struct CppType<StructureType, StructureType::eSubpassEndInfo>
49266   {
49267     using Type = SubpassEndInfo;
49268   };
49269   using SubpassEndInfoKHR = SubpassEndInfo;
49270 
49271   struct SurfaceCapabilities2EXT
49272   {
49273     using NativeType = VkSurfaceCapabilities2EXT;
49274 
49275     static const bool allowDuplicate = false;
49276     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilities2EXT;
49277 
49278 
49279 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilities2EXTVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT49280 VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT(uint32_t minImageCount_ = {}, uint32_t maxImageCount_ = {}, VULKAN_HPP_NAMESPACE::Extent2D currentExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D minImageExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent_ = {}, uint32_t maxImageArrayLayers_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {}, VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags_ = {}, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT supportedSurfaceCounters_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
49281     : pNext( pNext_ ), minImageCount( minImageCount_ ), maxImageCount( maxImageCount_ ), currentExtent( currentExtent_ ), minImageExtent( minImageExtent_ ), maxImageExtent( maxImageExtent_ ), maxImageArrayLayers( maxImageArrayLayers_ ), supportedTransforms( supportedTransforms_ ), currentTransform( currentTransform_ ), supportedCompositeAlpha( supportedCompositeAlpha_ ), supportedUsageFlags( supportedUsageFlags_ ), supportedSurfaceCounters( supportedSurfaceCounters_ )
49282     {}
49283 
49284     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49285 
SurfaceCapabilities2EXTVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT49286     SurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
49287       : SurfaceCapabilities2EXT( *reinterpret_cast<SurfaceCapabilities2EXT const *>( &rhs ) )
49288     {}
49289 
49290 
49291     SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49292 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49293 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT49294     SurfaceCapabilities2EXT & operator=( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
49295     {
49296       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT const *>( &rhs );
49297       return *this;
49298     }
49299 
49300 
operator VkSurfaceCapabilities2EXT const&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT49301     operator VkSurfaceCapabilities2EXT const &() const VULKAN_HPP_NOEXCEPT
49302     {
49303       return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>( this );
49304     }
49305 
operator VkSurfaceCapabilities2EXT&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT49306     operator VkSurfaceCapabilities2EXT &() VULKAN_HPP_NOEXCEPT
49307     {
49308       return *reinterpret_cast<VkSurfaceCapabilities2EXT*>( this );
49309     }
49310 
49311 #if defined( VULKAN_HPP_USE_REFLECT )
49312 #if 14 <= VULKAN_HPP_CPP_VERSION
49313     auto
49314 #else
49315     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT const &>
49316 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT49317       reflect() const VULKAN_HPP_NOEXCEPT
49318     {
49319       return std::tie( sType, pNext, minImageCount, maxImageCount, currentExtent, minImageExtent, maxImageExtent, maxImageArrayLayers, supportedTransforms, currentTransform, supportedCompositeAlpha, supportedUsageFlags, supportedSurfaceCounters );
49320     }
49321 #endif
49322 
49323 
49324 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49325 auto operator<=>( SurfaceCapabilities2EXT const & ) const = default;
49326 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT49327     bool operator==( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49328     {
49329 #if defined( VULKAN_HPP_USE_REFLECT )
49330       return this->reflect() == rhs.reflect();
49331 #else
49332       return ( sType == rhs.sType )
49333           && ( pNext == rhs.pNext )
49334           && ( minImageCount == rhs.minImageCount )
49335           && ( maxImageCount == rhs.maxImageCount )
49336           && ( currentExtent == rhs.currentExtent )
49337           && ( minImageExtent == rhs.minImageExtent )
49338           && ( maxImageExtent == rhs.maxImageExtent )
49339           && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
49340           && ( supportedTransforms == rhs.supportedTransforms )
49341           && ( currentTransform == rhs.currentTransform )
49342           && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
49343           && ( supportedUsageFlags == rhs.supportedUsageFlags )
49344           && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
49345 #endif
49346     }
49347 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT49348     bool operator!=( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49349     {
49350       return !operator==( rhs );
49351     }
49352 #endif
49353 
49354     public:
49355     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2EXT;
49356     void * pNext = {};
49357     uint32_t minImageCount = {};
49358     uint32_t maxImageCount = {};
49359     VULKAN_HPP_NAMESPACE::Extent2D currentExtent = {};
49360     VULKAN_HPP_NAMESPACE::Extent2D minImageExtent = {};
49361     VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent = {};
49362     uint32_t maxImageArrayLayers = {};
49363     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {};
49364     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
49365     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha = {};
49366     VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags = {};
49367     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT supportedSurfaceCounters = {};
49368 
49369   };
49370 
49371   template <>
49372   struct CppType<StructureType, StructureType::eSurfaceCapabilities2EXT>
49373   {
49374     using Type = SurfaceCapabilities2EXT;
49375   };
49376 
49377   struct SurfaceCapabilitiesKHR
49378   {
49379     using NativeType = VkSurfaceCapabilitiesKHR;
49380 
49381 
49382 
49383 
49384 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR49385 VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR(uint32_t minImageCount_ = {}, uint32_t maxImageCount_ = {}, VULKAN_HPP_NAMESPACE::Extent2D currentExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D minImageExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent_ = {}, uint32_t maxImageArrayLayers_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {}, VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags_ = {}) VULKAN_HPP_NOEXCEPT
49386     : minImageCount( minImageCount_ ), maxImageCount( maxImageCount_ ), currentExtent( currentExtent_ ), minImageExtent( minImageExtent_ ), maxImageExtent( maxImageExtent_ ), maxImageArrayLayers( maxImageArrayLayers_ ), supportedTransforms( supportedTransforms_ ), currentTransform( currentTransform_ ), supportedCompositeAlpha( supportedCompositeAlpha_ ), supportedUsageFlags( supportedUsageFlags_ )
49387     {}
49388 
49389     VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49390 
SurfaceCapabilitiesKHRVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR49391     SurfaceCapabilitiesKHR( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
49392       : SurfaceCapabilitiesKHR( *reinterpret_cast<SurfaceCapabilitiesKHR const *>( &rhs ) )
49393     {}
49394 
49395 
49396     SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49397 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49398 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR49399     SurfaceCapabilitiesKHR & operator=( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT
49400     {
49401       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const *>( &rhs );
49402       return *this;
49403     }
49404 
49405 
operator VkSurfaceCapabilitiesKHR const&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR49406     operator VkSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT
49407     {
49408       return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>( this );
49409     }
49410 
operator VkSurfaceCapabilitiesKHR&VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR49411     operator VkSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT
49412     {
49413       return *reinterpret_cast<VkSurfaceCapabilitiesKHR*>( this );
49414     }
49415 
49416 #if defined( VULKAN_HPP_USE_REFLECT )
49417 #if 14 <= VULKAN_HPP_CPP_VERSION
49418     auto
49419 #else
49420     std::tuple<uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &>
49421 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR49422       reflect() const VULKAN_HPP_NOEXCEPT
49423     {
49424       return std::tie( minImageCount, maxImageCount, currentExtent, minImageExtent, maxImageExtent, maxImageArrayLayers, supportedTransforms, currentTransform, supportedCompositeAlpha, supportedUsageFlags );
49425     }
49426 #endif
49427 
49428 
49429 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49430 auto operator<=>( SurfaceCapabilitiesKHR const & ) const = default;
49431 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR49432     bool operator==( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49433     {
49434 #if defined( VULKAN_HPP_USE_REFLECT )
49435       return this->reflect() == rhs.reflect();
49436 #else
49437       return ( minImageCount == rhs.minImageCount )
49438           && ( maxImageCount == rhs.maxImageCount )
49439           && ( currentExtent == rhs.currentExtent )
49440           && ( minImageExtent == rhs.minImageExtent )
49441           && ( maxImageExtent == rhs.maxImageExtent )
49442           && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
49443           && ( supportedTransforms == rhs.supportedTransforms )
49444           && ( currentTransform == rhs.currentTransform )
49445           && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
49446           && ( supportedUsageFlags == rhs.supportedUsageFlags );
49447 #endif
49448     }
49449 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR49450     bool operator!=( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49451     {
49452       return !operator==( rhs );
49453     }
49454 #endif
49455 
49456     public:
49457     uint32_t minImageCount = {};
49458     uint32_t maxImageCount = {};
49459     VULKAN_HPP_NAMESPACE::Extent2D currentExtent = {};
49460     VULKAN_HPP_NAMESPACE::Extent2D minImageExtent = {};
49461     VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent = {};
49462     uint32_t maxImageArrayLayers = {};
49463     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {};
49464     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
49465     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha = {};
49466     VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags = {};
49467 
49468   };
49469 
49470   struct SurfaceCapabilities2KHR
49471   {
49472     using NativeType = VkSurfaceCapabilities2KHR;
49473 
49474     static const bool allowDuplicate = false;
49475     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilities2KHR;
49476 
49477 
49478 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceCapabilities2KHRVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR49479 VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR(VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
49480     : pNext( pNext_ ), surfaceCapabilities( surfaceCapabilities_ )
49481     {}
49482 
49483     VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49484 
SurfaceCapabilities2KHRVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR49485     SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
49486       : SurfaceCapabilities2KHR( *reinterpret_cast<SurfaceCapabilities2KHR const *>( &rhs ) )
49487     {}
49488 
49489 
49490     SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49491 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49492 
operator =VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR49493     SurfaceCapabilities2KHR & operator=( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
49494     {
49495       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR const *>( &rhs );
49496       return *this;
49497     }
49498 
49499 
operator VkSurfaceCapabilities2KHR const&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR49500     operator VkSurfaceCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT
49501     {
49502       return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>( this );
49503     }
49504 
operator VkSurfaceCapabilities2KHR&VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR49505     operator VkSurfaceCapabilities2KHR &() VULKAN_HPP_NOEXCEPT
49506     {
49507       return *reinterpret_cast<VkSurfaceCapabilities2KHR*>( this );
49508     }
49509 
49510 #if defined( VULKAN_HPP_USE_REFLECT )
49511 #if 14 <= VULKAN_HPP_CPP_VERSION
49512     auto
49513 #else
49514     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const &>
49515 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR49516       reflect() const VULKAN_HPP_NOEXCEPT
49517     {
49518       return std::tie( sType, pNext, surfaceCapabilities );
49519     }
49520 #endif
49521 
49522 
49523 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49524 auto operator<=>( SurfaceCapabilities2KHR const & ) const = default;
49525 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR49526     bool operator==( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49527     {
49528 #if defined( VULKAN_HPP_USE_REFLECT )
49529       return this->reflect() == rhs.reflect();
49530 #else
49531       return ( sType == rhs.sType )
49532           && ( pNext == rhs.pNext )
49533           && ( surfaceCapabilities == rhs.surfaceCapabilities );
49534 #endif
49535     }
49536 
operator !=VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR49537     bool operator!=( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49538     {
49539       return !operator==( rhs );
49540     }
49541 #endif
49542 
49543     public:
49544     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2KHR;
49545     void * pNext = {};
49546     VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities = {};
49547 
49548   };
49549 
49550   template <>
49551   struct CppType<StructureType, StructureType::eSurfaceCapabilities2KHR>
49552   {
49553     using Type = SurfaceCapabilities2KHR;
49554   };
49555 
49556   struct SurfaceFormatKHR
49557   {
49558     using NativeType = VkSurfaceFormatKHR;
49559 
49560 
49561 
49562 
49563 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFormatKHRVULKAN_HPP_NAMESPACE::SurfaceFormatKHR49564 VULKAN_HPP_CONSTEXPR SurfaceFormatKHR(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace_ = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear) VULKAN_HPP_NOEXCEPT
49565     : format( format_ ), colorSpace( colorSpace_ )
49566     {}
49567 
49568     VULKAN_HPP_CONSTEXPR SurfaceFormatKHR( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49569 
SurfaceFormatKHRVULKAN_HPP_NAMESPACE::SurfaceFormatKHR49570     SurfaceFormatKHR( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
49571       : SurfaceFormatKHR( *reinterpret_cast<SurfaceFormatKHR const *>( &rhs ) )
49572     {}
49573 
49574 
49575     SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49576 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49577 
operator =VULKAN_HPP_NAMESPACE::SurfaceFormatKHR49578     SurfaceFormatKHR & operator=( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT
49579     {
49580       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const *>( &rhs );
49581       return *this;
49582     }
49583 
49584 
operator VkSurfaceFormatKHR const&VULKAN_HPP_NAMESPACE::SurfaceFormatKHR49585     operator VkSurfaceFormatKHR const &() const VULKAN_HPP_NOEXCEPT
49586     {
49587       return *reinterpret_cast<const VkSurfaceFormatKHR*>( this );
49588     }
49589 
operator VkSurfaceFormatKHR&VULKAN_HPP_NAMESPACE::SurfaceFormatKHR49590     operator VkSurfaceFormatKHR &() VULKAN_HPP_NOEXCEPT
49591     {
49592       return *reinterpret_cast<VkSurfaceFormatKHR*>( this );
49593     }
49594 
49595 #if defined( VULKAN_HPP_USE_REFLECT )
49596 #if 14 <= VULKAN_HPP_CPP_VERSION
49597     auto
49598 #else
49599     std::tuple<VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::ColorSpaceKHR const &>
49600 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFormatKHR49601       reflect() const VULKAN_HPP_NOEXCEPT
49602     {
49603       return std::tie( format, colorSpace );
49604     }
49605 #endif
49606 
49607 
49608 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49609 auto operator<=>( SurfaceFormatKHR const & ) const = default;
49610 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFormatKHR49611     bool operator==( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49612     {
49613 #if defined( VULKAN_HPP_USE_REFLECT )
49614       return this->reflect() == rhs.reflect();
49615 #else
49616       return ( format == rhs.format )
49617           && ( colorSpace == rhs.colorSpace );
49618 #endif
49619     }
49620 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFormatKHR49621     bool operator!=( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49622     {
49623       return !operator==( rhs );
49624     }
49625 #endif
49626 
49627     public:
49628     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
49629     VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear;
49630 
49631   };
49632 
49633   struct SurfaceFormat2KHR
49634   {
49635     using NativeType = VkSurfaceFormat2KHR;
49636 
49637     static const bool allowDuplicate = false;
49638     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceFormat2KHR;
49639 
49640 
49641 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SurfaceFormat2KHRVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR49642 VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR(VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
49643     : pNext( pNext_ ), surfaceFormat( surfaceFormat_ )
49644     {}
49645 
49646     VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49647 
SurfaceFormat2KHRVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR49648     SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
49649       : SurfaceFormat2KHR( *reinterpret_cast<SurfaceFormat2KHR const *>( &rhs ) )
49650     {}
49651 
49652 
49653     SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49654 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49655 
operator =VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR49656     SurfaceFormat2KHR & operator=( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT
49657     {
49658       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR const *>( &rhs );
49659       return *this;
49660     }
49661 
49662 
operator VkSurfaceFormat2KHR const&VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR49663     operator VkSurfaceFormat2KHR const &() const VULKAN_HPP_NOEXCEPT
49664     {
49665       return *reinterpret_cast<const VkSurfaceFormat2KHR*>( this );
49666     }
49667 
operator VkSurfaceFormat2KHR&VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR49668     operator VkSurfaceFormat2KHR &() VULKAN_HPP_NOEXCEPT
49669     {
49670       return *reinterpret_cast<VkSurfaceFormat2KHR*>( this );
49671     }
49672 
49673 #if defined( VULKAN_HPP_USE_REFLECT )
49674 #if 14 <= VULKAN_HPP_CPP_VERSION
49675     auto
49676 #else
49677     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const &>
49678 #endif
reflectVULKAN_HPP_NAMESPACE::SurfaceFormat2KHR49679       reflect() const VULKAN_HPP_NOEXCEPT
49680     {
49681       return std::tie( sType, pNext, surfaceFormat );
49682     }
49683 #endif
49684 
49685 
49686 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49687 auto operator<=>( SurfaceFormat2KHR const & ) const = default;
49688 #else
operator ==VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR49689     bool operator==( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49690     {
49691 #if defined( VULKAN_HPP_USE_REFLECT )
49692       return this->reflect() == rhs.reflect();
49693 #else
49694       return ( sType == rhs.sType )
49695           && ( pNext == rhs.pNext )
49696           && ( surfaceFormat == rhs.surfaceFormat );
49697 #endif
49698     }
49699 
operator !=VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR49700     bool operator!=( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49701     {
49702       return !operator==( rhs );
49703     }
49704 #endif
49705 
49706     public:
49707     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFormat2KHR;
49708     void * pNext = {};
49709     VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat = {};
49710 
49711   };
49712 
49713   template <>
49714   struct CppType<StructureType, StructureType::eSurfaceFormat2KHR>
49715   {
49716     using Type = SurfaceFormat2KHR;
49717   };
49718 
49719   struct SwapchainCounterCreateInfoEXT
49720   {
49721     using NativeType = VkSwapchainCounterCreateInfoEXT;
49722 
49723     static const bool allowDuplicate = false;
49724     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCounterCreateInfoEXT;
49725 
49726 
49727 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainCounterCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49728 VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT(VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
49729     : pNext( pNext_ ), surfaceCounters( surfaceCounters_ )
49730     {}
49731 
49732     VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49733 
SwapchainCounterCreateInfoEXTVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49734     SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
49735       : SwapchainCounterCreateInfoEXT( *reinterpret_cast<SwapchainCounterCreateInfoEXT const *>( &rhs ) )
49736     {}
49737 
49738 
49739     SwapchainCounterCreateInfoEXT & operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49740 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49741 
operator =VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49742     SwapchainCounterCreateInfoEXT & operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT
49743     {
49744       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT const *>( &rhs );
49745       return *this;
49746     }
49747 
49748 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49749     VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49750     {
49751       pNext = pNext_;
49752       return *this;
49753     }
49754 
setSurfaceCountersVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49755     VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & setSurfaceCounters( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ ) VULKAN_HPP_NOEXCEPT
49756     {
49757       surfaceCounters = surfaceCounters_;
49758       return *this;
49759     }
49760 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49761 
49762 
operator VkSwapchainCounterCreateInfoEXT const&VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49763     operator VkSwapchainCounterCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT
49764     {
49765       return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>( this );
49766     }
49767 
operator VkSwapchainCounterCreateInfoEXT&VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49768     operator VkSwapchainCounterCreateInfoEXT &() VULKAN_HPP_NOEXCEPT
49769     {
49770       return *reinterpret_cast<VkSwapchainCounterCreateInfoEXT*>( this );
49771     }
49772 
49773 #if defined( VULKAN_HPP_USE_REFLECT )
49774 #if 14 <= VULKAN_HPP_CPP_VERSION
49775     auto
49776 #else
49777     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT const &>
49778 #endif
reflectVULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49779       reflect() const VULKAN_HPP_NOEXCEPT
49780     {
49781       return std::tie( sType, pNext, surfaceCounters );
49782     }
49783 #endif
49784 
49785 
49786 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49787 auto operator<=>( SwapchainCounterCreateInfoEXT const & ) const = default;
49788 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49789     bool operator==( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49790     {
49791 #if defined( VULKAN_HPP_USE_REFLECT )
49792       return this->reflect() == rhs.reflect();
49793 #else
49794       return ( sType == rhs.sType )
49795           && ( pNext == rhs.pNext )
49796           && ( surfaceCounters == rhs.surfaceCounters );
49797 #endif
49798     }
49799 
operator !=VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT49800     bool operator!=( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
49801     {
49802       return !operator==( rhs );
49803     }
49804 #endif
49805 
49806     public:
49807     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT;
49808     const void * pNext = {};
49809     VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters = {};
49810 
49811   };
49812 
49813   template <>
49814   struct CppType<StructureType, StructureType::eSwapchainCounterCreateInfoEXT>
49815   {
49816     using Type = SwapchainCounterCreateInfoEXT;
49817   };
49818 
49819   struct SwapchainCreateInfoKHR
49820   {
49821     using NativeType = VkSwapchainCreateInfoKHR;
49822 
49823     static const bool allowDuplicate = false;
49824     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCreateInfoKHR;
49825 
49826 
49827 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49828 VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR(VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ = {}, VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {}, uint32_t minImageCount_ = {}, VULKAN_HPP_NAMESPACE::Format imageFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear, VULKAN_HPP_NAMESPACE::Extent2D imageExtent_ = {}, uint32_t imageArrayLayers_ = {}, VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ = {}, VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = {}, const uint32_t * pQueueFamilyIndices_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque, VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate, VULKAN_HPP_NAMESPACE::Bool32 clipped_ = {}, VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
49829     : pNext( pNext_ ), flags( flags_ ), surface( surface_ ), minImageCount( minImageCount_ ), imageFormat( imageFormat_ ), imageColorSpace( imageColorSpace_ ), imageExtent( imageExtent_ ), imageArrayLayers( imageArrayLayers_ ), imageUsage( imageUsage_ ), imageSharingMode( imageSharingMode_ ), queueFamilyIndexCount( queueFamilyIndexCount_ ), pQueueFamilyIndices( pQueueFamilyIndices_ ), preTransform( preTransform_ ), compositeAlpha( compositeAlpha_ ), presentMode( presentMode_ ), clipped( clipped_ ), oldSwapchain( oldSwapchain_ )
49830     {}
49831 
49832     VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49833 
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49834     SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
49835       : SwapchainCreateInfoKHR( *reinterpret_cast<SwapchainCreateInfoKHR const *>( &rhs ) )
49836     {}
49837 
49838 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
SwapchainCreateInfoKHRVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49839     SwapchainCreateInfoKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_, VULKAN_HPP_NAMESPACE::SurfaceKHR surface_, uint32_t minImageCount_, VULKAN_HPP_NAMESPACE::Format imageFormat_, VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_, VULKAN_HPP_NAMESPACE::Extent2D imageExtent_, uint32_t imageArrayLayers_, VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_, VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque, VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate, VULKAN_HPP_NAMESPACE::Bool32 clipped_ = {}, VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ = {}, const void * pNext_ = nullptr )
49840     : pNext( pNext_ ), flags( flags_ ), surface( surface_ ), minImageCount( minImageCount_ ), imageFormat( imageFormat_ ), imageColorSpace( imageColorSpace_ ), imageExtent( imageExtent_ ), imageArrayLayers( imageArrayLayers_ ), imageUsage( imageUsage_ ), imageSharingMode( imageSharingMode_ ), queueFamilyIndexCount( static_cast<uint32_t>( queueFamilyIndices_.size() ) ), pQueueFamilyIndices( queueFamilyIndices_.data() ), preTransform( preTransform_ ), compositeAlpha( compositeAlpha_ ), presentMode( presentMode_ ), clipped( clipped_ ), oldSwapchain( oldSwapchain_ )
49841     {}
49842 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49843 
49844 
49845     SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default;
49846 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
49847 
operator =VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49848     SwapchainCreateInfoKHR & operator=( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT
49849     {
49850       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const *>( &rhs );
49851       return *this;
49852     }
49853 
49854 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49855     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
49856     {
49857       pNext = pNext_;
49858       return *this;
49859     }
49860 
setFlagsVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49861     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT
49862     {
49863       flags = flags_;
49864       return *this;
49865     }
49866 
setSurfaceVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49867     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT
49868     {
49869       surface = surface_;
49870       return *this;
49871     }
49872 
setMinImageCountVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49873     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setMinImageCount( uint32_t minImageCount_ ) VULKAN_HPP_NOEXCEPT
49874     {
49875       minImageCount = minImageCount_;
49876       return *this;
49877     }
49878 
setImageFormatVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49879     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageFormat( VULKAN_HPP_NAMESPACE::Format imageFormat_ ) VULKAN_HPP_NOEXCEPT
49880     {
49881       imageFormat = imageFormat_;
49882       return *this;
49883     }
49884 
setImageColorSpaceVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49885     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageColorSpace( VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ ) VULKAN_HPP_NOEXCEPT
49886     {
49887       imageColorSpace = imageColorSpace_;
49888       return *this;
49889     }
49890 
setImageExtentVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49891     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT
49892     {
49893       imageExtent = imageExtent_;
49894       return *this;
49895     }
49896 
setImageArrayLayersVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49897     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageArrayLayers( uint32_t imageArrayLayers_ ) VULKAN_HPP_NOEXCEPT
49898     {
49899       imageArrayLayers = imageArrayLayers_;
49900       return *this;
49901     }
49902 
setImageUsageVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49903     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ ) VULKAN_HPP_NOEXCEPT
49904     {
49905       imageUsage = imageUsage_;
49906       return *this;
49907     }
49908 
setImageSharingModeVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49909     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageSharingMode( VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ ) VULKAN_HPP_NOEXCEPT
49910     {
49911       imageSharingMode = imageSharingMode_;
49912       return *this;
49913     }
49914 
setQueueFamilyIndexCountVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49915     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT
49916     {
49917       queueFamilyIndexCount = queueFamilyIndexCount_;
49918       return *this;
49919     }
49920 
setPQueueFamilyIndicesVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49921     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPQueueFamilyIndices( const uint32_t * pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
49922     {
49923       pQueueFamilyIndices = pQueueFamilyIndices_;
49924       return *this;
49925     }
49926 
49927 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setQueueFamilyIndicesVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49928     SwapchainCreateInfoKHR & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint32_t> const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT
49929     {
49930       queueFamilyIndexCount = static_cast<uint32_t>( queueFamilyIndices_.size() );
49931       pQueueFamilyIndices = queueFamilyIndices_.data();
49932       return *this;
49933     }
49934 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
49935 
setPreTransformVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49936     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPreTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ ) VULKAN_HPP_NOEXCEPT
49937     {
49938       preTransform = preTransform_;
49939       return *this;
49940     }
49941 
setCompositeAlphaVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49942     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setCompositeAlpha( VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ ) VULKAN_HPP_NOEXCEPT
49943     {
49944       compositeAlpha = compositeAlpha_;
49945       return *this;
49946     }
49947 
setPresentModeVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49948     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPresentMode( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ ) VULKAN_HPP_NOEXCEPT
49949     {
49950       presentMode = presentMode_;
49951       return *this;
49952     }
49953 
setClippedVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49954     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setClipped( VULKAN_HPP_NAMESPACE::Bool32 clipped_ ) VULKAN_HPP_NOEXCEPT
49955     {
49956       clipped = clipped_;
49957       return *this;
49958     }
49959 
setOldSwapchainVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49960     VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setOldSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ ) VULKAN_HPP_NOEXCEPT
49961     {
49962       oldSwapchain = oldSwapchain_;
49963       return *this;
49964     }
49965 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
49966 
49967 
operator VkSwapchainCreateInfoKHR const&VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49968     operator VkSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT
49969     {
49970       return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>( this );
49971     }
49972 
operator VkSwapchainCreateInfoKHR&VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49973     operator VkSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT
49974     {
49975       return *reinterpret_cast<VkSwapchainCreateInfoKHR*>( this );
49976     }
49977 
49978 #if defined( VULKAN_HPP_USE_REFLECT )
49979 #if 14 <= VULKAN_HPP_CPP_VERSION
49980     auto
49981 #else
49982     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR const &, VULKAN_HPP_NAMESPACE::SurfaceKHR const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Format const &, VULKAN_HPP_NAMESPACE::ColorSpaceKHR const &, VULKAN_HPP_NAMESPACE::Extent2D const &, uint32_t const &, VULKAN_HPP_NAMESPACE::ImageUsageFlags const &, VULKAN_HPP_NAMESPACE::SharingMode const &, uint32_t const &, const uint32_t * const &, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR const &, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR const &, VULKAN_HPP_NAMESPACE::PresentModeKHR const &, VULKAN_HPP_NAMESPACE::Bool32 const &, VULKAN_HPP_NAMESPACE::SwapchainKHR const &>
49983 #endif
reflectVULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49984       reflect() const VULKAN_HPP_NOEXCEPT
49985     {
49986       return std::tie( sType, pNext, flags, surface, minImageCount, imageFormat, imageColorSpace, imageExtent, imageArrayLayers, imageUsage, imageSharingMode, queueFamilyIndexCount, pQueueFamilyIndices, preTransform, compositeAlpha, presentMode, clipped, oldSwapchain );
49987     }
49988 #endif
49989 
49990 
49991 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
49992 auto operator<=>( SwapchainCreateInfoKHR const & ) const = default;
49993 #else
operator ==VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR49994     bool operator==( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
49995     {
49996 #if defined( VULKAN_HPP_USE_REFLECT )
49997       return this->reflect() == rhs.reflect();
49998 #else
49999       return ( sType == rhs.sType )
50000           && ( pNext == rhs.pNext )
50001           && ( flags == rhs.flags )
50002           && ( surface == rhs.surface )
50003           && ( minImageCount == rhs.minImageCount )
50004           && ( imageFormat == rhs.imageFormat )
50005           && ( imageColorSpace == rhs.imageColorSpace )
50006           && ( imageExtent == rhs.imageExtent )
50007           && ( imageArrayLayers == rhs.imageArrayLayers )
50008           && ( imageUsage == rhs.imageUsage )
50009           && ( imageSharingMode == rhs.imageSharingMode )
50010           && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
50011           && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
50012           && ( preTransform == rhs.preTransform )
50013           && ( compositeAlpha == rhs.compositeAlpha )
50014           && ( presentMode == rhs.presentMode )
50015           && ( clipped == rhs.clipped )
50016           && ( oldSwapchain == rhs.oldSwapchain );
50017 #endif
50018     }
50019 
operator !=VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR50020     bool operator!=( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT
50021     {
50022       return !operator==( rhs );
50023     }
50024 #endif
50025 
50026     public:
50027     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCreateInfoKHR;
50028     const void * pNext = {};
50029     VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags = {};
50030     VULKAN_HPP_NAMESPACE::SurfaceKHR surface = {};
50031     uint32_t minImageCount = {};
50032     VULKAN_HPP_NAMESPACE::Format imageFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined;
50033     VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear;
50034     VULKAN_HPP_NAMESPACE::Extent2D imageExtent = {};
50035     uint32_t imageArrayLayers = {};
50036     VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage = {};
50037     VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive;
50038     uint32_t queueFamilyIndexCount = {};
50039     const uint32_t * pQueueFamilyIndices = {};
50040     VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity;
50041     VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque;
50042     VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate;
50043     VULKAN_HPP_NAMESPACE::Bool32 clipped = {};
50044     VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain = {};
50045 
50046   };
50047 
50048   template <>
50049   struct CppType<StructureType, StructureType::eSwapchainCreateInfoKHR>
50050   {
50051     using Type = SwapchainCreateInfoKHR;
50052   };
50053 
50054   struct TimelineSemaphoreSubmitInfo
50055   {
50056     using NativeType = VkTimelineSemaphoreSubmitInfo;
50057 
50058     static const bool allowDuplicate = false;
50059     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTimelineSemaphoreSubmitInfo;
50060 
50061 
50062 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50063 VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo(uint32_t waitSemaphoreValueCount_ = {}, const uint64_t * pWaitSemaphoreValues_ = {}, uint32_t signalSemaphoreValueCount_ = {}, const uint64_t * pSignalSemaphoreValues_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
50064     : pNext( pNext_ ), waitSemaphoreValueCount( waitSemaphoreValueCount_ ), pWaitSemaphoreValues( pWaitSemaphoreValues_ ), signalSemaphoreValueCount( signalSemaphoreValueCount_ ), pSignalSemaphoreValues( pSignalSemaphoreValues_ )
50065     {}
50066 
50067     VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50068 
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50069     TimelineSemaphoreSubmitInfo( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50070       : TimelineSemaphoreSubmitInfo( *reinterpret_cast<TimelineSemaphoreSubmitInfo const *>( &rhs ) )
50071     {}
50072 
50073 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
TimelineSemaphoreSubmitInfoVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50074     TimelineSemaphoreSubmitInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ = {}, const void * pNext_ = nullptr )
50075     : pNext( pNext_ ), waitSemaphoreValueCount( static_cast<uint32_t>( waitSemaphoreValues_.size() ) ), pWaitSemaphoreValues( waitSemaphoreValues_.data() ), signalSemaphoreValueCount( static_cast<uint32_t>( signalSemaphoreValues_.size() ) ), pSignalSemaphoreValues( signalSemaphoreValues_.data() )
50076     {}
50077 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50078 
50079 
50080     TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50081 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50082 
operator =VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50083     TimelineSemaphoreSubmitInfo & operator=( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT
50084     {
50085       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo const *>( &rhs );
50086       return *this;
50087     }
50088 
50089 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50090     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50091     {
50092       pNext = pNext_;
50093       return *this;
50094     }
50095 
setWaitSemaphoreValueCountVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50096     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setWaitSemaphoreValueCount( uint32_t waitSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT
50097     {
50098       waitSemaphoreValueCount = waitSemaphoreValueCount_;
50099       return *this;
50100     }
50101 
setPWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50102     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPWaitSemaphoreValues( const uint64_t * pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
50103     {
50104       pWaitSemaphoreValues = pWaitSemaphoreValues_;
50105       return *this;
50106     }
50107 
50108 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setWaitSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50109     TimelineSemaphoreSubmitInfo & setWaitSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
50110     {
50111       waitSemaphoreValueCount = static_cast<uint32_t>( waitSemaphoreValues_.size() );
50112       pWaitSemaphoreValues = waitSemaphoreValues_.data();
50113       return *this;
50114     }
50115 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50116 
setSignalSemaphoreValueCountVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50117     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setSignalSemaphoreValueCount( uint32_t signalSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT
50118     {
50119       signalSemaphoreValueCount = signalSemaphoreValueCount_;
50120       return *this;
50121     }
50122 
setPSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50123     VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPSignalSemaphoreValues( const uint64_t * pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
50124     {
50125       pSignalSemaphoreValues = pSignalSemaphoreValues_;
50126       return *this;
50127     }
50128 
50129 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setSignalSemaphoreValuesVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50130     TimelineSemaphoreSubmitInfo & setSignalSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const uint64_t> const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT
50131     {
50132       signalSemaphoreValueCount = static_cast<uint32_t>( signalSemaphoreValues_.size() );
50133       pSignalSemaphoreValues = signalSemaphoreValues_.data();
50134       return *this;
50135     }
50136 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50137 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50138 
50139 
operator VkTimelineSemaphoreSubmitInfo const&VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50140     operator VkTimelineSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT
50141     {
50142       return *reinterpret_cast<const VkTimelineSemaphoreSubmitInfo*>( this );
50143     }
50144 
operator VkTimelineSemaphoreSubmitInfo&VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50145     operator VkTimelineSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT
50146     {
50147       return *reinterpret_cast<VkTimelineSemaphoreSubmitInfo*>( this );
50148     }
50149 
50150 #if defined( VULKAN_HPP_USE_REFLECT )
50151 #if 14 <= VULKAN_HPP_CPP_VERSION
50152     auto
50153 #else
50154     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const uint64_t * const &, uint32_t const &, const uint64_t * const &>
50155 #endif
reflectVULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50156       reflect() const VULKAN_HPP_NOEXCEPT
50157     {
50158       return std::tie( sType, pNext, waitSemaphoreValueCount, pWaitSemaphoreValues, signalSemaphoreValueCount, pSignalSemaphoreValues );
50159     }
50160 #endif
50161 
50162 
50163 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
50164 auto operator<=>( TimelineSemaphoreSubmitInfo const & ) const = default;
50165 #else
operator ==VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50166     bool operator==( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50167     {
50168 #if defined( VULKAN_HPP_USE_REFLECT )
50169       return this->reflect() == rhs.reflect();
50170 #else
50171       return ( sType == rhs.sType )
50172           && ( pNext == rhs.pNext )
50173           && ( waitSemaphoreValueCount == rhs.waitSemaphoreValueCount )
50174           && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
50175           && ( signalSemaphoreValueCount == rhs.signalSemaphoreValueCount )
50176           && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
50177 #endif
50178     }
50179 
operator !=VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo50180     bool operator!=( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT
50181     {
50182       return !operator==( rhs );
50183     }
50184 #endif
50185 
50186     public:
50187     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTimelineSemaphoreSubmitInfo;
50188     const void * pNext = {};
50189     uint32_t waitSemaphoreValueCount = {};
50190     const uint64_t * pWaitSemaphoreValues = {};
50191     uint32_t signalSemaphoreValueCount = {};
50192     const uint64_t * pSignalSemaphoreValues = {};
50193 
50194   };
50195 
50196   template <>
50197   struct CppType<StructureType, StructureType::eTimelineSemaphoreSubmitInfo>
50198   {
50199     using Type = TimelineSemaphoreSubmitInfo;
50200   };
50201   using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo;
50202 
50203   struct ValidationFeaturesEXT
50204   {
50205     using NativeType = VkValidationFeaturesEXT;
50206 
50207     static const bool allowDuplicate = false;
50208     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationFeaturesEXT;
50209 
50210 
50211 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50212 VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT(uint32_t enabledValidationFeatureCount_ = {}, const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures_ = {}, uint32_t disabledValidationFeatureCount_ = {}, const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
50213     : pNext( pNext_ ), enabledValidationFeatureCount( enabledValidationFeatureCount_ ), pEnabledValidationFeatures( pEnabledValidationFeatures_ ), disabledValidationFeatureCount( disabledValidationFeatureCount_ ), pDisabledValidationFeatures( pDisabledValidationFeatures_ )
50214     {}
50215 
50216     VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50217 
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50218     ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50219       : ValidationFeaturesEXT( *reinterpret_cast<ValidationFeaturesEXT const *>( &rhs ) )
50220     {}
50221 
50222 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
ValidationFeaturesEXTVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50223     ValidationFeaturesEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const & enabledValidationFeatures_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const & disabledValidationFeatures_ = {}, const void * pNext_ = nullptr )
50224     : pNext( pNext_ ), enabledValidationFeatureCount( static_cast<uint32_t>( enabledValidationFeatures_.size() ) ), pEnabledValidationFeatures( enabledValidationFeatures_.data() ), disabledValidationFeatureCount( static_cast<uint32_t>( disabledValidationFeatures_.size() ) ), pDisabledValidationFeatures( disabledValidationFeatures_.data() )
50225     {}
50226 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50227 
50228 
50229     ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50230 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50231 
operator =VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50232     ValidationFeaturesEXT & operator=( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT
50233     {
50234       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT const *>( &rhs );
50235       return *this;
50236     }
50237 
50238 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50239     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50240     {
50241       pNext = pNext_;
50242       return *this;
50243     }
50244 
setEnabledValidationFeatureCountVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50245     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT
50246     {
50247       enabledValidationFeatureCount = enabledValidationFeatureCount_;
50248       return *this;
50249     }
50250 
setPEnabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50251     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPEnabledValidationFeatures( const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
50252     {
50253       pEnabledValidationFeatures = pEnabledValidationFeatures_;
50254       return *this;
50255     }
50256 
50257 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setEnabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50258     ValidationFeaturesEXT & setEnabledValidationFeatures( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT> const & enabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
50259     {
50260       enabledValidationFeatureCount = static_cast<uint32_t>( enabledValidationFeatures_.size() );
50261       pEnabledValidationFeatures = enabledValidationFeatures_.data();
50262       return *this;
50263     }
50264 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50265 
setDisabledValidationFeatureCountVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50266     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT
50267     {
50268       disabledValidationFeatureCount = disabledValidationFeatureCount_;
50269       return *this;
50270     }
50271 
setPDisabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50272     VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPDisabledValidationFeatures( const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
50273     {
50274       pDisabledValidationFeatures = pDisabledValidationFeatures_;
50275       return *this;
50276     }
50277 
50278 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setDisabledValidationFeaturesVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50279     ValidationFeaturesEXT & setDisabledValidationFeatures( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT> const & disabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT
50280     {
50281       disabledValidationFeatureCount = static_cast<uint32_t>( disabledValidationFeatures_.size() );
50282       pDisabledValidationFeatures = disabledValidationFeatures_.data();
50283       return *this;
50284     }
50285 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50286 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50287 
50288 
operator VkValidationFeaturesEXT const&VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50289     operator VkValidationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT
50290     {
50291       return *reinterpret_cast<const VkValidationFeaturesEXT*>( this );
50292     }
50293 
operator VkValidationFeaturesEXT&VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50294     operator VkValidationFeaturesEXT &() VULKAN_HPP_NOEXCEPT
50295     {
50296       return *reinterpret_cast<VkValidationFeaturesEXT*>( this );
50297     }
50298 
50299 #if defined( VULKAN_HPP_USE_REFLECT )
50300 #if 14 <= VULKAN_HPP_CPP_VERSION
50301     auto
50302 #else
50303     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * const &, uint32_t const &, const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * const &>
50304 #endif
reflectVULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50305       reflect() const VULKAN_HPP_NOEXCEPT
50306     {
50307       return std::tie( sType, pNext, enabledValidationFeatureCount, pEnabledValidationFeatures, disabledValidationFeatureCount, pDisabledValidationFeatures );
50308     }
50309 #endif
50310 
50311 
50312 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
50313 auto operator<=>( ValidationFeaturesEXT const & ) const = default;
50314 #else
operator ==VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50315     bool operator==( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50316     {
50317 #if defined( VULKAN_HPP_USE_REFLECT )
50318       return this->reflect() == rhs.reflect();
50319 #else
50320       return ( sType == rhs.sType )
50321           && ( pNext == rhs.pNext )
50322           && ( enabledValidationFeatureCount == rhs.enabledValidationFeatureCount )
50323           && ( pEnabledValidationFeatures == rhs.pEnabledValidationFeatures )
50324           && ( disabledValidationFeatureCount == rhs.disabledValidationFeatureCount )
50325           && ( pDisabledValidationFeatures == rhs.pDisabledValidationFeatures );
50326 #endif
50327     }
50328 
operator !=VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT50329     bool operator!=( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50330     {
50331       return !operator==( rhs );
50332     }
50333 #endif
50334 
50335     public:
50336     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFeaturesEXT;
50337     const void * pNext = {};
50338     uint32_t enabledValidationFeatureCount = {};
50339     const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT * pEnabledValidationFeatures = {};
50340     uint32_t disabledValidationFeatureCount = {};
50341     const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT * pDisabledValidationFeatures = {};
50342 
50343   };
50344 
50345   template <>
50346   struct CppType<StructureType, StructureType::eValidationFeaturesEXT>
50347   {
50348     using Type = ValidationFeaturesEXT;
50349   };
50350 
50351   struct VertexInputAttributeDescription2EXT
50352   {
50353     using NativeType = VkVertexInputAttributeDescription2EXT;
50354 
50355     static const bool allowDuplicate = false;
50356     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVertexInputAttributeDescription2EXT;
50357 
50358 
50359 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputAttributeDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50360 VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT(uint32_t location_ = {}, uint32_t binding_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, uint32_t offset_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
50361     : pNext( pNext_ ), location( location_ ), binding( binding_ ), format( format_ ), offset( offset_ )
50362     {}
50363 
50364     VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50365 
VertexInputAttributeDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50366     VertexInputAttributeDescription2EXT( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
50367       : VertexInputAttributeDescription2EXT( *reinterpret_cast<VertexInputAttributeDescription2EXT const *>( &rhs ) )
50368     {}
50369 
50370 
50371     VertexInputAttributeDescription2EXT & operator=( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50372 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50373 
operator =VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50374     VertexInputAttributeDescription2EXT & operator=( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
50375     {
50376       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT const *>( &rhs );
50377       return *this;
50378     }
50379 
50380 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50381     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
50382     {
50383       pNext = pNext_;
50384       return *this;
50385     }
50386 
setLocationVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50387     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT
50388     {
50389       location = location_;
50390       return *this;
50391     }
50392 
setBindingVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50393     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
50394     {
50395       binding = binding_;
50396       return *this;
50397     }
50398 
setFormatVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50399     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT
50400     {
50401       format = format_;
50402       return *this;
50403     }
50404 
setOffsetVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50405     VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT
50406     {
50407       offset = offset_;
50408       return *this;
50409     }
50410 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50411 
50412 
operator VkVertexInputAttributeDescription2EXT const&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50413     operator VkVertexInputAttributeDescription2EXT const &() const VULKAN_HPP_NOEXCEPT
50414     {
50415       return *reinterpret_cast<const VkVertexInputAttributeDescription2EXT*>( this );
50416     }
50417 
operator VkVertexInputAttributeDescription2EXT&VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50418     operator VkVertexInputAttributeDescription2EXT &() VULKAN_HPP_NOEXCEPT
50419     {
50420       return *reinterpret_cast<VkVertexInputAttributeDescription2EXT*>( this );
50421     }
50422 
50423 #if defined( VULKAN_HPP_USE_REFLECT )
50424 #if 14 <= VULKAN_HPP_CPP_VERSION
50425     auto
50426 #else
50427     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::Format const &, uint32_t const &>
50428 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50429       reflect() const VULKAN_HPP_NOEXCEPT
50430     {
50431       return std::tie( sType, pNext, location, binding, format, offset );
50432     }
50433 #endif
50434 
50435 
50436 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
50437 auto operator<=>( VertexInputAttributeDescription2EXT const & ) const = default;
50438 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50439     bool operator==( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50440     {
50441 #if defined( VULKAN_HPP_USE_REFLECT )
50442       return this->reflect() == rhs.reflect();
50443 #else
50444       return ( sType == rhs.sType )
50445           && ( pNext == rhs.pNext )
50446           && ( location == rhs.location )
50447           && ( binding == rhs.binding )
50448           && ( format == rhs.format )
50449           && ( offset == rhs.offset );
50450 #endif
50451     }
50452 
operator !=VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT50453     bool operator!=( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50454     {
50455       return !operator==( rhs );
50456     }
50457 #endif
50458 
50459     public:
50460     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVertexInputAttributeDescription2EXT;
50461     void * pNext = {};
50462     uint32_t location = {};
50463     uint32_t binding = {};
50464     VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined;
50465     uint32_t offset = {};
50466 
50467   };
50468 
50469   template <>
50470   struct CppType<StructureType, StructureType::eVertexInputAttributeDescription2EXT>
50471   {
50472     using Type = VertexInputAttributeDescription2EXT;
50473   };
50474 
50475   struct VertexInputBindingDescription2EXT
50476   {
50477     using NativeType = VkVertexInputBindingDescription2EXT;
50478 
50479     static const bool allowDuplicate = false;
50480     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVertexInputBindingDescription2EXT;
50481 
50482 
50483 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
VertexInputBindingDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50484 VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT(uint32_t binding_ = {}, uint32_t stride_ = {}, VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex, uint32_t divisor_ = {}, void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
50485     : pNext( pNext_ ), binding( binding_ ), stride( stride_ ), inputRate( inputRate_ ), divisor( divisor_ )
50486     {}
50487 
50488     VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50489 
VertexInputBindingDescription2EXTVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50490     VertexInputBindingDescription2EXT( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
50491       : VertexInputBindingDescription2EXT( *reinterpret_cast<VertexInputBindingDescription2EXT const *>( &rhs ) )
50492     {}
50493 
50494 
50495     VertexInputBindingDescription2EXT & operator=( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50496 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50497 
operator =VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50498     VertexInputBindingDescription2EXT & operator=( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT
50499     {
50500       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT const *>( &rhs );
50501       return *this;
50502     }
50503 
50504 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50505     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setPNext( void * pNext_ ) VULKAN_HPP_NOEXCEPT
50506     {
50507       pNext = pNext_;
50508       return *this;
50509     }
50510 
setBindingVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50511     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT
50512     {
50513       binding = binding_;
50514       return *this;
50515     }
50516 
setStrideVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50517     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT
50518     {
50519       stride = stride_;
50520       return *this;
50521     }
50522 
setInputRateVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50523     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT
50524     {
50525       inputRate = inputRate_;
50526       return *this;
50527     }
50528 
setDivisorVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50529     VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT
50530     {
50531       divisor = divisor_;
50532       return *this;
50533     }
50534 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50535 
50536 
operator VkVertexInputBindingDescription2EXT const&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50537     operator VkVertexInputBindingDescription2EXT const &() const VULKAN_HPP_NOEXCEPT
50538     {
50539       return *reinterpret_cast<const VkVertexInputBindingDescription2EXT*>( this );
50540     }
50541 
operator VkVertexInputBindingDescription2EXT&VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50542     operator VkVertexInputBindingDescription2EXT &() VULKAN_HPP_NOEXCEPT
50543     {
50544       return *reinterpret_cast<VkVertexInputBindingDescription2EXT*>( this );
50545     }
50546 
50547 #if defined( VULKAN_HPP_USE_REFLECT )
50548 #if 14 <= VULKAN_HPP_CPP_VERSION
50549     auto
50550 #else
50551     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, void * const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::VertexInputRate const &, uint32_t const &>
50552 #endif
reflectVULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50553       reflect() const VULKAN_HPP_NOEXCEPT
50554     {
50555       return std::tie( sType, pNext, binding, stride, inputRate, divisor );
50556     }
50557 #endif
50558 
50559 
50560 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
50561 auto operator<=>( VertexInputBindingDescription2EXT const & ) const = default;
50562 #else
operator ==VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50563     bool operator==( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50564     {
50565 #if defined( VULKAN_HPP_USE_REFLECT )
50566       return this->reflect() == rhs.reflect();
50567 #else
50568       return ( sType == rhs.sType )
50569           && ( pNext == rhs.pNext )
50570           && ( binding == rhs.binding )
50571           && ( stride == rhs.stride )
50572           && ( inputRate == rhs.inputRate )
50573           && ( divisor == rhs.divisor );
50574 #endif
50575     }
50576 
operator !=VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT50577     bool operator!=( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT
50578     {
50579       return !operator==( rhs );
50580     }
50581 #endif
50582 
50583     public:
50584     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eVertexInputBindingDescription2EXT;
50585     void * pNext = {};
50586     uint32_t binding = {};
50587     uint32_t stride = {};
50588     VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex;
50589     uint32_t divisor = {};
50590 
50591   };
50592 
50593   template <>
50594   struct CppType<StructureType, StructureType::eVertexInputBindingDescription2EXT>
50595   {
50596     using Type = VertexInputBindingDescription2EXT;
50597   };
50598 
50599   struct WriteDescriptorSet
50600   {
50601     using NativeType = VkWriteDescriptorSet;
50602 
50603     static const bool allowDuplicate = false;
50604     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSet;
50605 
50606 
50607 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet50608 VULKAN_HPP_CONSTEXPR WriteDescriptorSet(VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ = {}, uint32_t dstBinding_ = {}, uint32_t dstArrayElement_ = {}, uint32_t descriptorCount_ = {}, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_ = {}, const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
50609     : pNext( pNext_ ), dstSet( dstSet_ ), dstBinding( dstBinding_ ), dstArrayElement( dstArrayElement_ ), descriptorCount( descriptorCount_ ), descriptorType( descriptorType_ ), pImageInfo( pImageInfo_ ), pBufferInfo( pBufferInfo_ ), pTexelBufferView( pTexelBufferView_ )
50610     {}
50611 
50612     VULKAN_HPP_CONSTEXPR WriteDescriptorSet( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50613 
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet50614     WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
50615       : WriteDescriptorSet( *reinterpret_cast<WriteDescriptorSet const *>( &rhs ) )
50616     {}
50617 
50618 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
WriteDescriptorSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet50619     WriteDescriptorSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_, uint32_t dstBinding_, uint32_t dstArrayElement_, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const & imageInfo_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const & bufferInfo_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const & texelBufferView_ = {}, const void * pNext_ = nullptr )
50620     : pNext( pNext_ ), dstSet( dstSet_ ), dstBinding( dstBinding_ ), dstArrayElement( dstArrayElement_ ), descriptorCount( static_cast<uint32_t>( !imageInfo_.empty() ? imageInfo_.size() : !bufferInfo_.empty() ? bufferInfo_.size() : texelBufferView_.size() ) ), descriptorType( descriptorType_ ), pImageInfo( imageInfo_.data() ), pBufferInfo( bufferInfo_.data() ), pTexelBufferView( texelBufferView_.data() )
50621     {
50622 #ifdef VULKAN_HPP_NO_EXCEPTIONS
50623       VULKAN_HPP_ASSERT( ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) <= 1);
50624 #else
50625       if ( 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) )
50626       {
50627         throw LogicError( VULKAN_HPP_NAMESPACE_STRING"::WriteDescriptorSet::WriteDescriptorSet: 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() )" );
50628       }
50629 #endif /*VULKAN_HPP_NO_EXCEPTIONS*/
50630     }
50631 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50632 
50633 
50634     WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50635 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50636 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSet50637     WriteDescriptorSet & operator=( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT
50638     {
50639       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSet const *>( &rhs );
50640       return *this;
50641     }
50642 
50643 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSet50644     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50645     {
50646       pNext = pNext_;
50647       return *this;
50648     }
50649 
setDstSetVULKAN_HPP_NAMESPACE::WriteDescriptorSet50650     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT
50651     {
50652       dstSet = dstSet_;
50653       return *this;
50654     }
50655 
setDstBindingVULKAN_HPP_NAMESPACE::WriteDescriptorSet50656     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT
50657     {
50658       dstBinding = dstBinding_;
50659       return *this;
50660     }
50661 
setDstArrayElementVULKAN_HPP_NAMESPACE::WriteDescriptorSet50662     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT
50663     {
50664       dstArrayElement = dstArrayElement_;
50665       return *this;
50666     }
50667 
setDescriptorCountVULKAN_HPP_NAMESPACE::WriteDescriptorSet50668     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT
50669     {
50670       descriptorCount = descriptorCount_;
50671       return *this;
50672     }
50673 
setDescriptorTypeVULKAN_HPP_NAMESPACE::WriteDescriptorSet50674     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT
50675     {
50676       descriptorType = descriptorType_;
50677       return *this;
50678     }
50679 
setPImageInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet50680     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPImageInfo( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo_ ) VULKAN_HPP_NOEXCEPT
50681     {
50682       pImageInfo = pImageInfo_;
50683       return *this;
50684     }
50685 
50686 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setImageInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet50687     WriteDescriptorSet & setImageInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorImageInfo> const & imageInfo_ ) VULKAN_HPP_NOEXCEPT
50688     {
50689       descriptorCount = static_cast<uint32_t>( imageInfo_.size() );
50690       pImageInfo = imageInfo_.data();
50691       return *this;
50692     }
50693 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50694 
setPBufferInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet50695     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPBufferInfo( const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo_ ) VULKAN_HPP_NOEXCEPT
50696     {
50697       pBufferInfo = pBufferInfo_;
50698       return *this;
50699     }
50700 
50701 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setBufferInfoVULKAN_HPP_NAMESPACE::WriteDescriptorSet50702     WriteDescriptorSet & setBufferInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo> const & bufferInfo_ ) VULKAN_HPP_NOEXCEPT
50703     {
50704       descriptorCount = static_cast<uint32_t>( bufferInfo_.size() );
50705       pBufferInfo = bufferInfo_.data();
50706       return *this;
50707     }
50708 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50709 
setPTexelBufferViewVULKAN_HPP_NAMESPACE::WriteDescriptorSet50710     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPTexelBufferView( const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView_ ) VULKAN_HPP_NOEXCEPT
50711     {
50712       pTexelBufferView = pTexelBufferView_;
50713       return *this;
50714     }
50715 
50716 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
setTexelBufferViewVULKAN_HPP_NAMESPACE::WriteDescriptorSet50717     WriteDescriptorSet & setTexelBufferView( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const VULKAN_HPP_NAMESPACE::BufferView> const & texelBufferView_ ) VULKAN_HPP_NOEXCEPT
50718     {
50719       descriptorCount = static_cast<uint32_t>( texelBufferView_.size() );
50720       pTexelBufferView = texelBufferView_.data();
50721       return *this;
50722     }
50723 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50724 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50725 
50726 
operator VkWriteDescriptorSet const&VULKAN_HPP_NAMESPACE::WriteDescriptorSet50727     operator VkWriteDescriptorSet const &() const VULKAN_HPP_NOEXCEPT
50728     {
50729       return *reinterpret_cast<const VkWriteDescriptorSet*>( this );
50730     }
50731 
operator VkWriteDescriptorSet&VULKAN_HPP_NAMESPACE::WriteDescriptorSet50732     operator VkWriteDescriptorSet &() VULKAN_HPP_NOEXCEPT
50733     {
50734       return *reinterpret_cast<VkWriteDescriptorSet*>( this );
50735     }
50736 
50737 #if defined( VULKAN_HPP_USE_REFLECT )
50738 #if 14 <= VULKAN_HPP_CPP_VERSION
50739     auto
50740 #else
50741     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, VULKAN_HPP_NAMESPACE::DescriptorSet const &, uint32_t const &, uint32_t const &, uint32_t const &, VULKAN_HPP_NAMESPACE::DescriptorType const &, const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * const &, const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * const &, const VULKAN_HPP_NAMESPACE::BufferView * const &>
50742 #endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSet50743       reflect() const VULKAN_HPP_NOEXCEPT
50744     {
50745       return std::tie( sType, pNext, dstSet, dstBinding, dstArrayElement, descriptorCount, descriptorType, pImageInfo, pBufferInfo, pTexelBufferView );
50746     }
50747 #endif
50748 
50749 
50750 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
50751 auto operator<=>( WriteDescriptorSet const & ) const = default;
50752 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSet50753     bool operator==( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
50754     {
50755 #if defined( VULKAN_HPP_USE_REFLECT )
50756       return this->reflect() == rhs.reflect();
50757 #else
50758       return ( sType == rhs.sType )
50759           && ( pNext == rhs.pNext )
50760           && ( dstSet == rhs.dstSet )
50761           && ( dstBinding == rhs.dstBinding )
50762           && ( dstArrayElement == rhs.dstArrayElement )
50763           && ( descriptorCount == rhs.descriptorCount )
50764           && ( descriptorType == rhs.descriptorType )
50765           && ( pImageInfo == rhs.pImageInfo )
50766           && ( pBufferInfo == rhs.pBufferInfo )
50767           && ( pTexelBufferView == rhs.pTexelBufferView );
50768 #endif
50769     }
50770 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSet50771     bool operator!=( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT
50772     {
50773       return !operator==( rhs );
50774     }
50775 #endif
50776 
50777     public:
50778     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSet;
50779     const void * pNext = {};
50780     VULKAN_HPP_NAMESPACE::DescriptorSet dstSet = {};
50781     uint32_t dstBinding = {};
50782     uint32_t dstArrayElement = {};
50783     uint32_t descriptorCount = {};
50784     VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler;
50785     const VULKAN_HPP_NAMESPACE::DescriptorImageInfo * pImageInfo = {};
50786     const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo * pBufferInfo = {};
50787     const VULKAN_HPP_NAMESPACE::BufferView * pTexelBufferView = {};
50788 
50789   };
50790 
50791   template <>
50792   struct CppType<StructureType, StructureType::eWriteDescriptorSet>
50793   {
50794     using Type = WriteDescriptorSet;
50795   };
50796 
50797   struct WriteDescriptorSetInlineUniformBlock
50798   {
50799     using NativeType = VkWriteDescriptorSetInlineUniformBlock;
50800 
50801     static const bool allowDuplicate = false;
50802     static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetInlineUniformBlock;
50803 
50804 
50805 #if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS )
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50806 VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlock(uint32_t dataSize_ = {}, const void * pData_ = {}, const void * pNext_ = nullptr) VULKAN_HPP_NOEXCEPT
50807     : pNext( pNext_ ), dataSize( dataSize_ ), pData( pData_ )
50808     {}
50809 
50810     VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlock( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50811 
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50812     WriteDescriptorSetInlineUniformBlock( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT
50813       : WriteDescriptorSetInlineUniformBlock( *reinterpret_cast<WriteDescriptorSetInlineUniformBlock const *>( &rhs ) )
50814     {}
50815 
50816 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
50817     template <typename T>
WriteDescriptorSetInlineUniformBlockVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50818     WriteDescriptorSetInlineUniformBlock( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_, const void * pNext_ = nullptr )
50819     : pNext( pNext_ ), dataSize( static_cast<uint32_t>( data_.size() * sizeof(T) ) ), pData( data_.data() )
50820     {}
50821 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50822 
50823 
50824     WriteDescriptorSetInlineUniformBlock & operator=( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default;
50825 #endif /*VULKAN_HPP_NO_STRUCT_CONSTRUCTORS*/
50826 
operator =VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50827     WriteDescriptorSetInlineUniformBlock & operator=( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT
50828     {
50829       *this = *reinterpret_cast<VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock const *>( &rhs );
50830       return *this;
50831     }
50832 
50833 #if !defined( VULKAN_HPP_NO_STRUCT_SETTERS )
setPNextVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50834     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPNext( const void * pNext_ ) VULKAN_HPP_NOEXCEPT
50835     {
50836       pNext = pNext_;
50837       return *this;
50838     }
50839 
setDataSizeVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50840     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setDataSize( uint32_t dataSize_ ) VULKAN_HPP_NOEXCEPT
50841     {
50842       dataSize = dataSize_;
50843       return *this;
50844     }
50845 
setPDataVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50846     VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPData( const void * pData_ ) VULKAN_HPP_NOEXCEPT
50847     {
50848       pData = pData_;
50849       return *this;
50850     }
50851 
50852 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
50853     template <typename T>
setDataVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50854     WriteDescriptorSetInlineUniformBlock & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries<const T> const & data_ ) VULKAN_HPP_NOEXCEPT
50855     {
50856       dataSize = static_cast<uint32_t>( data_.size() * sizeof(T) );
50857       pData = data_.data();
50858       return *this;
50859     }
50860 #endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
50861 #endif /*VULKAN_HPP_NO_STRUCT_SETTERS*/
50862 
50863 
operator VkWriteDescriptorSetInlineUniformBlock const&VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50864     operator VkWriteDescriptorSetInlineUniformBlock const &() const VULKAN_HPP_NOEXCEPT
50865     {
50866       return *reinterpret_cast<const VkWriteDescriptorSetInlineUniformBlock*>( this );
50867     }
50868 
operator VkWriteDescriptorSetInlineUniformBlock&VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50869     operator VkWriteDescriptorSetInlineUniformBlock &() VULKAN_HPP_NOEXCEPT
50870     {
50871       return *reinterpret_cast<VkWriteDescriptorSetInlineUniformBlock*>( this );
50872     }
50873 
50874 #if defined( VULKAN_HPP_USE_REFLECT )
50875 #if 14 <= VULKAN_HPP_CPP_VERSION
50876     auto
50877 #else
50878     std::tuple<VULKAN_HPP_NAMESPACE::StructureType const &, const void * const &, uint32_t const &, const void * const &>
50879 #endif
reflectVULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50880       reflect() const VULKAN_HPP_NOEXCEPT
50881     {
50882       return std::tie( sType, pNext, dataSize, pData );
50883     }
50884 #endif
50885 
50886 
50887 #if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR)
50888 auto operator<=>( WriteDescriptorSetInlineUniformBlock const & ) const = default;
50889 #else
operator ==VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50890     bool operator==( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT
50891     {
50892 #if defined( VULKAN_HPP_USE_REFLECT )
50893       return this->reflect() == rhs.reflect();
50894 #else
50895       return ( sType == rhs.sType )
50896           && ( pNext == rhs.pNext )
50897           && ( dataSize == rhs.dataSize )
50898           && ( pData == rhs.pData );
50899 #endif
50900     }
50901 
operator !=VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock50902     bool operator!=( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT
50903     {
50904       return !operator==( rhs );
50905     }
50906 #endif
50907 
50908     public:
50909     VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetInlineUniformBlock;
50910     const void * pNext = {};
50911     uint32_t dataSize = {};
50912     const void * pData = {};
50913 
50914   };
50915 
50916   template <>
50917   struct CppType<StructureType, StructureType::eWriteDescriptorSetInlineUniformBlock>
50918   {
50919     using Type = WriteDescriptorSetInlineUniformBlock;
50920   };
50921   using WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock;
50922 
50923 
50924 }   // namespace VULKAN_HPP_NAMESPACE
50925 #endif
50926