• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015-2022 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_HASH_HPP
9 #  define VULKAN_HASH_HPP
10 
11 #include <vulkan/vulkan.hpp>
12 
13 namespace std
14 {
15   //=======================================
16   //=== HASH structures for Flags types ===
17   //=======================================
18 
19   template <typename BitType>
20   struct hash<VULKAN_HPP_NAMESPACE::Flags<BitType>>
21   {
operator ()std::hash22     std::size_t operator()( VULKAN_HPP_NAMESPACE::Flags<BitType> const & flags ) const VULKAN_HPP_NOEXCEPT
23     {
24       return std::hash<typename std::underlying_type<BitType>::type>{}(
25         static_cast<typename std::underlying_type<BitType>::type>( flags ) );
26     }
27   };
28 
29 
30   //===================================
31   //=== HASH structures for handles ===
32   //===================================
33 
34 
35   //=== VK_VERSION_1_0 ===
36 
37   template <> struct hash<VULKAN_HPP_NAMESPACE::Instance>
38   {
operator ()std::hash39     std::size_t operator()(VULKAN_HPP_NAMESPACE::Instance const & instance) const VULKAN_HPP_NOEXCEPT
40     {
41       return std::hash<VkInstance>{}(static_cast<VkInstance>(instance));
42     }
43   };
44 
45   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevice>
46   {
operator ()std::hash47     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevice const & physicalDevice) const VULKAN_HPP_NOEXCEPT
48     {
49       return std::hash<VkPhysicalDevice>{}(static_cast<VkPhysicalDevice>(physicalDevice));
50     }
51   };
52 
53   template <> struct hash<VULKAN_HPP_NAMESPACE::Device>
54   {
operator ()std::hash55     std::size_t operator()(VULKAN_HPP_NAMESPACE::Device const & device) const VULKAN_HPP_NOEXCEPT
56     {
57       return std::hash<VkDevice>{}(static_cast<VkDevice>(device));
58     }
59   };
60 
61   template <> struct hash<VULKAN_HPP_NAMESPACE::Queue>
62   {
operator ()std::hash63     std::size_t operator()(VULKAN_HPP_NAMESPACE::Queue const & queue) const VULKAN_HPP_NOEXCEPT
64     {
65       return std::hash<VkQueue>{}(static_cast<VkQueue>(queue));
66     }
67   };
68 
69   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceMemory>
70   {
operator ()std::hash71     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceMemory const & deviceMemory) const VULKAN_HPP_NOEXCEPT
72     {
73       return std::hash<VkDeviceMemory>{}(static_cast<VkDeviceMemory>(deviceMemory));
74     }
75   };
76 
77   template <> struct hash<VULKAN_HPP_NAMESPACE::Fence>
78   {
operator ()std::hash79     std::size_t operator()(VULKAN_HPP_NAMESPACE::Fence const & fence) const VULKAN_HPP_NOEXCEPT
80     {
81       return std::hash<VkFence>{}(static_cast<VkFence>(fence));
82     }
83   };
84 
85   template <> struct hash<VULKAN_HPP_NAMESPACE::Semaphore>
86   {
operator ()std::hash87     std::size_t operator()(VULKAN_HPP_NAMESPACE::Semaphore const & semaphore) const VULKAN_HPP_NOEXCEPT
88     {
89       return std::hash<VkSemaphore>{}(static_cast<VkSemaphore>(semaphore));
90     }
91   };
92 
93   template <> struct hash<VULKAN_HPP_NAMESPACE::Event>
94   {
operator ()std::hash95     std::size_t operator()(VULKAN_HPP_NAMESPACE::Event const & event) const VULKAN_HPP_NOEXCEPT
96     {
97       return std::hash<VkEvent>{}(static_cast<VkEvent>(event));
98     }
99   };
100 
101   template <> struct hash<VULKAN_HPP_NAMESPACE::QueryPool>
102   {
operator ()std::hash103     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueryPool const & queryPool) const VULKAN_HPP_NOEXCEPT
104     {
105       return std::hash<VkQueryPool>{}(static_cast<VkQueryPool>(queryPool));
106     }
107   };
108 
109   template <> struct hash<VULKAN_HPP_NAMESPACE::Buffer>
110   {
operator ()std::hash111     std::size_t operator()(VULKAN_HPP_NAMESPACE::Buffer const & buffer) const VULKAN_HPP_NOEXCEPT
112     {
113       return std::hash<VkBuffer>{}(static_cast<VkBuffer>(buffer));
114     }
115   };
116 
117   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferView>
118   {
operator ()std::hash119     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferView const & bufferView) const VULKAN_HPP_NOEXCEPT
120     {
121       return std::hash<VkBufferView>{}(static_cast<VkBufferView>(bufferView));
122     }
123   };
124 
125   template <> struct hash<VULKAN_HPP_NAMESPACE::Image>
126   {
operator ()std::hash127     std::size_t operator()(VULKAN_HPP_NAMESPACE::Image const & image) const VULKAN_HPP_NOEXCEPT
128     {
129       return std::hash<VkImage>{}(static_cast<VkImage>(image));
130     }
131   };
132 
133   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageView>
134   {
operator ()std::hash135     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageView const & imageView) const VULKAN_HPP_NOEXCEPT
136     {
137       return std::hash<VkImageView>{}(static_cast<VkImageView>(imageView));
138     }
139   };
140 
141   template <> struct hash<VULKAN_HPP_NAMESPACE::ShaderModule>
142   {
operator ()std::hash143     std::size_t operator()(VULKAN_HPP_NAMESPACE::ShaderModule const & shaderModule) const VULKAN_HPP_NOEXCEPT
144     {
145       return std::hash<VkShaderModule>{}(static_cast<VkShaderModule>(shaderModule));
146     }
147   };
148 
149   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCache>
150   {
operator ()std::hash151     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCache const & pipelineCache) const VULKAN_HPP_NOEXCEPT
152     {
153       return std::hash<VkPipelineCache>{}(static_cast<VkPipelineCache>(pipelineCache));
154     }
155   };
156 
157   template <> struct hash<VULKAN_HPP_NAMESPACE::Pipeline>
158   {
operator ()std::hash159     std::size_t operator()(VULKAN_HPP_NAMESPACE::Pipeline const & pipeline) const VULKAN_HPP_NOEXCEPT
160     {
161       return std::hash<VkPipeline>{}(static_cast<VkPipeline>(pipeline));
162     }
163   };
164 
165   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineLayout>
166   {
operator ()std::hash167     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineLayout const & pipelineLayout) const VULKAN_HPP_NOEXCEPT
168     {
169       return std::hash<VkPipelineLayout>{}(static_cast<VkPipelineLayout>(pipelineLayout));
170     }
171   };
172 
173   template <> struct hash<VULKAN_HPP_NAMESPACE::Sampler>
174   {
operator ()std::hash175     std::size_t operator()(VULKAN_HPP_NAMESPACE::Sampler const & sampler) const VULKAN_HPP_NOEXCEPT
176     {
177       return std::hash<VkSampler>{}(static_cast<VkSampler>(sampler));
178     }
179   };
180 
181   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorPool>
182   {
operator ()std::hash183     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorPool const & descriptorPool) const VULKAN_HPP_NOEXCEPT
184     {
185       return std::hash<VkDescriptorPool>{}(static_cast<VkDescriptorPool>(descriptorPool));
186     }
187   };
188 
189   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSet>
190   {
operator ()std::hash191     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSet const & descriptorSet) const VULKAN_HPP_NOEXCEPT
192     {
193       return std::hash<VkDescriptorSet>{}(static_cast<VkDescriptorSet>(descriptorSet));
194     }
195   };
196 
197   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetLayout>
198   {
operator ()std::hash199     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & descriptorSetLayout) const VULKAN_HPP_NOEXCEPT
200     {
201       return std::hash<VkDescriptorSetLayout>{}(static_cast<VkDescriptorSetLayout>(descriptorSetLayout));
202     }
203   };
204 
205   template <> struct hash<VULKAN_HPP_NAMESPACE::Framebuffer>
206   {
operator ()std::hash207     std::size_t operator()(VULKAN_HPP_NAMESPACE::Framebuffer const & framebuffer) const VULKAN_HPP_NOEXCEPT
208     {
209       return std::hash<VkFramebuffer>{}(static_cast<VkFramebuffer>(framebuffer));
210     }
211   };
212 
213   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPass>
214   {
operator ()std::hash215     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPass const & renderPass) const VULKAN_HPP_NOEXCEPT
216     {
217       return std::hash<VkRenderPass>{}(static_cast<VkRenderPass>(renderPass));
218     }
219   };
220 
221   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandPool>
222   {
operator ()std::hash223     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandPool const & commandPool) const VULKAN_HPP_NOEXCEPT
224     {
225       return std::hash<VkCommandPool>{}(static_cast<VkCommandPool>(commandPool));
226     }
227   };
228 
229   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBuffer>
230   {
operator ()std::hash231     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBuffer const & commandBuffer) const VULKAN_HPP_NOEXCEPT
232     {
233       return std::hash<VkCommandBuffer>{}(static_cast<VkCommandBuffer>(commandBuffer));
234     }
235   };
236 
237   //=== VK_VERSION_1_1 ===
238 
239   template <> struct hash<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion>
240   {
operator ()std::hash241     std::size_t operator()(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & samplerYcbcrConversion) const VULKAN_HPP_NOEXCEPT
242     {
243       return std::hash<VkSamplerYcbcrConversion>{}(static_cast<VkSamplerYcbcrConversion>(samplerYcbcrConversion));
244     }
245   };
246 
247   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate>
248   {
operator ()std::hash249     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & descriptorUpdateTemplate) const VULKAN_HPP_NOEXCEPT
250     {
251       return std::hash<VkDescriptorUpdateTemplate>{}(static_cast<VkDescriptorUpdateTemplate>(descriptorUpdateTemplate));
252     }
253   };
254 
255   //=== VK_VERSION_1_3 ===
256 
257   template <> struct hash<VULKAN_HPP_NAMESPACE::PrivateDataSlot>
258   {
operator ()std::hash259     std::size_t operator()(VULKAN_HPP_NAMESPACE::PrivateDataSlot const & privateDataSlot) const VULKAN_HPP_NOEXCEPT
260     {
261       return std::hash<VkPrivateDataSlot>{}(static_cast<VkPrivateDataSlot>(privateDataSlot));
262     }
263   };
264 
265   //=== VK_KHR_surface ===
266 
267   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceKHR>
268   {
operator ()std::hash269     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceKHR const & surfaceKHR) const VULKAN_HPP_NOEXCEPT
270     {
271       return std::hash<VkSurfaceKHR>{}(static_cast<VkSurfaceKHR>(surfaceKHR));
272     }
273   };
274 
275   //=== VK_KHR_swapchain ===
276 
277   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainKHR>
278   {
operator ()std::hash279     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainKHR const & swapchainKHR) const VULKAN_HPP_NOEXCEPT
280     {
281       return std::hash<VkSwapchainKHR>{}(static_cast<VkSwapchainKHR>(swapchainKHR));
282     }
283   };
284 
285   //=== VK_KHR_display ===
286 
287   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayKHR>
288   {
operator ()std::hash289     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayKHR const & displayKHR) const VULKAN_HPP_NOEXCEPT
290     {
291       return std::hash<VkDisplayKHR>{}(static_cast<VkDisplayKHR>(displayKHR));
292     }
293   };
294 
295   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayModeKHR>
296   {
operator ()std::hash297     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayModeKHR const & displayModeKHR) const VULKAN_HPP_NOEXCEPT
298     {
299       return std::hash<VkDisplayModeKHR>{}(static_cast<VkDisplayModeKHR>(displayModeKHR));
300     }
301   };
302 
303   //=== VK_EXT_debug_report ===
304 
305   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT>
306   {
operator ()std::hash307     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & debugReportCallbackEXT) const VULKAN_HPP_NOEXCEPT
308     {
309       return std::hash<VkDebugReportCallbackEXT>{}(static_cast<VkDebugReportCallbackEXT>(debugReportCallbackEXT));
310     }
311   };
312 
313   //=== VK_KHR_video_queue ===
314 
315   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoSessionKHR>
316   {
operator ()std::hash317     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoSessionKHR const & videoSessionKHR) const VULKAN_HPP_NOEXCEPT
318     {
319       return std::hash<VkVideoSessionKHR>{}(static_cast<VkVideoSessionKHR>(videoSessionKHR));
320     }
321   };
322 
323   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR>
324   {
operator ()std::hash325     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & videoSessionParametersKHR) const VULKAN_HPP_NOEXCEPT
326     {
327       return std::hash<VkVideoSessionParametersKHR>{}(static_cast<VkVideoSessionParametersKHR>(videoSessionParametersKHR));
328     }
329   };
330 
331   //=== VK_NVX_binary_import ===
332 
333   template <> struct hash<VULKAN_HPP_NAMESPACE::CuModuleNVX>
334   {
operator ()std::hash335     std::size_t operator()(VULKAN_HPP_NAMESPACE::CuModuleNVX const & cuModuleNVX) const VULKAN_HPP_NOEXCEPT
336     {
337       return std::hash<VkCuModuleNVX>{}(static_cast<VkCuModuleNVX>(cuModuleNVX));
338     }
339   };
340 
341   template <> struct hash<VULKAN_HPP_NAMESPACE::CuFunctionNVX>
342   {
operator ()std::hash343     std::size_t operator()(VULKAN_HPP_NAMESPACE::CuFunctionNVX const & cuFunctionNVX) const VULKAN_HPP_NOEXCEPT
344     {
345       return std::hash<VkCuFunctionNVX>{}(static_cast<VkCuFunctionNVX>(cuFunctionNVX));
346     }
347   };
348 
349   //=== VK_EXT_debug_utils ===
350 
351   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT>
352   {
operator ()std::hash353     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & debugUtilsMessengerEXT) const VULKAN_HPP_NOEXCEPT
354     {
355       return std::hash<VkDebugUtilsMessengerEXT>{}(static_cast<VkDebugUtilsMessengerEXT>(debugUtilsMessengerEXT));
356     }
357   };
358 
359   //=== VK_KHR_acceleration_structure ===
360 
361   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureKHR>
362   {
operator ()std::hash363     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & accelerationStructureKHR) const VULKAN_HPP_NOEXCEPT
364     {
365       return std::hash<VkAccelerationStructureKHR>{}(static_cast<VkAccelerationStructureKHR>(accelerationStructureKHR));
366     }
367   };
368 
369   //=== VK_EXT_validation_cache ===
370 
371   template <> struct hash<VULKAN_HPP_NAMESPACE::ValidationCacheEXT>
372   {
operator ()std::hash373     std::size_t operator()(VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & validationCacheEXT) const VULKAN_HPP_NOEXCEPT
374     {
375       return std::hash<VkValidationCacheEXT>{}(static_cast<VkValidationCacheEXT>(validationCacheEXT));
376     }
377   };
378 
379   //=== VK_NV_ray_tracing ===
380 
381   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureNV>
382   {
operator ()std::hash383     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & accelerationStructureNV) const VULKAN_HPP_NOEXCEPT
384     {
385       return std::hash<VkAccelerationStructureNV>{}(static_cast<VkAccelerationStructureNV>(accelerationStructureNV));
386     }
387   };
388 
389   //=== VK_INTEL_performance_query ===
390 
391   template <> struct hash<VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL>
392   {
operator ()std::hash393     std::size_t operator()(VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & performanceConfigurationINTEL) const VULKAN_HPP_NOEXCEPT
394     {
395       return std::hash<VkPerformanceConfigurationINTEL>{}(static_cast<VkPerformanceConfigurationINTEL>(performanceConfigurationINTEL));
396     }
397   };
398 
399   //=== VK_KHR_deferred_host_operations ===
400 
401   template <> struct hash<VULKAN_HPP_NAMESPACE::DeferredOperationKHR>
402   {
operator ()std::hash403     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & deferredOperationKHR) const VULKAN_HPP_NOEXCEPT
404     {
405       return std::hash<VkDeferredOperationKHR>{}(static_cast<VkDeferredOperationKHR>(deferredOperationKHR));
406     }
407   };
408 
409   //=== VK_NV_device_generated_commands ===
410 
411   template <> struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV>
412   {
operator ()std::hash413     std::size_t operator()(VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & indirectCommandsLayoutNV) const VULKAN_HPP_NOEXCEPT
414     {
415       return std::hash<VkIndirectCommandsLayoutNV>{}(static_cast<VkIndirectCommandsLayoutNV>(indirectCommandsLayoutNV));
416     }
417   };
418 
419 #if defined( VK_USE_PLATFORM_FUCHSIA )
420   //=== VK_FUCHSIA_buffer_collection ===
421 
422   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA>
423   {
operator ()std::hash424     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const & bufferCollectionFUCHSIA) const VULKAN_HPP_NOEXCEPT
425     {
426       return std::hash<VkBufferCollectionFUCHSIA>{}(static_cast<VkBufferCollectionFUCHSIA>(bufferCollectionFUCHSIA));
427     }
428   };
429 #endif /*VK_USE_PLATFORM_FUCHSIA*/
430 
431   //=== VK_EXT_opacity_micromap ===
432 
433   template <> struct hash<VULKAN_HPP_NAMESPACE::MicromapEXT>
434   {
operator ()std::hash435     std::size_t operator()(VULKAN_HPP_NAMESPACE::MicromapEXT const & micromapEXT) const VULKAN_HPP_NOEXCEPT
436     {
437       return std::hash<VkMicromapEXT>{}(static_cast<VkMicromapEXT>(micromapEXT));
438     }
439   };
440 
441   //=== VK_NV_optical_flow ===
442 
443   template <> struct hash<VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV>
444   {
operator ()std::hash445     std::size_t operator()(VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV const & opticalFlowSessionNV) const VULKAN_HPP_NOEXCEPT
446     {
447       return std::hash<VkOpticalFlowSessionNV>{}(static_cast<VkOpticalFlowSessionNV>(opticalFlowSessionNV));
448     }
449   };
450 
451 
452 
453 #if 14 <= VULKAN_HPP_CPP_VERSION
454   //======================================
455   //=== HASH structures for structures ===
456   //======================================
457 
458 #  if !defined( VULKAN_HPP_HASH_COMBINE )
459 #    define VULKAN_HPP_HASH_COMBINE( seed, value ) \
460       seed ^= std::hash<std::decay<decltype( value )>::type>{}( value ) + 0x9e3779b9 + ( seed << 6 ) + ( seed >> 2 )
461 #  endif
462 
463 
464   template <> struct hash<VULKAN_HPP_NAMESPACE::AabbPositionsKHR>
465   {
operator ()std::hash466     std::size_t operator()(VULKAN_HPP_NAMESPACE::AabbPositionsKHR const & aabbPositionsKHR) const VULKAN_HPP_NOEXCEPT
467     {
468       std::size_t seed = 0;
469     VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minX );
470     VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minY );
471     VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minZ );
472     VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxX );
473     VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxY );
474     VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxZ );
475       return seed;
476     }
477   };
478 
479   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR>
480   {
operator ()std::hash481     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR const & accelerationStructureBuildRangeInfoKHR) const VULKAN_HPP_NOEXCEPT
482     {
483       std::size_t seed = 0;
484     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.primitiveCount );
485     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.primitiveOffset );
486     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.firstVertex );
487     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.transformOffset );
488       return seed;
489     }
490   };
491 
492   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR>
493   {
operator ()std::hash494     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR const & accelerationStructureBuildSizesInfoKHR) const VULKAN_HPP_NOEXCEPT
495     {
496       std::size_t seed = 0;
497     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.sType );
498     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.pNext );
499     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.accelerationStructureSize );
500     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.updateScratchSize );
501     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.buildScratchSize );
502       return seed;
503     }
504   };
505 
506   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT>
507   {
operator ()std::hash508     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT const & accelerationStructureCaptureDescriptorDataInfoEXT) const VULKAN_HPP_NOEXCEPT
509     {
510       std::size_t seed = 0;
511     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCaptureDescriptorDataInfoEXT.sType );
512     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCaptureDescriptorDataInfoEXT.pNext );
513     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCaptureDescriptorDataInfoEXT.accelerationStructure );
514     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCaptureDescriptorDataInfoEXT.accelerationStructureNV );
515       return seed;
516     }
517   };
518 
519   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR>
520   {
operator ()std::hash521     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & accelerationStructureCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
522     {
523       std::size_t seed = 0;
524     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.sType );
525     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.pNext );
526     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.createFlags );
527     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.buffer );
528     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.offset );
529     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.size );
530     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.type );
531     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.deviceAddress );
532       return seed;
533     }
534   };
535 
536   template <> struct hash<VULKAN_HPP_NAMESPACE::GeometryTrianglesNV>
537   {
operator ()std::hash538     std::size_t operator()(VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & geometryTrianglesNV) const VULKAN_HPP_NOEXCEPT
539     {
540       std::size_t seed = 0;
541     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.sType );
542     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.pNext );
543     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexData );
544     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexOffset );
545     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexCount );
546     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexStride );
547     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexFormat );
548     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexData );
549     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexOffset );
550     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexCount );
551     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexType );
552     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.transformData );
553     VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.transformOffset );
554       return seed;
555     }
556   };
557 
558   template <> struct hash<VULKAN_HPP_NAMESPACE::GeometryAABBNV>
559   {
operator ()std::hash560     std::size_t operator()(VULKAN_HPP_NAMESPACE::GeometryAABBNV const & geometryAABBNV) const VULKAN_HPP_NOEXCEPT
561     {
562       std::size_t seed = 0;
563     VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.sType );
564     VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.pNext );
565     VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.aabbData );
566     VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.numAABBs );
567     VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.stride );
568     VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.offset );
569       return seed;
570     }
571   };
572 
573   template <> struct hash<VULKAN_HPP_NAMESPACE::GeometryDataNV>
574   {
operator ()std::hash575     std::size_t operator()(VULKAN_HPP_NAMESPACE::GeometryDataNV const & geometryDataNV) const VULKAN_HPP_NOEXCEPT
576     {
577       std::size_t seed = 0;
578     VULKAN_HPP_HASH_COMBINE( seed, geometryDataNV.triangles );
579     VULKAN_HPP_HASH_COMBINE( seed, geometryDataNV.aabbs );
580       return seed;
581     }
582   };
583 
584   template <> struct hash<VULKAN_HPP_NAMESPACE::GeometryNV>
585   {
operator ()std::hash586     std::size_t operator()(VULKAN_HPP_NAMESPACE::GeometryNV const & geometryNV) const VULKAN_HPP_NOEXCEPT
587     {
588       std::size_t seed = 0;
589     VULKAN_HPP_HASH_COMBINE( seed, geometryNV.sType );
590     VULKAN_HPP_HASH_COMBINE( seed, geometryNV.pNext );
591     VULKAN_HPP_HASH_COMBINE( seed, geometryNV.geometryType );
592     VULKAN_HPP_HASH_COMBINE( seed, geometryNV.geometry );
593     VULKAN_HPP_HASH_COMBINE( seed, geometryNV.flags );
594       return seed;
595     }
596   };
597 
598   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV>
599   {
operator ()std::hash600     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const & accelerationStructureInfoNV) const VULKAN_HPP_NOEXCEPT
601     {
602       std::size_t seed = 0;
603     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.sType );
604     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.pNext );
605     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.type );
606     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.flags );
607     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.instanceCount );
608     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.geometryCount );
609     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.pGeometries );
610       return seed;
611     }
612   };
613 
614   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV>
615   {
operator ()std::hash616     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & accelerationStructureCreateInfoNV) const VULKAN_HPP_NOEXCEPT
617     {
618       std::size_t seed = 0;
619     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.sType );
620     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.pNext );
621     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.compactedSize );
622     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.info );
623       return seed;
624     }
625   };
626 
627   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR>
628   {
operator ()std::hash629     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR const & accelerationStructureDeviceAddressInfoKHR) const VULKAN_HPP_NOEXCEPT
630     {
631       std::size_t seed = 0;
632     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.sType );
633     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.pNext );
634     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.accelerationStructure );
635       return seed;
636     }
637   };
638 
639   template <> struct hash<VULKAN_HPP_NAMESPACE::TransformMatrixKHR>
640   {
operator ()std::hash641     std::size_t operator()(VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformMatrixKHR) const VULKAN_HPP_NOEXCEPT
642     {
643       std::size_t seed = 0;
644     for ( size_t i = 0; i < 3; ++i )
645     {
646       for ( size_t j=0; j < 4; ++j )
647       {
648         VULKAN_HPP_HASH_COMBINE( seed, transformMatrixKHR.matrix[i][j] );
649       }
650     }
651       return seed;
652     }
653   };
654 
655   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR>
656   {
operator ()std::hash657     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & accelerationStructureInstanceKHR) const VULKAN_HPP_NOEXCEPT
658     {
659       std::size_t seed = 0;
660     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.transform );
661     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.instanceCustomIndex );
662     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.mask );
663     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.instanceShaderBindingTableRecordOffset );
664     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.flags );
665     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.accelerationStructureReference );
666       return seed;
667     }
668   };
669 
670   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV>
671   {
operator ()std::hash672     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & accelerationStructureMatrixMotionInstanceNV) const VULKAN_HPP_NOEXCEPT
673     {
674       std::size_t seed = 0;
675     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.transformT0 );
676     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.transformT1 );
677     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.instanceCustomIndex );
678     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.mask );
679     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.instanceShaderBindingTableRecordOffset );
680     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.flags );
681     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.accelerationStructureReference );
682       return seed;
683     }
684   };
685 
686   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV>
687   {
operator ()std::hash688     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV const & accelerationStructureMemoryRequirementsInfoNV) const VULKAN_HPP_NOEXCEPT
689     {
690       std::size_t seed = 0;
691     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.sType );
692     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.pNext );
693     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.type );
694     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.accelerationStructure );
695       return seed;
696     }
697   };
698 
699   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV>
700   {
operator ()std::hash701     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV const & accelerationStructureMotionInfoNV) const VULKAN_HPP_NOEXCEPT
702     {
703       std::size_t seed = 0;
704     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.sType );
705     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.pNext );
706     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.maxInstances );
707     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.flags );
708       return seed;
709     }
710   };
711 
712   template <> struct hash<VULKAN_HPP_NAMESPACE::SRTDataNV>
713   {
operator ()std::hash714     std::size_t operator()(VULKAN_HPP_NAMESPACE::SRTDataNV const & sRTDataNV) const VULKAN_HPP_NOEXCEPT
715     {
716       std::size_t seed = 0;
717     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sx );
718     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.a );
719     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.b );
720     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvx );
721     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sy );
722     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.c );
723     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvy );
724     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sz );
725     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvz );
726     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qx );
727     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qy );
728     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qz );
729     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qw );
730     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.tx );
731     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.ty );
732     VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.tz );
733       return seed;
734     }
735   };
736 
737   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV>
738   {
operator ()std::hash739     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & accelerationStructureSRTMotionInstanceNV) const VULKAN_HPP_NOEXCEPT
740     {
741       std::size_t seed = 0;
742     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.transformT0 );
743     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.transformT1 );
744     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.instanceCustomIndex );
745     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.mask );
746     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.instanceShaderBindingTableRecordOffset );
747     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.flags );
748     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.accelerationStructureReference );
749       return seed;
750     }
751   };
752 
753   template <> struct hash<VULKAN_HPP_NAMESPACE::MicromapUsageEXT>
754   {
operator ()std::hash755     std::size_t operator()(VULKAN_HPP_NAMESPACE::MicromapUsageEXT const & micromapUsageEXT) const VULKAN_HPP_NOEXCEPT
756     {
757       std::size_t seed = 0;
758     VULKAN_HPP_HASH_COMBINE( seed, micromapUsageEXT.count );
759     VULKAN_HPP_HASH_COMBINE( seed, micromapUsageEXT.subdivisionLevel );
760     VULKAN_HPP_HASH_COMBINE( seed, micromapUsageEXT.format );
761       return seed;
762     }
763   };
764 
765   template <> struct hash<VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR>
766   {
operator ()std::hash767     std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR const & accelerationStructureVersionInfoKHR) const VULKAN_HPP_NOEXCEPT
768     {
769       std::size_t seed = 0;
770     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.sType );
771     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.pNext );
772     VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.pVersionData );
773       return seed;
774     }
775   };
776 
777   template <> struct hash<VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR>
778   {
operator ()std::hash779     std::size_t operator()(VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR const & acquireNextImageInfoKHR) const VULKAN_HPP_NOEXCEPT
780     {
781       std::size_t seed = 0;
782     VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.sType );
783     VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.pNext );
784     VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.swapchain );
785     VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.timeout );
786     VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.semaphore );
787     VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.fence );
788     VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.deviceMask );
789       return seed;
790     }
791   };
792 
793   template <> struct hash<VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR>
794   {
operator ()std::hash795     std::size_t operator()(VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR const & acquireProfilingLockInfoKHR) const VULKAN_HPP_NOEXCEPT
796     {
797       std::size_t seed = 0;
798     VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.sType );
799     VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.pNext );
800     VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.flags );
801     VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.timeout );
802       return seed;
803     }
804   };
805 
806   template <> struct hash<VULKAN_HPP_NAMESPACE::AllocationCallbacks>
807   {
operator ()std::hash808     std::size_t operator()(VULKAN_HPP_NAMESPACE::AllocationCallbacks const & allocationCallbacks) const VULKAN_HPP_NOEXCEPT
809     {
810       std::size_t seed = 0;
811     VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pUserData );
812     VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnAllocation );
813     VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnReallocation );
814     VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnFree );
815     VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnInternalAllocation );
816     VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnInternalFree );
817       return seed;
818     }
819   };
820 
821   template <> struct hash<VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC>
822   {
operator ()std::hash823     std::size_t operator()(VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC const & amigoProfilingSubmitInfoSEC) const VULKAN_HPP_NOEXCEPT
824     {
825       std::size_t seed = 0;
826     VULKAN_HPP_HASH_COMBINE( seed, amigoProfilingSubmitInfoSEC.sType );
827     VULKAN_HPP_HASH_COMBINE( seed, amigoProfilingSubmitInfoSEC.pNext );
828     VULKAN_HPP_HASH_COMBINE( seed, amigoProfilingSubmitInfoSEC.firstDrawTimestamp );
829     VULKAN_HPP_HASH_COMBINE( seed, amigoProfilingSubmitInfoSEC.swapBufferTimestamp );
830       return seed;
831     }
832   };
833 
834   template <> struct hash<VULKAN_HPP_NAMESPACE::ComponentMapping>
835   {
operator ()std::hash836     std::size_t operator()(VULKAN_HPP_NAMESPACE::ComponentMapping const & componentMapping) const VULKAN_HPP_NOEXCEPT
837     {
838       std::size_t seed = 0;
839     VULKAN_HPP_HASH_COMBINE( seed, componentMapping.r );
840     VULKAN_HPP_HASH_COMBINE( seed, componentMapping.g );
841     VULKAN_HPP_HASH_COMBINE( seed, componentMapping.b );
842     VULKAN_HPP_HASH_COMBINE( seed, componentMapping.a );
843       return seed;
844     }
845   };
846 
847   #if defined( VK_USE_PLATFORM_ANDROID_KHR )
848 template <> struct hash<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID>
849   {
operator ()std::hash850     std::size_t operator()(VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID const & androidHardwareBufferFormatProperties2ANDROID) const VULKAN_HPP_NOEXCEPT
851     {
852       std::size_t seed = 0;
853     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.sType );
854     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.pNext );
855     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.format );
856     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.externalFormat );
857     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.formatFeatures );
858     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.samplerYcbcrConversionComponents );
859     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYcbcrModel );
860     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYcbcrRange );
861     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedXChromaOffset );
862     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYChromaOffset );
863       return seed;
864     }
865   };
866 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
867 
868   #if defined( VK_USE_PLATFORM_ANDROID_KHR )
869 template <> struct hash<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID>
870   {
operator ()std::hash871     std::size_t operator()(VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID const & androidHardwareBufferFormatPropertiesANDROID) const VULKAN_HPP_NOEXCEPT
872     {
873       std::size_t seed = 0;
874     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.sType );
875     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.pNext );
876     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.format );
877     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.externalFormat );
878     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.formatFeatures );
879     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.samplerYcbcrConversionComponents );
880     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYcbcrModel );
881     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYcbcrRange );
882     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedXChromaOffset );
883     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYChromaOffset );
884       return seed;
885     }
886   };
887 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
888 
889   #if defined( VK_USE_PLATFORM_ANDROID_KHR )
890 template <> struct hash<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID>
891   {
operator ()std::hash892     std::size_t operator()(VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID const & androidHardwareBufferPropertiesANDROID) const VULKAN_HPP_NOEXCEPT
893     {
894       std::size_t seed = 0;
895     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.sType );
896     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.pNext );
897     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.allocationSize );
898     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.memoryTypeBits );
899       return seed;
900     }
901   };
902 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
903 
904   #if defined( VK_USE_PLATFORM_ANDROID_KHR )
905 template <> struct hash<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID>
906   {
operator ()std::hash907     std::size_t operator()(VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID const & androidHardwareBufferUsageANDROID) const VULKAN_HPP_NOEXCEPT
908     {
909       std::size_t seed = 0;
910     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.sType );
911     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.pNext );
912     VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.androidHardwareBufferUsage );
913       return seed;
914     }
915   };
916 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
917 
918   #if defined( VK_USE_PLATFORM_ANDROID_KHR )
919 template <> struct hash<VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR>
920   {
operator ()std::hash921     std::size_t operator()(VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const & androidSurfaceCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
922     {
923       std::size_t seed = 0;
924     VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.sType );
925     VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.pNext );
926     VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.flags );
927     VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.window );
928       return seed;
929     }
930   };
931 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
932 
933   template <> struct hash<VULKAN_HPP_NAMESPACE::ApplicationInfo>
934   {
operator ()std::hash935     std::size_t operator()(VULKAN_HPP_NAMESPACE::ApplicationInfo const & applicationInfo) const VULKAN_HPP_NOEXCEPT
936     {
937       std::size_t seed = 0;
938     VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.sType );
939     VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.pNext );
940     for ( const char* p = applicationInfo.pApplicationName; *p != '\0'; ++p )
941     {
942       VULKAN_HPP_HASH_COMBINE( seed, *p );
943     }
944     VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.applicationVersion );
945     for ( const char* p = applicationInfo.pEngineName; *p != '\0'; ++p )
946     {
947       VULKAN_HPP_HASH_COMBINE( seed, *p );
948     }
949     VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.engineVersion );
950     VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.apiVersion );
951       return seed;
952     }
953   };
954 
955   template <> struct hash<VULKAN_HPP_NAMESPACE::AttachmentDescription>
956   {
operator ()std::hash957     std::size_t operator()(VULKAN_HPP_NAMESPACE::AttachmentDescription const & attachmentDescription) const VULKAN_HPP_NOEXCEPT
958     {
959       std::size_t seed = 0;
960     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.flags );
961     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.format );
962     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.samples );
963     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.loadOp );
964     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.storeOp );
965     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.stencilLoadOp );
966     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.stencilStoreOp );
967     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.initialLayout );
968     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.finalLayout );
969       return seed;
970     }
971   };
972 
973   template <> struct hash<VULKAN_HPP_NAMESPACE::AttachmentDescription2>
974   {
operator ()std::hash975     std::size_t operator()(VULKAN_HPP_NAMESPACE::AttachmentDescription2 const & attachmentDescription2) const VULKAN_HPP_NOEXCEPT
976     {
977       std::size_t seed = 0;
978     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.sType );
979     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.pNext );
980     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.flags );
981     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.format );
982     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.samples );
983     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.loadOp );
984     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.storeOp );
985     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.stencilLoadOp );
986     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.stencilStoreOp );
987     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.initialLayout );
988     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.finalLayout );
989       return seed;
990     }
991   };
992 
993   template <> struct hash<VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout>
994   {
operator ()std::hash995     std::size_t operator()(VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout const & attachmentDescriptionStencilLayout) const VULKAN_HPP_NOEXCEPT
996     {
997       std::size_t seed = 0;
998     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.sType );
999     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.pNext );
1000     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.stencilInitialLayout );
1001     VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.stencilFinalLayout );
1002       return seed;
1003     }
1004   };
1005 
1006   template <> struct hash<VULKAN_HPP_NAMESPACE::AttachmentReference>
1007   {
operator ()std::hash1008     std::size_t operator()(VULKAN_HPP_NAMESPACE::AttachmentReference const & attachmentReference) const VULKAN_HPP_NOEXCEPT
1009     {
1010       std::size_t seed = 0;
1011     VULKAN_HPP_HASH_COMBINE( seed, attachmentReference.attachment );
1012     VULKAN_HPP_HASH_COMBINE( seed, attachmentReference.layout );
1013       return seed;
1014     }
1015   };
1016 
1017   template <> struct hash<VULKAN_HPP_NAMESPACE::AttachmentReference2>
1018   {
operator ()std::hash1019     std::size_t operator()(VULKAN_HPP_NAMESPACE::AttachmentReference2 const & attachmentReference2) const VULKAN_HPP_NOEXCEPT
1020     {
1021       std::size_t seed = 0;
1022     VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.sType );
1023     VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.pNext );
1024     VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.attachment );
1025     VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.layout );
1026     VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.aspectMask );
1027       return seed;
1028     }
1029   };
1030 
1031   template <> struct hash<VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout>
1032   {
operator ()std::hash1033     std::size_t operator()(VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout const & attachmentReferenceStencilLayout) const VULKAN_HPP_NOEXCEPT
1034     {
1035       std::size_t seed = 0;
1036     VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.sType );
1037     VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.pNext );
1038     VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.stencilLayout );
1039       return seed;
1040     }
1041   };
1042 
1043   template <> struct hash<VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD>
1044   {
operator ()std::hash1045     std::size_t operator()(VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD const & attachmentSampleCountInfoAMD) const VULKAN_HPP_NOEXCEPT
1046     {
1047       std::size_t seed = 0;
1048     VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.sType );
1049     VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.pNext );
1050     VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.colorAttachmentCount );
1051     VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.pColorAttachmentSamples );
1052     VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.depthStencilAttachmentSamples );
1053       return seed;
1054     }
1055   };
1056 
1057   template <> struct hash<VULKAN_HPP_NAMESPACE::Extent2D>
1058   {
operator ()std::hash1059     std::size_t operator()(VULKAN_HPP_NAMESPACE::Extent2D const & extent2D) const VULKAN_HPP_NOEXCEPT
1060     {
1061       std::size_t seed = 0;
1062     VULKAN_HPP_HASH_COMBINE( seed, extent2D.width );
1063     VULKAN_HPP_HASH_COMBINE( seed, extent2D.height );
1064       return seed;
1065     }
1066   };
1067 
1068   template <> struct hash<VULKAN_HPP_NAMESPACE::SampleLocationEXT>
1069   {
operator ()std::hash1070     std::size_t operator()(VULKAN_HPP_NAMESPACE::SampleLocationEXT const & sampleLocationEXT) const VULKAN_HPP_NOEXCEPT
1071     {
1072       std::size_t seed = 0;
1073     VULKAN_HPP_HASH_COMBINE( seed, sampleLocationEXT.x );
1074     VULKAN_HPP_HASH_COMBINE( seed, sampleLocationEXT.y );
1075       return seed;
1076     }
1077   };
1078 
1079   template <> struct hash<VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT>
1080   {
operator ()std::hash1081     std::size_t operator()(VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfoEXT) const VULKAN_HPP_NOEXCEPT
1082     {
1083       std::size_t seed = 0;
1084     VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sType );
1085     VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.pNext );
1086     VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationsPerPixel );
1087     VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationGridSize );
1088     VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationsCount );
1089     VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.pSampleLocations );
1090       return seed;
1091     }
1092   };
1093 
1094   template <> struct hash<VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT>
1095   {
operator ()std::hash1096     std::size_t operator()(VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT const & attachmentSampleLocationsEXT) const VULKAN_HPP_NOEXCEPT
1097     {
1098       std::size_t seed = 0;
1099     VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleLocationsEXT.attachmentIndex );
1100     VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleLocationsEXT.sampleLocationsInfo );
1101       return seed;
1102     }
1103   };
1104 
1105   template <> struct hash<VULKAN_HPP_NAMESPACE::BaseInStructure>
1106   {
operator ()std::hash1107     std::size_t operator()(VULKAN_HPP_NAMESPACE::BaseInStructure const & baseInStructure) const VULKAN_HPP_NOEXCEPT
1108     {
1109       std::size_t seed = 0;
1110     VULKAN_HPP_HASH_COMBINE( seed, baseInStructure.sType );
1111     VULKAN_HPP_HASH_COMBINE( seed, baseInStructure.pNext );
1112       return seed;
1113     }
1114   };
1115 
1116   template <> struct hash<VULKAN_HPP_NAMESPACE::BaseOutStructure>
1117   {
operator ()std::hash1118     std::size_t operator()(VULKAN_HPP_NAMESPACE::BaseOutStructure const & baseOutStructure) const VULKAN_HPP_NOEXCEPT
1119     {
1120       std::size_t seed = 0;
1121     VULKAN_HPP_HASH_COMBINE( seed, baseOutStructure.sType );
1122     VULKAN_HPP_HASH_COMBINE( seed, baseOutStructure.pNext );
1123       return seed;
1124     }
1125   };
1126 
1127   template <> struct hash<VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV>
1128   {
operator ()std::hash1129     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV const & bindAccelerationStructureMemoryInfoNV) const VULKAN_HPP_NOEXCEPT
1130     {
1131       std::size_t seed = 0;
1132     VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.sType );
1133     VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.pNext );
1134     VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.accelerationStructure );
1135     VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.memory );
1136     VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.memoryOffset );
1137     VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.deviceIndexCount );
1138     VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.pDeviceIndices );
1139       return seed;
1140     }
1141   };
1142 
1143   template <> struct hash<VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo>
1144   {
operator ()std::hash1145     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo const & bindBufferMemoryDeviceGroupInfo) const VULKAN_HPP_NOEXCEPT
1146     {
1147       std::size_t seed = 0;
1148     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.sType );
1149     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.pNext );
1150     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.deviceIndexCount );
1151     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.pDeviceIndices );
1152       return seed;
1153     }
1154   };
1155 
1156   template <> struct hash<VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo>
1157   {
operator ()std::hash1158     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo const & bindBufferMemoryInfo) const VULKAN_HPP_NOEXCEPT
1159     {
1160       std::size_t seed = 0;
1161     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.sType );
1162     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.pNext );
1163     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.buffer );
1164     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.memory );
1165     VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.memoryOffset );
1166       return seed;
1167     }
1168   };
1169 
1170   template <> struct hash<VULKAN_HPP_NAMESPACE::Offset2D>
1171   {
operator ()std::hash1172     std::size_t operator()(VULKAN_HPP_NAMESPACE::Offset2D const & offset2D) const VULKAN_HPP_NOEXCEPT
1173     {
1174       std::size_t seed = 0;
1175     VULKAN_HPP_HASH_COMBINE( seed, offset2D.x );
1176     VULKAN_HPP_HASH_COMBINE( seed, offset2D.y );
1177       return seed;
1178     }
1179   };
1180 
1181   template <> struct hash<VULKAN_HPP_NAMESPACE::Rect2D>
1182   {
operator ()std::hash1183     std::size_t operator()(VULKAN_HPP_NAMESPACE::Rect2D const & rect2D) const VULKAN_HPP_NOEXCEPT
1184     {
1185       std::size_t seed = 0;
1186     VULKAN_HPP_HASH_COMBINE( seed, rect2D.offset );
1187     VULKAN_HPP_HASH_COMBINE( seed, rect2D.extent );
1188       return seed;
1189     }
1190   };
1191 
1192   template <> struct hash<VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo>
1193   {
operator ()std::hash1194     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo const & bindImageMemoryDeviceGroupInfo) const VULKAN_HPP_NOEXCEPT
1195     {
1196       std::size_t seed = 0;
1197     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.sType );
1198     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pNext );
1199     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.deviceIndexCount );
1200     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pDeviceIndices );
1201     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.splitInstanceBindRegionCount );
1202     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pSplitInstanceBindRegions );
1203       return seed;
1204     }
1205   };
1206 
1207   template <> struct hash<VULKAN_HPP_NAMESPACE::BindImageMemoryInfo>
1208   {
operator ()std::hash1209     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindImageMemoryInfo const & bindImageMemoryInfo) const VULKAN_HPP_NOEXCEPT
1210     {
1211       std::size_t seed = 0;
1212     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.sType );
1213     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.pNext );
1214     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.image );
1215     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.memory );
1216     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.memoryOffset );
1217       return seed;
1218     }
1219   };
1220 
1221   template <> struct hash<VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR>
1222   {
operator ()std::hash1223     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR const & bindImageMemorySwapchainInfoKHR) const VULKAN_HPP_NOEXCEPT
1224     {
1225       std::size_t seed = 0;
1226     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.sType );
1227     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.pNext );
1228     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.swapchain );
1229     VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.imageIndex );
1230       return seed;
1231     }
1232   };
1233 
1234   template <> struct hash<VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo>
1235   {
operator ()std::hash1236     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo const & bindImagePlaneMemoryInfo) const VULKAN_HPP_NOEXCEPT
1237     {
1238       std::size_t seed = 0;
1239     VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.sType );
1240     VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.pNext );
1241     VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.planeAspect );
1242       return seed;
1243     }
1244   };
1245 
1246   template <> struct hash<VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV>
1247   {
operator ()std::hash1248     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV const & bindIndexBufferIndirectCommandNV) const VULKAN_HPP_NOEXCEPT
1249     {
1250       std::size_t seed = 0;
1251     VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.bufferAddress );
1252     VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.size );
1253     VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.indexType );
1254       return seed;
1255     }
1256   };
1257 
1258   template <> struct hash<VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV>
1259   {
operator ()std::hash1260     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV const & bindShaderGroupIndirectCommandNV) const VULKAN_HPP_NOEXCEPT
1261     {
1262       std::size_t seed = 0;
1263     VULKAN_HPP_HASH_COMBINE( seed, bindShaderGroupIndirectCommandNV.groupIndex );
1264       return seed;
1265     }
1266   };
1267 
1268   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseMemoryBind>
1269   {
operator ()std::hash1270     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseMemoryBind const & sparseMemoryBind) const VULKAN_HPP_NOEXCEPT
1271     {
1272       std::size_t seed = 0;
1273     VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.resourceOffset );
1274     VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.size );
1275     VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.memory );
1276     VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.memoryOffset );
1277     VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.flags );
1278       return seed;
1279     }
1280   };
1281 
1282   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo>
1283   {
operator ()std::hash1284     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo const & sparseBufferMemoryBindInfo) const VULKAN_HPP_NOEXCEPT
1285     {
1286       std::size_t seed = 0;
1287     VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.buffer );
1288     VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.bindCount );
1289     VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.pBinds );
1290       return seed;
1291     }
1292   };
1293 
1294   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo>
1295   {
operator ()std::hash1296     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo const & sparseImageOpaqueMemoryBindInfo) const VULKAN_HPP_NOEXCEPT
1297     {
1298       std::size_t seed = 0;
1299     VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.image );
1300     VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.bindCount );
1301     VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.pBinds );
1302       return seed;
1303     }
1304   };
1305 
1306   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageSubresource>
1307   {
operator ()std::hash1308     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageSubresource const & imageSubresource) const VULKAN_HPP_NOEXCEPT
1309     {
1310       std::size_t seed = 0;
1311     VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.aspectMask );
1312     VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.mipLevel );
1313     VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.arrayLayer );
1314       return seed;
1315     }
1316   };
1317 
1318   template <> struct hash<VULKAN_HPP_NAMESPACE::Offset3D>
1319   {
operator ()std::hash1320     std::size_t operator()(VULKAN_HPP_NAMESPACE::Offset3D const & offset3D) const VULKAN_HPP_NOEXCEPT
1321     {
1322       std::size_t seed = 0;
1323     VULKAN_HPP_HASH_COMBINE( seed, offset3D.x );
1324     VULKAN_HPP_HASH_COMBINE( seed, offset3D.y );
1325     VULKAN_HPP_HASH_COMBINE( seed, offset3D.z );
1326       return seed;
1327     }
1328   };
1329 
1330   template <> struct hash<VULKAN_HPP_NAMESPACE::Extent3D>
1331   {
operator ()std::hash1332     std::size_t operator()(VULKAN_HPP_NAMESPACE::Extent3D const & extent3D) const VULKAN_HPP_NOEXCEPT
1333     {
1334       std::size_t seed = 0;
1335     VULKAN_HPP_HASH_COMBINE( seed, extent3D.width );
1336     VULKAN_HPP_HASH_COMBINE( seed, extent3D.height );
1337     VULKAN_HPP_HASH_COMBINE( seed, extent3D.depth );
1338       return seed;
1339     }
1340   };
1341 
1342   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseImageMemoryBind>
1343   {
operator ()std::hash1344     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseImageMemoryBind const & sparseImageMemoryBind) const VULKAN_HPP_NOEXCEPT
1345     {
1346       std::size_t seed = 0;
1347     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.subresource );
1348     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.offset );
1349     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.extent );
1350     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.memory );
1351     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.memoryOffset );
1352     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.flags );
1353       return seed;
1354     }
1355   };
1356 
1357   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo>
1358   {
operator ()std::hash1359     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo const & sparseImageMemoryBindInfo) const VULKAN_HPP_NOEXCEPT
1360     {
1361       std::size_t seed = 0;
1362     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.image );
1363     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.bindCount );
1364     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.pBinds );
1365       return seed;
1366     }
1367   };
1368 
1369   template <> struct hash<VULKAN_HPP_NAMESPACE::BindSparseInfo>
1370   {
operator ()std::hash1371     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindSparseInfo const & bindSparseInfo) const VULKAN_HPP_NOEXCEPT
1372     {
1373       std::size_t seed = 0;
1374     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.sType );
1375     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pNext );
1376     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.waitSemaphoreCount );
1377     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pWaitSemaphores );
1378     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.bufferBindCount );
1379     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pBufferBinds );
1380     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.imageOpaqueBindCount );
1381     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pImageOpaqueBinds );
1382     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.imageBindCount );
1383     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pImageBinds );
1384     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.signalSemaphoreCount );
1385     VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pSignalSemaphores );
1386       return seed;
1387     }
1388   };
1389 
1390   template <> struct hash<VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV>
1391   {
operator ()std::hash1392     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV const & bindVertexBufferIndirectCommandNV) const VULKAN_HPP_NOEXCEPT
1393     {
1394       std::size_t seed = 0;
1395     VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.bufferAddress );
1396     VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.size );
1397     VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.stride );
1398       return seed;
1399     }
1400   };
1401 
1402   template <> struct hash<VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR>
1403   {
operator ()std::hash1404     std::size_t operator()(VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR const & bindVideoSessionMemoryInfoKHR) const VULKAN_HPP_NOEXCEPT
1405     {
1406       std::size_t seed = 0;
1407     VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.sType );
1408     VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.pNext );
1409     VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.memoryBindIndex );
1410     VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.memory );
1411     VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.memoryOffset );
1412     VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.memorySize );
1413       return seed;
1414     }
1415   };
1416 
1417   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageSubresourceLayers>
1418   {
operator ()std::hash1419     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresourceLayers) const VULKAN_HPP_NOEXCEPT
1420     {
1421       std::size_t seed = 0;
1422     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.aspectMask );
1423     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.mipLevel );
1424     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.baseArrayLayer );
1425     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.layerCount );
1426       return seed;
1427     }
1428   };
1429 
1430   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageBlit2>
1431   {
operator ()std::hash1432     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageBlit2 const & imageBlit2) const VULKAN_HPP_NOEXCEPT
1433     {
1434       std::size_t seed = 0;
1435     VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.sType );
1436     VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.pNext );
1437     VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.srcSubresource );
1438     for ( size_t i = 0; i < 2; ++i )
1439     {
1440       VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.srcOffsets[i] );
1441     }
1442     VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.dstSubresource );
1443     for ( size_t i = 0; i < 2; ++i )
1444     {
1445       VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.dstOffsets[i] );
1446     }
1447       return seed;
1448     }
1449   };
1450 
1451   template <> struct hash<VULKAN_HPP_NAMESPACE::BlitImageInfo2>
1452   {
operator ()std::hash1453     std::size_t operator()(VULKAN_HPP_NAMESPACE::BlitImageInfo2 const & blitImageInfo2) const VULKAN_HPP_NOEXCEPT
1454     {
1455       std::size_t seed = 0;
1456     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.sType );
1457     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.pNext );
1458     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.srcImage );
1459     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.srcImageLayout );
1460     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.dstImage );
1461     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.dstImageLayout );
1462     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.regionCount );
1463     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.pRegions );
1464     VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.filter );
1465       return seed;
1466     }
1467   };
1468 
1469   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT>
1470   {
operator ()std::hash1471     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT const & bufferCaptureDescriptorDataInfoEXT) const VULKAN_HPP_NOEXCEPT
1472     {
1473       std::size_t seed = 0;
1474     VULKAN_HPP_HASH_COMBINE( seed, bufferCaptureDescriptorDataInfoEXT.sType );
1475     VULKAN_HPP_HASH_COMBINE( seed, bufferCaptureDescriptorDataInfoEXT.pNext );
1476     VULKAN_HPP_HASH_COMBINE( seed, bufferCaptureDescriptorDataInfoEXT.buffer );
1477       return seed;
1478     }
1479   };
1480 
1481   #if defined( VK_USE_PLATFORM_FUCHSIA )
1482 template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA>
1483   {
operator ()std::hash1484     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA const & bufferCollectionBufferCreateInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
1485     {
1486       std::size_t seed = 0;
1487     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.sType );
1488     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.pNext );
1489     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.collection );
1490     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.index );
1491       return seed;
1492     }
1493   };
1494 #endif /*VK_USE_PLATFORM_FUCHSIA*/
1495 
1496   #if defined( VK_USE_PLATFORM_FUCHSIA )
1497 template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA>
1498   {
operator ()std::hash1499     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraintsInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
1500     {
1501       std::size_t seed = 0;
1502     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.sType );
1503     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.pNext );
1504     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCount );
1505     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.maxBufferCount );
1506     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForCamping );
1507     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForDedicatedSlack );
1508     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForSharedSlack );
1509       return seed;
1510     }
1511   };
1512 #endif /*VK_USE_PLATFORM_FUCHSIA*/
1513 
1514   #if defined( VK_USE_PLATFORM_FUCHSIA )
1515 template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA>
1516   {
operator ()std::hash1517     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const & bufferCollectionCreateInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
1518     {
1519       std::size_t seed = 0;
1520     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.sType );
1521     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.pNext );
1522     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.collectionToken );
1523       return seed;
1524     }
1525   };
1526 #endif /*VK_USE_PLATFORM_FUCHSIA*/
1527 
1528   #if defined( VK_USE_PLATFORM_FUCHSIA )
1529 template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA>
1530   {
operator ()std::hash1531     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA const & bufferCollectionImageCreateInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
1532     {
1533       std::size_t seed = 0;
1534     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.sType );
1535     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.pNext );
1536     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.collection );
1537     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.index );
1538       return seed;
1539     }
1540   };
1541 #endif /*VK_USE_PLATFORM_FUCHSIA*/
1542 
1543   #if defined( VK_USE_PLATFORM_FUCHSIA )
1544 template <> struct hash<VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA>
1545   {
operator ()std::hash1546     std::size_t operator()(VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const & sysmemColorSpaceFUCHSIA) const VULKAN_HPP_NOEXCEPT
1547     {
1548       std::size_t seed = 0;
1549     VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.sType );
1550     VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.pNext );
1551     VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.colorSpace );
1552       return seed;
1553     }
1554   };
1555 #endif /*VK_USE_PLATFORM_FUCHSIA*/
1556 
1557   #if defined( VK_USE_PLATFORM_FUCHSIA )
1558 template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA>
1559   {
operator ()std::hash1560     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA const & bufferCollectionPropertiesFUCHSIA) const VULKAN_HPP_NOEXCEPT
1561     {
1562       std::size_t seed = 0;
1563     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sType );
1564     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.pNext );
1565     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.memoryTypeBits );
1566     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.bufferCount );
1567     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.createInfoIndex );
1568     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sysmemPixelFormat );
1569     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.formatFeatures );
1570     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sysmemColorSpaceIndex );
1571     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.samplerYcbcrConversionComponents );
1572     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYcbcrModel );
1573     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYcbcrRange );
1574     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedXChromaOffset );
1575     VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYChromaOffset );
1576       return seed;
1577     }
1578   };
1579 #endif /*VK_USE_PLATFORM_FUCHSIA*/
1580 
1581   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCreateInfo>
1582   {
operator ()std::hash1583     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCreateInfo const & bufferCreateInfo) const VULKAN_HPP_NOEXCEPT
1584     {
1585       std::size_t seed = 0;
1586     VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.sType );
1587     VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.pNext );
1588     VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.flags );
1589     VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.size );
1590     VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.usage );
1591     VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.sharingMode );
1592     VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.queueFamilyIndexCount );
1593     VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.pQueueFamilyIndices );
1594       return seed;
1595     }
1596   };
1597 
1598   #if defined( VK_USE_PLATFORM_FUCHSIA )
1599 template <> struct hash<VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA>
1600   {
operator ()std::hash1601     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA const & bufferConstraintsInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
1602     {
1603       std::size_t seed = 0;
1604     VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.sType );
1605     VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.pNext );
1606     VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.createInfo );
1607     VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.requiredFormatFeatures );
1608     VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.bufferCollectionConstraints );
1609       return seed;
1610     }
1611   };
1612 #endif /*VK_USE_PLATFORM_FUCHSIA*/
1613 
1614   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCopy>
1615   {
operator ()std::hash1616     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCopy const & bufferCopy) const VULKAN_HPP_NOEXCEPT
1617     {
1618       std::size_t seed = 0;
1619     VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.srcOffset );
1620     VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.dstOffset );
1621     VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.size );
1622       return seed;
1623     }
1624   };
1625 
1626   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferCopy2>
1627   {
operator ()std::hash1628     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferCopy2 const & bufferCopy2) const VULKAN_HPP_NOEXCEPT
1629     {
1630       std::size_t seed = 0;
1631     VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.sType );
1632     VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.pNext );
1633     VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.srcOffset );
1634     VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.dstOffset );
1635     VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.size );
1636       return seed;
1637     }
1638   };
1639 
1640   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT>
1641   {
operator ()std::hash1642     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT const & bufferDeviceAddressCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
1643     {
1644       std::size_t seed = 0;
1645     VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.sType );
1646     VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.pNext );
1647     VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.deviceAddress );
1648       return seed;
1649     }
1650   };
1651 
1652   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo>
1653   {
operator ()std::hash1654     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo const & bufferDeviceAddressInfo) const VULKAN_HPP_NOEXCEPT
1655     {
1656       std::size_t seed = 0;
1657     VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.sType );
1658     VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.pNext );
1659     VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.buffer );
1660       return seed;
1661     }
1662   };
1663 
1664   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferImageCopy>
1665   {
operator ()std::hash1666     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferImageCopy const & bufferImageCopy) const VULKAN_HPP_NOEXCEPT
1667     {
1668       std::size_t seed = 0;
1669     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferOffset );
1670     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferRowLength );
1671     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferImageHeight );
1672     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageSubresource );
1673     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageOffset );
1674     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageExtent );
1675       return seed;
1676     }
1677   };
1678 
1679   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferImageCopy2>
1680   {
operator ()std::hash1681     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferImageCopy2 const & bufferImageCopy2) const VULKAN_HPP_NOEXCEPT
1682     {
1683       std::size_t seed = 0;
1684     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.sType );
1685     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.pNext );
1686     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferOffset );
1687     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferRowLength );
1688     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferImageHeight );
1689     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageSubresource );
1690     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageOffset );
1691     VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageExtent );
1692       return seed;
1693     }
1694   };
1695 
1696   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier>
1697   {
operator ()std::hash1698     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferMemoryBarrier const & bufferMemoryBarrier) const VULKAN_HPP_NOEXCEPT
1699     {
1700       std::size_t seed = 0;
1701     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.sType );
1702     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.pNext );
1703     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.srcAccessMask );
1704     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.dstAccessMask );
1705     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.srcQueueFamilyIndex );
1706     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.dstQueueFamilyIndex );
1707     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.buffer );
1708     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.offset );
1709     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.size );
1710       return seed;
1711     }
1712   };
1713 
1714   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2>
1715   {
operator ()std::hash1716     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 const & bufferMemoryBarrier2) const VULKAN_HPP_NOEXCEPT
1717     {
1718       std::size_t seed = 0;
1719     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.sType );
1720     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.pNext );
1721     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcStageMask );
1722     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcAccessMask );
1723     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstStageMask );
1724     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstAccessMask );
1725     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcQueueFamilyIndex );
1726     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstQueueFamilyIndex );
1727     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.buffer );
1728     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.offset );
1729     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.size );
1730       return seed;
1731     }
1732   };
1733 
1734   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2>
1735   {
operator ()std::hash1736     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 const & bufferMemoryRequirementsInfo2) const VULKAN_HPP_NOEXCEPT
1737     {
1738       std::size_t seed = 0;
1739     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.sType );
1740     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.pNext );
1741     VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.buffer );
1742       return seed;
1743     }
1744   };
1745 
1746   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo>
1747   {
operator ()std::hash1748     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo const & bufferOpaqueCaptureAddressCreateInfo) const VULKAN_HPP_NOEXCEPT
1749     {
1750       std::size_t seed = 0;
1751     VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.sType );
1752     VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.pNext );
1753     VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.opaqueCaptureAddress );
1754       return seed;
1755     }
1756   };
1757 
1758   template <> struct hash<VULKAN_HPP_NAMESPACE::BufferViewCreateInfo>
1759   {
operator ()std::hash1760     std::size_t operator()(VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & bufferViewCreateInfo) const VULKAN_HPP_NOEXCEPT
1761     {
1762       std::size_t seed = 0;
1763     VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.sType );
1764     VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.pNext );
1765     VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.flags );
1766     VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.buffer );
1767     VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.format );
1768     VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.offset );
1769     VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.range );
1770       return seed;
1771     }
1772   };
1773 
1774   template <> struct hash<VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT>
1775   {
operator ()std::hash1776     std::size_t operator()(VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT const & calibratedTimestampInfoEXT) const VULKAN_HPP_NOEXCEPT
1777     {
1778       std::size_t seed = 0;
1779     VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoEXT.sType );
1780     VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoEXT.pNext );
1781     VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoEXT.timeDomain );
1782       return seed;
1783     }
1784   };
1785 
1786   template <> struct hash<VULKAN_HPP_NAMESPACE::CheckpointData2NV>
1787   {
operator ()std::hash1788     std::size_t operator()(VULKAN_HPP_NAMESPACE::CheckpointData2NV const & checkpointData2NV) const VULKAN_HPP_NOEXCEPT
1789     {
1790       std::size_t seed = 0;
1791     VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.sType );
1792     VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.pNext );
1793     VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.stage );
1794     VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.pCheckpointMarker );
1795       return seed;
1796     }
1797   };
1798 
1799   template <> struct hash<VULKAN_HPP_NAMESPACE::CheckpointDataNV>
1800   {
operator ()std::hash1801     std::size_t operator()(VULKAN_HPP_NAMESPACE::CheckpointDataNV const & checkpointDataNV) const VULKAN_HPP_NOEXCEPT
1802     {
1803       std::size_t seed = 0;
1804     VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.sType );
1805     VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.pNext );
1806     VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.stage );
1807     VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.pCheckpointMarker );
1808       return seed;
1809     }
1810   };
1811 
1812   template <> struct hash<VULKAN_HPP_NAMESPACE::ClearDepthStencilValue>
1813   {
operator ()std::hash1814     std::size_t operator()(VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & clearDepthStencilValue) const VULKAN_HPP_NOEXCEPT
1815     {
1816       std::size_t seed = 0;
1817     VULKAN_HPP_HASH_COMBINE( seed, clearDepthStencilValue.depth );
1818     VULKAN_HPP_HASH_COMBINE( seed, clearDepthStencilValue.stencil );
1819       return seed;
1820     }
1821   };
1822 
1823   template <> struct hash<VULKAN_HPP_NAMESPACE::ClearRect>
1824   {
operator ()std::hash1825     std::size_t operator()(VULKAN_HPP_NAMESPACE::ClearRect const & clearRect) const VULKAN_HPP_NOEXCEPT
1826     {
1827       std::size_t seed = 0;
1828     VULKAN_HPP_HASH_COMBINE( seed, clearRect.rect );
1829     VULKAN_HPP_HASH_COMBINE( seed, clearRect.baseArrayLayer );
1830     VULKAN_HPP_HASH_COMBINE( seed, clearRect.layerCount );
1831       return seed;
1832     }
1833   };
1834 
1835   template <> struct hash<VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV>
1836   {
operator ()std::hash1837     std::size_t operator()(VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV const & coarseSampleLocationNV) const VULKAN_HPP_NOEXCEPT
1838     {
1839       std::size_t seed = 0;
1840     VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.pixelX );
1841     VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.pixelY );
1842     VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.sample );
1843       return seed;
1844     }
1845   };
1846 
1847   template <> struct hash<VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV>
1848   {
operator ()std::hash1849     std::size_t operator()(VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV const & coarseSampleOrderCustomNV) const VULKAN_HPP_NOEXCEPT
1850     {
1851       std::size_t seed = 0;
1852     VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.shadingRate );
1853     VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.sampleCount );
1854     VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.sampleLocationCount );
1855     VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.pSampleLocations );
1856       return seed;
1857     }
1858   };
1859 
1860   template <> struct hash<VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT>
1861   {
operator ()std::hash1862     std::size_t operator()(VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT const & colorBlendAdvancedEXT) const VULKAN_HPP_NOEXCEPT
1863     {
1864       std::size_t seed = 0;
1865     VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.advancedBlendOp );
1866     VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.srcPremultiplied );
1867     VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.dstPremultiplied );
1868     VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.blendOverlap );
1869     VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.clampResults );
1870       return seed;
1871     }
1872   };
1873 
1874   template <> struct hash<VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT>
1875   {
operator ()std::hash1876     std::size_t operator()(VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT const & colorBlendEquationEXT) const VULKAN_HPP_NOEXCEPT
1877     {
1878       std::size_t seed = 0;
1879     VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.srcColorBlendFactor );
1880     VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.dstColorBlendFactor );
1881     VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.colorBlendOp );
1882     VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.srcAlphaBlendFactor );
1883     VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.dstAlphaBlendFactor );
1884     VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.alphaBlendOp );
1885       return seed;
1886     }
1887   };
1888 
1889   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo>
1890   {
operator ()std::hash1891     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & commandBufferAllocateInfo) const VULKAN_HPP_NOEXCEPT
1892     {
1893       std::size_t seed = 0;
1894     VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.sType );
1895     VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.pNext );
1896     VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.commandPool );
1897     VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.level );
1898     VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.commandBufferCount );
1899       return seed;
1900     }
1901   };
1902 
1903   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo>
1904   {
operator ()std::hash1905     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo const & commandBufferInheritanceInfo) const VULKAN_HPP_NOEXCEPT
1906     {
1907       std::size_t seed = 0;
1908     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.sType );
1909     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.pNext );
1910     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.renderPass );
1911     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.subpass );
1912     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.framebuffer );
1913     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.occlusionQueryEnable );
1914     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.queryFlags );
1915     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.pipelineStatistics );
1916       return seed;
1917     }
1918   };
1919 
1920   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo>
1921   {
operator ()std::hash1922     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo const & commandBufferBeginInfo) const VULKAN_HPP_NOEXCEPT
1923     {
1924       std::size_t seed = 0;
1925     VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.sType );
1926     VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.pNext );
1927     VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.flags );
1928     VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.pInheritanceInfo );
1929       return seed;
1930     }
1931   };
1932 
1933   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT>
1934   {
operator ()std::hash1935     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT const & commandBufferInheritanceConditionalRenderingInfoEXT) const VULKAN_HPP_NOEXCEPT
1936     {
1937       std::size_t seed = 0;
1938     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.sType );
1939     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.pNext );
1940     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.conditionalRenderingEnable );
1941       return seed;
1942     }
1943   };
1944 
1945   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM>
1946   {
operator ()std::hash1947     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM const & commandBufferInheritanceRenderPassTransformInfoQCOM) const VULKAN_HPP_NOEXCEPT
1948     {
1949       std::size_t seed = 0;
1950     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.sType );
1951     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.pNext );
1952     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.transform );
1953     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.renderArea );
1954       return seed;
1955     }
1956   };
1957 
1958   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo>
1959   {
operator ()std::hash1960     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo const & commandBufferInheritanceRenderingInfo) const VULKAN_HPP_NOEXCEPT
1961     {
1962       std::size_t seed = 0;
1963     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.sType );
1964     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.pNext );
1965     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.flags );
1966     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.viewMask );
1967     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.colorAttachmentCount );
1968     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.pColorAttachmentFormats );
1969     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.depthAttachmentFormat );
1970     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.stencilAttachmentFormat );
1971     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.rasterizationSamples );
1972       return seed;
1973     }
1974   };
1975 
1976   template <> struct hash<VULKAN_HPP_NAMESPACE::Viewport>
1977   {
operator ()std::hash1978     std::size_t operator()(VULKAN_HPP_NAMESPACE::Viewport const & viewport) const VULKAN_HPP_NOEXCEPT
1979     {
1980       std::size_t seed = 0;
1981     VULKAN_HPP_HASH_COMBINE( seed, viewport.x );
1982     VULKAN_HPP_HASH_COMBINE( seed, viewport.y );
1983     VULKAN_HPP_HASH_COMBINE( seed, viewport.width );
1984     VULKAN_HPP_HASH_COMBINE( seed, viewport.height );
1985     VULKAN_HPP_HASH_COMBINE( seed, viewport.minDepth );
1986     VULKAN_HPP_HASH_COMBINE( seed, viewport.maxDepth );
1987       return seed;
1988     }
1989   };
1990 
1991   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV>
1992   {
operator ()std::hash1993     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV const & commandBufferInheritanceViewportScissorInfoNV) const VULKAN_HPP_NOEXCEPT
1994     {
1995       std::size_t seed = 0;
1996     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.sType );
1997     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.pNext );
1998     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.viewportScissor2D );
1999     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.viewportDepthCount );
2000     VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.pViewportDepths );
2001       return seed;
2002     }
2003   };
2004 
2005   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo>
2006   {
operator ()std::hash2007     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo const & commandBufferSubmitInfo) const VULKAN_HPP_NOEXCEPT
2008     {
2009       std::size_t seed = 0;
2010     VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.sType );
2011     VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.pNext );
2012     VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.commandBuffer );
2013     VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.deviceMask );
2014       return seed;
2015     }
2016   };
2017 
2018   template <> struct hash<VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo>
2019   {
operator ()std::hash2020     std::size_t operator()(VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & commandPoolCreateInfo) const VULKAN_HPP_NOEXCEPT
2021     {
2022       std::size_t seed = 0;
2023     VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.sType );
2024     VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.pNext );
2025     VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.flags );
2026     VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.queueFamilyIndex );
2027       return seed;
2028     }
2029   };
2030 
2031   template <> struct hash<VULKAN_HPP_NAMESPACE::SpecializationMapEntry>
2032   {
operator ()std::hash2033     std::size_t operator()(VULKAN_HPP_NAMESPACE::SpecializationMapEntry const & specializationMapEntry) const VULKAN_HPP_NOEXCEPT
2034     {
2035       std::size_t seed = 0;
2036     VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.constantID );
2037     VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.offset );
2038     VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.size );
2039       return seed;
2040     }
2041   };
2042 
2043   template <> struct hash<VULKAN_HPP_NAMESPACE::SpecializationInfo>
2044   {
operator ()std::hash2045     std::size_t operator()(VULKAN_HPP_NAMESPACE::SpecializationInfo const & specializationInfo) const VULKAN_HPP_NOEXCEPT
2046     {
2047       std::size_t seed = 0;
2048     VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.mapEntryCount );
2049     VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.pMapEntries );
2050     VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.dataSize );
2051     VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.pData );
2052       return seed;
2053     }
2054   };
2055 
2056   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo>
2057   {
operator ()std::hash2058     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & pipelineShaderStageCreateInfo) const VULKAN_HPP_NOEXCEPT
2059     {
2060       std::size_t seed = 0;
2061     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.sType );
2062     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.pNext );
2063     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.flags );
2064     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.stage );
2065     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.module );
2066     for ( const char* p = pipelineShaderStageCreateInfo.pName; *p != '\0'; ++p )
2067     {
2068       VULKAN_HPP_HASH_COMBINE( seed, *p );
2069     }
2070     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.pSpecializationInfo );
2071       return seed;
2072     }
2073   };
2074 
2075   template <> struct hash<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo>
2076   {
operator ()std::hash2077     std::size_t operator()(VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const & computePipelineCreateInfo) const VULKAN_HPP_NOEXCEPT
2078     {
2079       std::size_t seed = 0;
2080     VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.sType );
2081     VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.pNext );
2082     VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.flags );
2083     VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.stage );
2084     VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.layout );
2085     VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.basePipelineHandle );
2086     VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.basePipelineIndex );
2087       return seed;
2088     }
2089   };
2090 
2091   template <> struct hash<VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT>
2092   {
operator ()std::hash2093     std::size_t operator()(VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT const & conditionalRenderingBeginInfoEXT) const VULKAN_HPP_NOEXCEPT
2094     {
2095       std::size_t seed = 0;
2096     VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.sType );
2097     VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.pNext );
2098     VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.buffer );
2099     VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.offset );
2100     VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.flags );
2101       return seed;
2102     }
2103   };
2104 
2105   template <> struct hash<VULKAN_HPP_NAMESPACE::ConformanceVersion>
2106   {
operator ()std::hash2107     std::size_t operator()(VULKAN_HPP_NAMESPACE::ConformanceVersion const & conformanceVersion) const VULKAN_HPP_NOEXCEPT
2108     {
2109       std::size_t seed = 0;
2110     VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.major );
2111     VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.minor );
2112     VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.subminor );
2113     VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.patch );
2114       return seed;
2115     }
2116   };
2117 
2118   template <> struct hash<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV>
2119   {
operator ()std::hash2120     std::size_t operator()(VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV const & cooperativeMatrixPropertiesNV) const VULKAN_HPP_NOEXCEPT
2121     {
2122       std::size_t seed = 0;
2123     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.sType );
2124     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.pNext );
2125     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.MSize );
2126     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.NSize );
2127     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.KSize );
2128     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.AType );
2129     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.BType );
2130     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.CType );
2131     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.DType );
2132     VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.scope );
2133       return seed;
2134     }
2135   };
2136 
2137   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR>
2138   {
operator ()std::hash2139     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR const & copyAccelerationStructureInfoKHR) const VULKAN_HPP_NOEXCEPT
2140     {
2141       std::size_t seed = 0;
2142     VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.sType );
2143     VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.pNext );
2144     VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.src );
2145     VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.dst );
2146     VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.mode );
2147       return seed;
2148     }
2149   };
2150 
2151   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyBufferInfo2>
2152   {
operator ()std::hash2153     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyBufferInfo2 const & copyBufferInfo2) const VULKAN_HPP_NOEXCEPT
2154     {
2155       std::size_t seed = 0;
2156     VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.sType );
2157     VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.pNext );
2158     VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.srcBuffer );
2159     VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.dstBuffer );
2160     VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.regionCount );
2161     VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.pRegions );
2162       return seed;
2163     }
2164   };
2165 
2166   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2>
2167   {
operator ()std::hash2168     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 const & copyBufferToImageInfo2) const VULKAN_HPP_NOEXCEPT
2169     {
2170       std::size_t seed = 0;
2171     VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.sType );
2172     VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.pNext );
2173     VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.srcBuffer );
2174     VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.dstImage );
2175     VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.dstImageLayout );
2176     VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.regionCount );
2177     VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.pRegions );
2178       return seed;
2179     }
2180   };
2181 
2182   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM>
2183   {
operator ()std::hash2184     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM const & copyCommandTransformInfoQCOM) const VULKAN_HPP_NOEXCEPT
2185     {
2186       std::size_t seed = 0;
2187     VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.sType );
2188     VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.pNext );
2189     VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.transform );
2190       return seed;
2191     }
2192   };
2193 
2194   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyDescriptorSet>
2195   {
operator ()std::hash2196     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyDescriptorSet const & copyDescriptorSet) const VULKAN_HPP_NOEXCEPT
2197     {
2198       std::size_t seed = 0;
2199     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.sType );
2200     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.pNext );
2201     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcSet );
2202     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcBinding );
2203     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcArrayElement );
2204     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstSet );
2205     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstBinding );
2206     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstArrayElement );
2207     VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.descriptorCount );
2208       return seed;
2209     }
2210   };
2211 
2212   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageCopy2>
2213   {
operator ()std::hash2214     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageCopy2 const & imageCopy2) const VULKAN_HPP_NOEXCEPT
2215     {
2216       std::size_t seed = 0;
2217     VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.sType );
2218     VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.pNext );
2219     VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.srcSubresource );
2220     VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.srcOffset );
2221     VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.dstSubresource );
2222     VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.dstOffset );
2223     VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.extent );
2224       return seed;
2225     }
2226   };
2227 
2228   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyImageInfo2>
2229   {
operator ()std::hash2230     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyImageInfo2 const & copyImageInfo2) const VULKAN_HPP_NOEXCEPT
2231     {
2232       std::size_t seed = 0;
2233     VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.sType );
2234     VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.pNext );
2235     VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.srcImage );
2236     VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.srcImageLayout );
2237     VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.dstImage );
2238     VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.dstImageLayout );
2239     VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.regionCount );
2240     VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.pRegions );
2241       return seed;
2242     }
2243   };
2244 
2245   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2>
2246   {
operator ()std::hash2247     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 const & copyImageToBufferInfo2) const VULKAN_HPP_NOEXCEPT
2248     {
2249       std::size_t seed = 0;
2250     VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.sType );
2251     VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.pNext );
2252     VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.srcImage );
2253     VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.srcImageLayout );
2254     VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.dstBuffer );
2255     VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.regionCount );
2256     VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.pRegions );
2257       return seed;
2258     }
2259   };
2260 
2261   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV>
2262   {
operator ()std::hash2263     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandNV const & copyMemoryIndirectCommandNV) const VULKAN_HPP_NOEXCEPT
2264     {
2265       std::size_t seed = 0;
2266     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectCommandNV.srcAddress );
2267     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectCommandNV.dstAddress );
2268     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectCommandNV.size );
2269       return seed;
2270     }
2271   };
2272 
2273   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV>
2274   {
operator ()std::hash2275     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandNV const & copyMemoryToImageIndirectCommandNV) const VULKAN_HPP_NOEXCEPT
2276     {
2277       std::size_t seed = 0;
2278     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandNV.srcAddress );
2279     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandNV.bufferRowLength );
2280     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandNV.bufferImageHeight );
2281     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandNV.imageSubresource );
2282     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandNV.imageOffset );
2283     VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandNV.imageExtent );
2284       return seed;
2285     }
2286   };
2287 
2288   template <> struct hash<VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT>
2289   {
operator ()std::hash2290     std::size_t operator()(VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT const & copyMicromapInfoEXT) const VULKAN_HPP_NOEXCEPT
2291     {
2292       std::size_t seed = 0;
2293     VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.sType );
2294     VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.pNext );
2295     VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.src );
2296     VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.dst );
2297     VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.mode );
2298       return seed;
2299     }
2300   };
2301 
2302   template <> struct hash<VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX>
2303   {
operator ()std::hash2304     std::size_t operator()(VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & cuFunctionCreateInfoNVX) const VULKAN_HPP_NOEXCEPT
2305     {
2306       std::size_t seed = 0;
2307     VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.sType );
2308     VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.pNext );
2309     VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.module );
2310     for ( const char* p = cuFunctionCreateInfoNVX.pName; *p != '\0'; ++p )
2311     {
2312       VULKAN_HPP_HASH_COMBINE( seed, *p );
2313     }
2314       return seed;
2315     }
2316   };
2317 
2318   template <> struct hash<VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX>
2319   {
operator ()std::hash2320     std::size_t operator()(VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX const & cuLaunchInfoNVX) const VULKAN_HPP_NOEXCEPT
2321     {
2322       std::size_t seed = 0;
2323     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.sType );
2324     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pNext );
2325     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.function );
2326     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimX );
2327     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimY );
2328     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimZ );
2329     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimX );
2330     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimY );
2331     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimZ );
2332     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.sharedMemBytes );
2333     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.paramCount );
2334     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pParams );
2335     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.extraCount );
2336     VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pExtras );
2337       return seed;
2338     }
2339   };
2340 
2341   template <> struct hash<VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX>
2342   {
operator ()std::hash2343     std::size_t operator()(VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & cuModuleCreateInfoNVX) const VULKAN_HPP_NOEXCEPT
2344     {
2345       std::size_t seed = 0;
2346     VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.sType );
2347     VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.pNext );
2348     VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.dataSize );
2349     VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.pData );
2350       return seed;
2351     }
2352   };
2353 
2354   #if defined( VK_USE_PLATFORM_WIN32_KHR )
2355 template <> struct hash<VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR>
2356   {
operator ()std::hash2357     std::size_t operator()(VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR const & d3D12FenceSubmitInfoKHR) const VULKAN_HPP_NOEXCEPT
2358     {
2359       std::size_t seed = 0;
2360     VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.sType );
2361     VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pNext );
2362     VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.waitSemaphoreValuesCount );
2363     VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pWaitSemaphoreValues );
2364     VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.signalSemaphoreValuesCount );
2365     VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pSignalSemaphoreValues );
2366       return seed;
2367     }
2368   };
2369 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
2370 
2371   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT>
2372   {
operator ()std::hash2373     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT const & debugMarkerMarkerInfoEXT) const VULKAN_HPP_NOEXCEPT
2374     {
2375       std::size_t seed = 0;
2376     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.sType );
2377     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.pNext );
2378     for ( const char* p = debugMarkerMarkerInfoEXT.pMarkerName; *p != '\0'; ++p )
2379     {
2380       VULKAN_HPP_HASH_COMBINE( seed, *p );
2381     }
2382     for ( size_t i = 0; i < 4; ++i )
2383     {
2384       VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.color[i] );
2385     }
2386       return seed;
2387     }
2388   };
2389 
2390   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT>
2391   {
operator ()std::hash2392     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT const & debugMarkerObjectNameInfoEXT) const VULKAN_HPP_NOEXCEPT
2393     {
2394       std::size_t seed = 0;
2395     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.sType );
2396     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.pNext );
2397     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.objectType );
2398     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.object );
2399     for ( const char* p = debugMarkerObjectNameInfoEXT.pObjectName; *p != '\0'; ++p )
2400     {
2401       VULKAN_HPP_HASH_COMBINE( seed, *p );
2402     }
2403       return seed;
2404     }
2405   };
2406 
2407   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT>
2408   {
operator ()std::hash2409     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT const & debugMarkerObjectTagInfoEXT) const VULKAN_HPP_NOEXCEPT
2410     {
2411       std::size_t seed = 0;
2412     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.sType );
2413     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.pNext );
2414     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.objectType );
2415     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.object );
2416     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.tagName );
2417     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.tagSize );
2418     VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.pTag );
2419       return seed;
2420     }
2421   };
2422 
2423   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT>
2424   {
operator ()std::hash2425     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & debugReportCallbackCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
2426     {
2427       std::size_t seed = 0;
2428     VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.sType );
2429     VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pNext );
2430     VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.flags );
2431     VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pfnCallback );
2432     VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pUserData );
2433       return seed;
2434     }
2435   };
2436 
2437   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT>
2438   {
operator ()std::hash2439     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT const & debugUtilsLabelEXT) const VULKAN_HPP_NOEXCEPT
2440     {
2441       std::size_t seed = 0;
2442     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.sType );
2443     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.pNext );
2444     for ( const char* p = debugUtilsLabelEXT.pLabelName; *p != '\0'; ++p )
2445     {
2446       VULKAN_HPP_HASH_COMBINE( seed, *p );
2447     }
2448     for ( size_t i = 0; i < 4; ++i )
2449     {
2450       VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.color[i] );
2451     }
2452       return seed;
2453     }
2454   };
2455 
2456   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT>
2457   {
operator ()std::hash2458     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT const & debugUtilsObjectNameInfoEXT) const VULKAN_HPP_NOEXCEPT
2459     {
2460       std::size_t seed = 0;
2461     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.sType );
2462     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.pNext );
2463     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.objectType );
2464     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.objectHandle );
2465     for ( const char* p = debugUtilsObjectNameInfoEXT.pObjectName; *p != '\0'; ++p )
2466     {
2467       VULKAN_HPP_HASH_COMBINE( seed, *p );
2468     }
2469       return seed;
2470     }
2471   };
2472 
2473   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT>
2474   {
operator ()std::hash2475     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT const & debugUtilsMessengerCallbackDataEXT) const VULKAN_HPP_NOEXCEPT
2476     {
2477       std::size_t seed = 0;
2478     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.sType );
2479     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pNext );
2480     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.flags );
2481     for ( const char* p = debugUtilsMessengerCallbackDataEXT.pMessageIdName; *p != '\0'; ++p )
2482     {
2483       VULKAN_HPP_HASH_COMBINE( seed, *p );
2484     }
2485     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.messageIdNumber );
2486     for ( const char* p = debugUtilsMessengerCallbackDataEXT.pMessage; *p != '\0'; ++p )
2487     {
2488       VULKAN_HPP_HASH_COMBINE( seed, *p );
2489     }
2490     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.queueLabelCount );
2491     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pQueueLabels );
2492     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.cmdBufLabelCount );
2493     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pCmdBufLabels );
2494     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.objectCount );
2495     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pObjects );
2496       return seed;
2497     }
2498   };
2499 
2500   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT>
2501   {
operator ()std::hash2502     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & debugUtilsMessengerCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
2503     {
2504       std::size_t seed = 0;
2505     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.sType );
2506     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pNext );
2507     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.flags );
2508     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.messageSeverity );
2509     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.messageType );
2510     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pfnUserCallback );
2511     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pUserData );
2512       return seed;
2513     }
2514   };
2515 
2516   template <> struct hash<VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT>
2517   {
operator ()std::hash2518     std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT const & debugUtilsObjectTagInfoEXT) const VULKAN_HPP_NOEXCEPT
2519     {
2520       std::size_t seed = 0;
2521     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.sType );
2522     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.pNext );
2523     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.objectType );
2524     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.objectHandle );
2525     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.tagName );
2526     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.tagSize );
2527     VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.pTag );
2528       return seed;
2529     }
2530   };
2531 
2532   template <> struct hash<VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV>
2533   {
operator ()std::hash2534     std::size_t operator()(VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV const & decompressMemoryRegionNV) const VULKAN_HPP_NOEXCEPT
2535     {
2536       std::size_t seed = 0;
2537     VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.srcAddress );
2538     VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.dstAddress );
2539     VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.compressedSize );
2540     VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.decompressedSize );
2541     VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.decompressionMethod );
2542       return seed;
2543     }
2544   };
2545 
2546   template <> struct hash<VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV>
2547   {
operator ()std::hash2548     std::size_t operator()(VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV const & dedicatedAllocationBufferCreateInfoNV) const VULKAN_HPP_NOEXCEPT
2549     {
2550       std::size_t seed = 0;
2551     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.sType );
2552     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.pNext );
2553     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.dedicatedAllocation );
2554       return seed;
2555     }
2556   };
2557 
2558   template <> struct hash<VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV>
2559   {
operator ()std::hash2560     std::size_t operator()(VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV const & dedicatedAllocationImageCreateInfoNV) const VULKAN_HPP_NOEXCEPT
2561     {
2562       std::size_t seed = 0;
2563     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.sType );
2564     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.pNext );
2565     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.dedicatedAllocation );
2566       return seed;
2567     }
2568   };
2569 
2570   template <> struct hash<VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV>
2571   {
operator ()std::hash2572     std::size_t operator()(VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV const & dedicatedAllocationMemoryAllocateInfoNV) const VULKAN_HPP_NOEXCEPT
2573     {
2574       std::size_t seed = 0;
2575     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.sType );
2576     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.pNext );
2577     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.image );
2578     VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.buffer );
2579       return seed;
2580     }
2581   };
2582 
2583   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryBarrier2>
2584   {
operator ()std::hash2585     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryBarrier2 const & memoryBarrier2) const VULKAN_HPP_NOEXCEPT
2586     {
2587       std::size_t seed = 0;
2588     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.sType );
2589     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.pNext );
2590     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.srcStageMask );
2591     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.srcAccessMask );
2592     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.dstStageMask );
2593     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.dstAccessMask );
2594       return seed;
2595     }
2596   };
2597 
2598   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageSubresourceRange>
2599   {
operator ()std::hash2600     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & imageSubresourceRange) const VULKAN_HPP_NOEXCEPT
2601     {
2602       std::size_t seed = 0;
2603     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.aspectMask );
2604     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.baseMipLevel );
2605     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.levelCount );
2606     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.baseArrayLayer );
2607     VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.layerCount );
2608       return seed;
2609     }
2610   };
2611 
2612   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2>
2613   {
operator ()std::hash2614     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 const & imageMemoryBarrier2) const VULKAN_HPP_NOEXCEPT
2615     {
2616       std::size_t seed = 0;
2617     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.sType );
2618     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.pNext );
2619     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcStageMask );
2620     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcAccessMask );
2621     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstStageMask );
2622     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstAccessMask );
2623     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.oldLayout );
2624     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.newLayout );
2625     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcQueueFamilyIndex );
2626     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstQueueFamilyIndex );
2627     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.image );
2628     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.subresourceRange );
2629       return seed;
2630     }
2631   };
2632 
2633   template <> struct hash<VULKAN_HPP_NAMESPACE::DependencyInfo>
2634   {
operator ()std::hash2635     std::size_t operator()(VULKAN_HPP_NAMESPACE::DependencyInfo const & dependencyInfo) const VULKAN_HPP_NOEXCEPT
2636     {
2637       std::size_t seed = 0;
2638     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.sType );
2639     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pNext );
2640     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.dependencyFlags );
2641     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.memoryBarrierCount );
2642     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pMemoryBarriers );
2643     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.bufferMemoryBarrierCount );
2644     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pBufferMemoryBarriers );
2645     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.imageMemoryBarrierCount );
2646     VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pImageMemoryBarriers );
2647       return seed;
2648     }
2649   };
2650 
2651   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT>
2652   {
operator ()std::hash2653     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT const & descriptorAddressInfoEXT) const VULKAN_HPP_NOEXCEPT
2654     {
2655       std::size_t seed = 0;
2656     VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.sType );
2657     VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.pNext );
2658     VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.address );
2659     VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.range );
2660     VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.format );
2661       return seed;
2662     }
2663   };
2664 
2665   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT>
2666   {
operator ()std::hash2667     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT const & descriptorBufferBindingInfoEXT) const VULKAN_HPP_NOEXCEPT
2668     {
2669       std::size_t seed = 0;
2670     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingInfoEXT.sType );
2671     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingInfoEXT.pNext );
2672     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingInfoEXT.address );
2673     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingInfoEXT.usage );
2674       return seed;
2675     }
2676   };
2677 
2678   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT>
2679   {
operator ()std::hash2680     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT const & descriptorBufferBindingPushDescriptorBufferHandleEXT) const VULKAN_HPP_NOEXCEPT
2681     {
2682       std::size_t seed = 0;
2683     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingPushDescriptorBufferHandleEXT.sType );
2684     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingPushDescriptorBufferHandleEXT.pNext );
2685     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingPushDescriptorBufferHandleEXT.buffer );
2686       return seed;
2687     }
2688   };
2689 
2690   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorBufferInfo>
2691   {
operator ()std::hash2692     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorBufferInfo const & descriptorBufferInfo) const VULKAN_HPP_NOEXCEPT
2693     {
2694       std::size_t seed = 0;
2695     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.buffer );
2696     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.offset );
2697     VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.range );
2698       return seed;
2699     }
2700   };
2701 
2702   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorImageInfo>
2703   {
operator ()std::hash2704     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorImageInfo const & descriptorImageInfo) const VULKAN_HPP_NOEXCEPT
2705     {
2706       std::size_t seed = 0;
2707     VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.sampler );
2708     VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.imageView );
2709     VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.imageLayout );
2710       return seed;
2711     }
2712   };
2713 
2714   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorPoolSize>
2715   {
operator ()std::hash2716     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorPoolSize const & descriptorPoolSize) const VULKAN_HPP_NOEXCEPT
2717     {
2718       std::size_t seed = 0;
2719     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolSize.type );
2720     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolSize.descriptorCount );
2721       return seed;
2722     }
2723   };
2724 
2725   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo>
2726   {
operator ()std::hash2727     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & descriptorPoolCreateInfo) const VULKAN_HPP_NOEXCEPT
2728     {
2729       std::size_t seed = 0;
2730     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.sType );
2731     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.pNext );
2732     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.flags );
2733     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.maxSets );
2734     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.poolSizeCount );
2735     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.pPoolSizes );
2736       return seed;
2737     }
2738   };
2739 
2740   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo>
2741   {
operator ()std::hash2742     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo const & descriptorPoolInlineUniformBlockCreateInfo) const VULKAN_HPP_NOEXCEPT
2743     {
2744       std::size_t seed = 0;
2745     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.sType );
2746     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.pNext );
2747     VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.maxInlineUniformBlockBindings );
2748       return seed;
2749     }
2750   };
2751 
2752   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo>
2753   {
operator ()std::hash2754     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & descriptorSetAllocateInfo) const VULKAN_HPP_NOEXCEPT
2755     {
2756       std::size_t seed = 0;
2757     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.sType );
2758     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.pNext );
2759     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.descriptorPool );
2760     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.descriptorSetCount );
2761     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.pSetLayouts );
2762       return seed;
2763     }
2764   };
2765 
2766   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE>
2767   {
operator ()std::hash2768     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE const & descriptorSetBindingReferenceVALVE) const VULKAN_HPP_NOEXCEPT
2769     {
2770       std::size_t seed = 0;
2771     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetBindingReferenceVALVE.sType );
2772     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetBindingReferenceVALVE.pNext );
2773     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetBindingReferenceVALVE.descriptorSetLayout );
2774     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetBindingReferenceVALVE.binding );
2775       return seed;
2776     }
2777   };
2778 
2779   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding>
2780   {
operator ()std::hash2781     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding const & descriptorSetLayoutBinding) const VULKAN_HPP_NOEXCEPT
2782     {
2783       std::size_t seed = 0;
2784     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.binding );
2785     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.descriptorType );
2786     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.descriptorCount );
2787     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.stageFlags );
2788     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.pImmutableSamplers );
2789       return seed;
2790     }
2791   };
2792 
2793   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo>
2794   {
operator ()std::hash2795     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo const & descriptorSetLayoutBindingFlagsCreateInfo) const VULKAN_HPP_NOEXCEPT
2796     {
2797       std::size_t seed = 0;
2798     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.sType );
2799     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.pNext );
2800     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.bindingCount );
2801     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.pBindingFlags );
2802       return seed;
2803     }
2804   };
2805 
2806   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo>
2807   {
operator ()std::hash2808     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & descriptorSetLayoutCreateInfo) const VULKAN_HPP_NOEXCEPT
2809     {
2810       std::size_t seed = 0;
2811     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.sType );
2812     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.pNext );
2813     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.flags );
2814     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.bindingCount );
2815     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.pBindings );
2816       return seed;
2817     }
2818   };
2819 
2820   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE>
2821   {
operator ()std::hash2822     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE const & descriptorSetLayoutHostMappingInfoVALVE) const VULKAN_HPP_NOEXCEPT
2823     {
2824       std::size_t seed = 0;
2825     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutHostMappingInfoVALVE.sType );
2826     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutHostMappingInfoVALVE.pNext );
2827     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutHostMappingInfoVALVE.descriptorOffset );
2828     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutHostMappingInfoVALVE.descriptorSize );
2829       return seed;
2830     }
2831   };
2832 
2833   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>
2834   {
operator ()std::hash2835     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport const & descriptorSetLayoutSupport) const VULKAN_HPP_NOEXCEPT
2836     {
2837       std::size_t seed = 0;
2838     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.sType );
2839     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.pNext );
2840     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.supported );
2841       return seed;
2842     }
2843   };
2844 
2845   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo>
2846   {
operator ()std::hash2847     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo const & descriptorSetVariableDescriptorCountAllocateInfo) const VULKAN_HPP_NOEXCEPT
2848     {
2849       std::size_t seed = 0;
2850     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.sType );
2851     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.pNext );
2852     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.descriptorSetCount );
2853     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.pDescriptorCounts );
2854       return seed;
2855     }
2856   };
2857 
2858   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport>
2859   {
operator ()std::hash2860     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport const & descriptorSetVariableDescriptorCountLayoutSupport) const VULKAN_HPP_NOEXCEPT
2861     {
2862       std::size_t seed = 0;
2863     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.sType );
2864     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.pNext );
2865     VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.maxVariableDescriptorCount );
2866       return seed;
2867     }
2868   };
2869 
2870   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry>
2871   {
operator ()std::hash2872     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry const & descriptorUpdateTemplateEntry) const VULKAN_HPP_NOEXCEPT
2873     {
2874       std::size_t seed = 0;
2875     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.dstBinding );
2876     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.dstArrayElement );
2877     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.descriptorCount );
2878     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.descriptorType );
2879     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.offset );
2880     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.stride );
2881       return seed;
2882     }
2883   };
2884 
2885   template <> struct hash<VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo>
2886   {
operator ()std::hash2887     std::size_t operator()(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & descriptorUpdateTemplateCreateInfo) const VULKAN_HPP_NOEXCEPT
2888     {
2889       std::size_t seed = 0;
2890     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.sType );
2891     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pNext );
2892     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.flags );
2893     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.descriptorUpdateEntryCount );
2894     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pDescriptorUpdateEntries );
2895     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.templateType );
2896     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.descriptorSetLayout );
2897     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pipelineBindPoint );
2898     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pipelineLayout );
2899     VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.set );
2900       return seed;
2901     }
2902   };
2903 
2904   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT>
2905   {
operator ()std::hash2906     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT const & deviceAddressBindingCallbackDataEXT) const VULKAN_HPP_NOEXCEPT
2907     {
2908       std::size_t seed = 0;
2909     VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.sType );
2910     VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.pNext );
2911     VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.flags );
2912     VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.baseAddress );
2913     VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.size );
2914     VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.bindingType );
2915       return seed;
2916     }
2917   };
2918 
2919   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements>
2920   {
operator ()std::hash2921     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements const & deviceBufferMemoryRequirements) const VULKAN_HPP_NOEXCEPT
2922     {
2923       std::size_t seed = 0;
2924     VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.sType );
2925     VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.pNext );
2926     VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.pCreateInfo );
2927       return seed;
2928     }
2929   };
2930 
2931   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo>
2932   {
operator ()std::hash2933     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo const & deviceQueueCreateInfo) const VULKAN_HPP_NOEXCEPT
2934     {
2935       std::size_t seed = 0;
2936     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.sType );
2937     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.pNext );
2938     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.flags );
2939     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.queueFamilyIndex );
2940     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.queueCount );
2941     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.pQueuePriorities );
2942       return seed;
2943     }
2944   };
2945 
2946   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures>
2947   {
operator ()std::hash2948     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & physicalDeviceFeatures) const VULKAN_HPP_NOEXCEPT
2949     {
2950       std::size_t seed = 0;
2951     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.robustBufferAccess );
2952     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fullDrawIndexUint32 );
2953     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.imageCubeArray );
2954     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.independentBlend );
2955     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.geometryShader );
2956     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.tessellationShader );
2957     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sampleRateShading );
2958     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.dualSrcBlend );
2959     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.logicOp );
2960     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.multiDrawIndirect );
2961     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.drawIndirectFirstInstance );
2962     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthClamp );
2963     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthBiasClamp );
2964     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fillModeNonSolid );
2965     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthBounds );
2966     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.wideLines );
2967     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.largePoints );
2968     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.alphaToOne );
2969     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.multiViewport );
2970     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.samplerAnisotropy );
2971     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionETC2 );
2972     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionASTC_LDR );
2973     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionBC );
2974     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.occlusionQueryPrecise );
2975     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.pipelineStatisticsQuery );
2976     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.vertexPipelineStoresAndAtomics );
2977     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fragmentStoresAndAtomics );
2978     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderTessellationAndGeometryPointSize );
2979     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderImageGatherExtended );
2980     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageExtendedFormats );
2981     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageMultisample );
2982     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageReadWithoutFormat );
2983     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageWriteWithoutFormat );
2984     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderUniformBufferArrayDynamicIndexing );
2985     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderSampledImageArrayDynamicIndexing );
2986     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageBufferArrayDynamicIndexing );
2987     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageArrayDynamicIndexing );
2988     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderClipDistance );
2989     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderCullDistance );
2990     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderFloat64 );
2991     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderInt64 );
2992     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderInt16 );
2993     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderResourceResidency );
2994     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderResourceMinLod );
2995     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseBinding );
2996     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyBuffer );
2997     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyImage2D );
2998     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyImage3D );
2999     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency2Samples );
3000     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency4Samples );
3001     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency8Samples );
3002     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency16Samples );
3003     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyAliased );
3004     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.variableMultisampleRate );
3005     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.inheritedQueries );
3006       return seed;
3007     }
3008   };
3009 
3010   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceCreateInfo>
3011   {
operator ()std::hash3012     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & deviceCreateInfo) const VULKAN_HPP_NOEXCEPT
3013     {
3014       std::size_t seed = 0;
3015     VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.sType );
3016     VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pNext );
3017     VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.flags );
3018     VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.queueCreateInfoCount );
3019     VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pQueueCreateInfos );
3020     VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.enabledLayerCount );
3021     for ( size_t i = 0; i < deviceCreateInfo.enabledLayerCount; ++i )
3022     {
3023         for ( const char* p = deviceCreateInfo.ppEnabledLayerNames[i]; *p != '\0'; ++p )
3024         {
3025           VULKAN_HPP_HASH_COMBINE( seed, *p );
3026         }
3027     }
3028     VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.enabledExtensionCount );
3029     for ( size_t i = 0; i < deviceCreateInfo.enabledExtensionCount; ++i )
3030     {
3031         for ( const char* p = deviceCreateInfo.ppEnabledExtensionNames[i]; *p != '\0'; ++p )
3032         {
3033           VULKAN_HPP_HASH_COMBINE( seed, *p );
3034         }
3035     }
3036     VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pEnabledFeatures );
3037       return seed;
3038     }
3039   };
3040 
3041   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT>
3042   {
operator ()std::hash3043     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT const & deviceDeviceMemoryReportCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
3044     {
3045       std::size_t seed = 0;
3046     VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.sType );
3047     VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pNext );
3048     VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.flags );
3049     VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pfnUserCallback );
3050     VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pUserData );
3051       return seed;
3052     }
3053   };
3054 
3055   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV>
3056   {
operator ()std::hash3057     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV const & deviceDiagnosticsConfigCreateInfoNV) const VULKAN_HPP_NOEXCEPT
3058     {
3059       std::size_t seed = 0;
3060     VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.sType );
3061     VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.pNext );
3062     VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.flags );
3063       return seed;
3064     }
3065   };
3066 
3067   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT>
3068   {
operator ()std::hash3069     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const & deviceEventInfoEXT) const VULKAN_HPP_NOEXCEPT
3070     {
3071       std::size_t seed = 0;
3072     VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.sType );
3073     VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.pNext );
3074     VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.deviceEvent );
3075       return seed;
3076     }
3077   };
3078 
3079   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT>
3080   {
operator ()std::hash3081     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT const & deviceFaultAddressInfoEXT) const VULKAN_HPP_NOEXCEPT
3082     {
3083       std::size_t seed = 0;
3084     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultAddressInfoEXT.addressType );
3085     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultAddressInfoEXT.reportedAddress );
3086     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultAddressInfoEXT.addressPrecision );
3087       return seed;
3088     }
3089   };
3090 
3091   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT>
3092   {
operator ()std::hash3093     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT const & deviceFaultCountsEXT) const VULKAN_HPP_NOEXCEPT
3094     {
3095       std::size_t seed = 0;
3096     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.sType );
3097     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.pNext );
3098     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.addressInfoCount );
3099     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.vendorInfoCount );
3100     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.vendorBinarySize );
3101       return seed;
3102     }
3103   };
3104 
3105   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT>
3106   {
operator ()std::hash3107     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT const & deviceFaultVendorInfoEXT) const VULKAN_HPP_NOEXCEPT
3108     {
3109       std::size_t seed = 0;
3110     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
3111     {
3112       VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorInfoEXT.description[i] );
3113     }
3114     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorInfoEXT.vendorFaultCode );
3115     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorInfoEXT.vendorFaultData );
3116       return seed;
3117     }
3118   };
3119 
3120   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT>
3121   {
operator ()std::hash3122     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT const & deviceFaultInfoEXT) const VULKAN_HPP_NOEXCEPT
3123     {
3124       std::size_t seed = 0;
3125     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.sType );
3126     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.pNext );
3127     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
3128     {
3129       VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.description[i] );
3130     }
3131     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.pAddressInfos );
3132     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.pVendorInfos );
3133     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.pVendorBinaryData );
3134       return seed;
3135     }
3136   };
3137 
3138   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT>
3139   {
operator ()std::hash3140     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneEXT const & deviceFaultVendorBinaryHeaderVersionOneEXT) const VULKAN_HPP_NOEXCEPT
3141     {
3142       std::size_t seed = 0;
3143     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.headerSize );
3144     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.headerVersion );
3145     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.vendorID );
3146     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.deviceID );
3147     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.driverVersion );
3148     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
3149     {
3150       VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.pipelineCacheUUID[i] );
3151     }
3152     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.applicationNameOffset );
3153     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.applicationVersion );
3154     VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneEXT.engineNameOffset );
3155       return seed;
3156     }
3157   };
3158 
3159   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo>
3160   {
operator ()std::hash3161     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo const & deviceGroupBindSparseInfo) const VULKAN_HPP_NOEXCEPT
3162     {
3163       std::size_t seed = 0;
3164     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.sType );
3165     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.pNext );
3166     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.resourceDeviceIndex );
3167     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.memoryDeviceIndex );
3168       return seed;
3169     }
3170   };
3171 
3172   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo>
3173   {
operator ()std::hash3174     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo const & deviceGroupCommandBufferBeginInfo) const VULKAN_HPP_NOEXCEPT
3175     {
3176       std::size_t seed = 0;
3177     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.sType );
3178     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.pNext );
3179     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.deviceMask );
3180       return seed;
3181     }
3182   };
3183 
3184   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo>
3185   {
operator ()std::hash3186     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo const & deviceGroupDeviceCreateInfo) const VULKAN_HPP_NOEXCEPT
3187     {
3188       std::size_t seed = 0;
3189     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.sType );
3190     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.pNext );
3191     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.physicalDeviceCount );
3192     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.pPhysicalDevices );
3193       return seed;
3194     }
3195   };
3196 
3197   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR>
3198   {
operator ()std::hash3199     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR const & deviceGroupPresentCapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
3200     {
3201       std::size_t seed = 0;
3202     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.sType );
3203     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.pNext );
3204     for ( size_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; ++i )
3205     {
3206       VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.presentMask[i] );
3207     }
3208     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.modes );
3209       return seed;
3210     }
3211   };
3212 
3213   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR>
3214   {
operator ()std::hash3215     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR const & deviceGroupPresentInfoKHR) const VULKAN_HPP_NOEXCEPT
3216     {
3217       std::size_t seed = 0;
3218     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.sType );
3219     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.pNext );
3220     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.swapchainCount );
3221     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.pDeviceMasks );
3222     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.mode );
3223       return seed;
3224     }
3225   };
3226 
3227   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo>
3228   {
operator ()std::hash3229     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo const & deviceGroupRenderPassBeginInfo) const VULKAN_HPP_NOEXCEPT
3230     {
3231       std::size_t seed = 0;
3232     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.sType );
3233     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.pNext );
3234     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.deviceMask );
3235     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.deviceRenderAreaCount );
3236     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.pDeviceRenderAreas );
3237       return seed;
3238     }
3239   };
3240 
3241   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo>
3242   {
operator ()std::hash3243     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo const & deviceGroupSubmitInfo) const VULKAN_HPP_NOEXCEPT
3244     {
3245       std::size_t seed = 0;
3246     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.sType );
3247     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pNext );
3248     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.waitSemaphoreCount );
3249     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pWaitSemaphoreDeviceIndices );
3250     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.commandBufferCount );
3251     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pCommandBufferDeviceMasks );
3252     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.signalSemaphoreCount );
3253     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pSignalSemaphoreDeviceIndices );
3254       return seed;
3255     }
3256   };
3257 
3258   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR>
3259   {
operator ()std::hash3260     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR const & deviceGroupSwapchainCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
3261     {
3262       std::size_t seed = 0;
3263     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.sType );
3264     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.pNext );
3265     VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.modes );
3266       return seed;
3267     }
3268   };
3269 
3270   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageCreateInfo>
3271   {
operator ()std::hash3272     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageCreateInfo const & imageCreateInfo) const VULKAN_HPP_NOEXCEPT
3273     {
3274       std::size_t seed = 0;
3275     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.sType );
3276     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.pNext );
3277     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.flags );
3278     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.imageType );
3279     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.format );
3280     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.extent );
3281     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.mipLevels );
3282     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.arrayLayers );
3283     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.samples );
3284     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.tiling );
3285     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.usage );
3286     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.sharingMode );
3287     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.queueFamilyIndexCount );
3288     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.pQueueFamilyIndices );
3289     VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.initialLayout );
3290       return seed;
3291     }
3292   };
3293 
3294   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements>
3295   {
operator ()std::hash3296     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements const & deviceImageMemoryRequirements) const VULKAN_HPP_NOEXCEPT
3297     {
3298       std::size_t seed = 0;
3299     VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.sType );
3300     VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.pNext );
3301     VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.pCreateInfo );
3302     VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.planeAspect );
3303       return seed;
3304     }
3305   };
3306 
3307   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo>
3308   {
operator ()std::hash3309     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo const & deviceMemoryOpaqueCaptureAddressInfo) const VULKAN_HPP_NOEXCEPT
3310     {
3311       std::size_t seed = 0;
3312     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.sType );
3313     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.pNext );
3314     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.memory );
3315       return seed;
3316     }
3317   };
3318 
3319   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD>
3320   {
operator ()std::hash3321     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD const & deviceMemoryOverallocationCreateInfoAMD) const VULKAN_HPP_NOEXCEPT
3322     {
3323       std::size_t seed = 0;
3324     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.sType );
3325     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.pNext );
3326     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.overallocationBehavior );
3327       return seed;
3328     }
3329   };
3330 
3331   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT>
3332   {
operator ()std::hash3333     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT const & deviceMemoryReportCallbackDataEXT) const VULKAN_HPP_NOEXCEPT
3334     {
3335       std::size_t seed = 0;
3336     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.sType );
3337     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.pNext );
3338     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.flags );
3339     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.type );
3340     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.memoryObjectId );
3341     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.size );
3342     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.objectType );
3343     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.objectHandle );
3344     VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.heapIndex );
3345       return seed;
3346     }
3347   };
3348 
3349   template <> struct hash<VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo>
3350   {
operator ()std::hash3351     std::size_t operator()(VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo const & devicePrivateDataCreateInfo) const VULKAN_HPP_NOEXCEPT
3352     {
3353       std::size_t seed = 0;
3354     VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.sType );
3355     VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.pNext );
3356     VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.privateDataSlotRequestCount );
3357       return seed;
3358     }
3359   };
3360 
3361   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR>
3362   {
operator ()std::hash3363     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfoKHR const & deviceQueueGlobalPriorityCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
3364     {
3365       std::size_t seed = 0;
3366     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfoKHR.sType );
3367     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfoKHR.pNext );
3368     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfoKHR.globalPriority );
3369       return seed;
3370     }
3371   };
3372 
3373   template <> struct hash<VULKAN_HPP_NAMESPACE::DeviceQueueInfo2>
3374   {
operator ()std::hash3375     std::size_t operator()(VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & deviceQueueInfo2) const VULKAN_HPP_NOEXCEPT
3376     {
3377       std::size_t seed = 0;
3378     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.sType );
3379     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.pNext );
3380     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.flags );
3381     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.queueFamilyIndex );
3382     VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.queueIndex );
3383       return seed;
3384     }
3385   };
3386 
3387   template <> struct hash<VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG>
3388   {
operator ()std::hash3389     std::size_t operator()(VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG const & directDriverLoadingInfoLUNARG) const VULKAN_HPP_NOEXCEPT
3390     {
3391       std::size_t seed = 0;
3392     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingInfoLUNARG.sType );
3393     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingInfoLUNARG.pNext );
3394     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingInfoLUNARG.flags );
3395     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingInfoLUNARG.pfnGetInstanceProcAddr );
3396       return seed;
3397     }
3398   };
3399 
3400   template <> struct hash<VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG>
3401   {
operator ()std::hash3402     std::size_t operator()(VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG const & directDriverLoadingListLUNARG) const VULKAN_HPP_NOEXCEPT
3403     {
3404       std::size_t seed = 0;
3405     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.sType );
3406     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.pNext );
3407     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.mode );
3408     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.driverCount );
3409     VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.pDrivers );
3410       return seed;
3411     }
3412   };
3413 
3414   #if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
3415 template <> struct hash<VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT>
3416   {
operator ()std::hash3417     std::size_t operator()(VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const & directFBSurfaceCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
3418     {
3419       std::size_t seed = 0;
3420     VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.sType );
3421     VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.pNext );
3422     VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.flags );
3423     VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.dfb );
3424     VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.surface );
3425       return seed;
3426     }
3427   };
3428 #endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
3429 
3430   template <> struct hash<VULKAN_HPP_NAMESPACE::DispatchIndirectCommand>
3431   {
operator ()std::hash3432     std::size_t operator()(VULKAN_HPP_NAMESPACE::DispatchIndirectCommand const & dispatchIndirectCommand) const VULKAN_HPP_NOEXCEPT
3433     {
3434       std::size_t seed = 0;
3435     VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.x );
3436     VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.y );
3437     VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.z );
3438       return seed;
3439     }
3440   };
3441 
3442   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT>
3443   {
operator ()std::hash3444     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const & displayEventInfoEXT) const VULKAN_HPP_NOEXCEPT
3445     {
3446       std::size_t seed = 0;
3447     VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.sType );
3448     VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.pNext );
3449     VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.displayEvent );
3450       return seed;
3451     }
3452   };
3453 
3454   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR>
3455   {
operator ()std::hash3456     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & displayModeParametersKHR) const VULKAN_HPP_NOEXCEPT
3457     {
3458       std::size_t seed = 0;
3459     VULKAN_HPP_HASH_COMBINE( seed, displayModeParametersKHR.visibleRegion );
3460     VULKAN_HPP_HASH_COMBINE( seed, displayModeParametersKHR.refreshRate );
3461       return seed;
3462     }
3463   };
3464 
3465   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR>
3466   {
operator ()std::hash3467     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & displayModeCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
3468     {
3469       std::size_t seed = 0;
3470     VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.sType );
3471     VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.pNext );
3472     VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.flags );
3473     VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.parameters );
3474       return seed;
3475     }
3476   };
3477 
3478   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR>
3479   {
operator ()std::hash3480     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const & displayModePropertiesKHR) const VULKAN_HPP_NOEXCEPT
3481     {
3482       std::size_t seed = 0;
3483     VULKAN_HPP_HASH_COMBINE( seed, displayModePropertiesKHR.displayMode );
3484     VULKAN_HPP_HASH_COMBINE( seed, displayModePropertiesKHR.parameters );
3485       return seed;
3486     }
3487   };
3488 
3489   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR>
3490   {
operator ()std::hash3491     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR const & displayModeProperties2KHR) const VULKAN_HPP_NOEXCEPT
3492     {
3493       std::size_t seed = 0;
3494     VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.sType );
3495     VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.pNext );
3496     VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.displayModeProperties );
3497       return seed;
3498     }
3499   };
3500 
3501   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD>
3502   {
operator ()std::hash3503     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD const & displayNativeHdrSurfaceCapabilitiesAMD) const VULKAN_HPP_NOEXCEPT
3504     {
3505       std::size_t seed = 0;
3506     VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.sType );
3507     VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.pNext );
3508     VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.localDimmingSupport );
3509       return seed;
3510     }
3511   };
3512 
3513   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR>
3514   {
operator ()std::hash3515     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const & displayPlaneCapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
3516     {
3517       std::size_t seed = 0;
3518     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.supportedAlpha );
3519     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minSrcPosition );
3520     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxSrcPosition );
3521     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minSrcExtent );
3522     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxSrcExtent );
3523     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minDstPosition );
3524     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxDstPosition );
3525     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minDstExtent );
3526     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxDstExtent );
3527       return seed;
3528     }
3529   };
3530 
3531   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR>
3532   {
operator ()std::hash3533     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR const & displayPlaneCapabilities2KHR) const VULKAN_HPP_NOEXCEPT
3534     {
3535       std::size_t seed = 0;
3536     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.sType );
3537     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.pNext );
3538     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.capabilities );
3539       return seed;
3540     }
3541   };
3542 
3543   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR>
3544   {
operator ()std::hash3545     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR const & displayPlaneInfo2KHR) const VULKAN_HPP_NOEXCEPT
3546     {
3547       std::size_t seed = 0;
3548     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.sType );
3549     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.pNext );
3550     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.mode );
3551     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.planeIndex );
3552       return seed;
3553     }
3554   };
3555 
3556   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR>
3557   {
operator ()std::hash3558     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const & displayPlanePropertiesKHR) const VULKAN_HPP_NOEXCEPT
3559     {
3560       std::size_t seed = 0;
3561     VULKAN_HPP_HASH_COMBINE( seed, displayPlanePropertiesKHR.currentDisplay );
3562     VULKAN_HPP_HASH_COMBINE( seed, displayPlanePropertiesKHR.currentStackIndex );
3563       return seed;
3564     }
3565   };
3566 
3567   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR>
3568   {
operator ()std::hash3569     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR const & displayPlaneProperties2KHR) const VULKAN_HPP_NOEXCEPT
3570     {
3571       std::size_t seed = 0;
3572     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.sType );
3573     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.pNext );
3574     VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.displayPlaneProperties );
3575       return seed;
3576     }
3577   };
3578 
3579   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT>
3580   {
operator ()std::hash3581     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT const & displayPowerInfoEXT) const VULKAN_HPP_NOEXCEPT
3582     {
3583       std::size_t seed = 0;
3584     VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.sType );
3585     VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.pNext );
3586     VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.powerState );
3587       return seed;
3588     }
3589   };
3590 
3591   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR>
3592   {
operator ()std::hash3593     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR const & displayPresentInfoKHR) const VULKAN_HPP_NOEXCEPT
3594     {
3595       std::size_t seed = 0;
3596     VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.sType );
3597     VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.pNext );
3598     VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.srcRect );
3599     VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.dstRect );
3600     VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.persistent );
3601       return seed;
3602     }
3603   };
3604 
3605   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR>
3606   {
operator ()std::hash3607     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const & displayPropertiesKHR) const VULKAN_HPP_NOEXCEPT
3608     {
3609       std::size_t seed = 0;
3610     VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.display );
3611     for ( const char* p = displayPropertiesKHR.displayName; *p != '\0'; ++p )
3612     {
3613       VULKAN_HPP_HASH_COMBINE( seed, *p );
3614     }
3615     VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.physicalDimensions );
3616     VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.physicalResolution );
3617     VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.supportedTransforms );
3618     VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.planeReorderPossible );
3619     VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.persistentContent );
3620       return seed;
3621     }
3622   };
3623 
3624   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR>
3625   {
operator ()std::hash3626     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplayProperties2KHR const & displayProperties2KHR) const VULKAN_HPP_NOEXCEPT
3627     {
3628       std::size_t seed = 0;
3629     VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.sType );
3630     VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.pNext );
3631     VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.displayProperties );
3632       return seed;
3633     }
3634   };
3635 
3636   template <> struct hash<VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR>
3637   {
operator ()std::hash3638     std::size_t operator()(VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const & displaySurfaceCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
3639     {
3640       std::size_t seed = 0;
3641     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.sType );
3642     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.pNext );
3643     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.flags );
3644     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.displayMode );
3645     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.planeIndex );
3646     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.planeStackIndex );
3647     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.transform );
3648     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.globalAlpha );
3649     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.alphaMode );
3650     VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.imageExtent );
3651       return seed;
3652     }
3653   };
3654 
3655   template <> struct hash<VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand>
3656   {
operator ()std::hash3657     std::size_t operator()(VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand const & drawIndexedIndirectCommand) const VULKAN_HPP_NOEXCEPT
3658     {
3659       std::size_t seed = 0;
3660     VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.indexCount );
3661     VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.instanceCount );
3662     VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.firstIndex );
3663     VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.vertexOffset );
3664     VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.firstInstance );
3665       return seed;
3666     }
3667   };
3668 
3669   template <> struct hash<VULKAN_HPP_NAMESPACE::DrawIndirectCommand>
3670   {
operator ()std::hash3671     std::size_t operator()(VULKAN_HPP_NAMESPACE::DrawIndirectCommand const & drawIndirectCommand) const VULKAN_HPP_NOEXCEPT
3672     {
3673       std::size_t seed = 0;
3674     VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.vertexCount );
3675     VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.instanceCount );
3676     VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.firstVertex );
3677     VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.firstInstance );
3678       return seed;
3679     }
3680   };
3681 
3682   template <> struct hash<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT>
3683   {
operator ()std::hash3684     std::size_t operator()(VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT const & drawMeshTasksIndirectCommandEXT) const VULKAN_HPP_NOEXCEPT
3685     {
3686       std::size_t seed = 0;
3687     VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandEXT.groupCountX );
3688     VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandEXT.groupCountY );
3689     VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandEXT.groupCountZ );
3690       return seed;
3691     }
3692   };
3693 
3694   template <> struct hash<VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV>
3695   {
operator ()std::hash3696     std::size_t operator()(VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV const & drawMeshTasksIndirectCommandNV) const VULKAN_HPP_NOEXCEPT
3697     {
3698       std::size_t seed = 0;
3699     VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandNV.taskCount );
3700     VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandNV.firstTask );
3701       return seed;
3702     }
3703   };
3704 
3705   template <> struct hash<VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT>
3706   {
operator ()std::hash3707     std::size_t operator()(VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT const & drmFormatModifierProperties2EXT) const VULKAN_HPP_NOEXCEPT
3708     {
3709       std::size_t seed = 0;
3710     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifier );
3711     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifierPlaneCount );
3712     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifierTilingFeatures );
3713       return seed;
3714     }
3715   };
3716 
3717   template <> struct hash<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT>
3718   {
operator ()std::hash3719     std::size_t operator()(VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT const & drmFormatModifierPropertiesEXT) const VULKAN_HPP_NOEXCEPT
3720     {
3721       std::size_t seed = 0;
3722     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifier );
3723     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifierPlaneCount );
3724     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifierTilingFeatures );
3725       return seed;
3726     }
3727   };
3728 
3729   template <> struct hash<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT>
3730   {
operator ()std::hash3731     std::size_t operator()(VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT const & drmFormatModifierPropertiesList2EXT) const VULKAN_HPP_NOEXCEPT
3732     {
3733       std::size_t seed = 0;
3734     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.sType );
3735     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.pNext );
3736     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.drmFormatModifierCount );
3737     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.pDrmFormatModifierProperties );
3738       return seed;
3739     }
3740   };
3741 
3742   template <> struct hash<VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT>
3743   {
operator ()std::hash3744     std::size_t operator()(VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT const & drmFormatModifierPropertiesListEXT) const VULKAN_HPP_NOEXCEPT
3745     {
3746       std::size_t seed = 0;
3747     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.sType );
3748     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.pNext );
3749     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.drmFormatModifierCount );
3750     VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.pDrmFormatModifierProperties );
3751       return seed;
3752     }
3753   };
3754 
3755   template <> struct hash<VULKAN_HPP_NAMESPACE::EventCreateInfo>
3756   {
operator ()std::hash3757     std::size_t operator()(VULKAN_HPP_NAMESPACE::EventCreateInfo const & eventCreateInfo) const VULKAN_HPP_NOEXCEPT
3758     {
3759       std::size_t seed = 0;
3760     VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.sType );
3761     VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.pNext );
3762     VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.flags );
3763       return seed;
3764     }
3765   };
3766 
3767   template <> struct hash<VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo>
3768   {
operator ()std::hash3769     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo const & exportFenceCreateInfo) const VULKAN_HPP_NOEXCEPT
3770     {
3771       std::size_t seed = 0;
3772     VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.sType );
3773     VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.pNext );
3774     VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.handleTypes );
3775       return seed;
3776     }
3777   };
3778 
3779   #if defined( VK_USE_PLATFORM_WIN32_KHR )
3780 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR>
3781   {
operator ()std::hash3782     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR const & exportFenceWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
3783     {
3784       std::size_t seed = 0;
3785     VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.sType );
3786     VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.pNext );
3787     VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.pAttributes );
3788     VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.dwAccess );
3789     VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.name );
3790       return seed;
3791     }
3792   };
3793 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
3794 
3795   template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo>
3796   {
operator ()std::hash3797     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo const & exportMemoryAllocateInfo) const VULKAN_HPP_NOEXCEPT
3798     {
3799       std::size_t seed = 0;
3800     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.sType );
3801     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.pNext );
3802     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.handleTypes );
3803       return seed;
3804     }
3805   };
3806 
3807   template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV>
3808   {
operator ()std::hash3809     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV const & exportMemoryAllocateInfoNV) const VULKAN_HPP_NOEXCEPT
3810     {
3811       std::size_t seed = 0;
3812     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.sType );
3813     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.pNext );
3814     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.handleTypes );
3815       return seed;
3816     }
3817   };
3818 
3819   #if defined( VK_USE_PLATFORM_WIN32_KHR )
3820 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR>
3821   {
operator ()std::hash3822     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR const & exportMemoryWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
3823     {
3824       std::size_t seed = 0;
3825     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.sType );
3826     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.pNext );
3827     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.pAttributes );
3828     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.dwAccess );
3829     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.name );
3830       return seed;
3831     }
3832   };
3833 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
3834 
3835   #if defined( VK_USE_PLATFORM_WIN32_KHR )
3836 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV>
3837   {
operator ()std::hash3838     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV const & exportMemoryWin32HandleInfoNV) const VULKAN_HPP_NOEXCEPT
3839     {
3840       std::size_t seed = 0;
3841     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.sType );
3842     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.pNext );
3843     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.pAttributes );
3844     VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.dwAccess );
3845       return seed;
3846     }
3847   };
3848 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
3849 
3850   #if defined( VK_USE_PLATFORM_METAL_EXT )
3851 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT>
3852   {
operator ()std::hash3853     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT const & exportMetalBufferInfoEXT) const VULKAN_HPP_NOEXCEPT
3854     {
3855       std::size_t seed = 0;
3856     VULKAN_HPP_HASH_COMBINE( seed, exportMetalBufferInfoEXT.sType );
3857     VULKAN_HPP_HASH_COMBINE( seed, exportMetalBufferInfoEXT.pNext );
3858     VULKAN_HPP_HASH_COMBINE( seed, exportMetalBufferInfoEXT.memory );
3859     VULKAN_HPP_HASH_COMBINE( seed, exportMetalBufferInfoEXT.mtlBuffer );
3860       return seed;
3861     }
3862   };
3863 #endif /*VK_USE_PLATFORM_METAL_EXT*/
3864 
3865   #if defined( VK_USE_PLATFORM_METAL_EXT )
3866 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT>
3867   {
operator ()std::hash3868     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT const & exportMetalCommandQueueInfoEXT) const VULKAN_HPP_NOEXCEPT
3869     {
3870       std::size_t seed = 0;
3871     VULKAN_HPP_HASH_COMBINE( seed, exportMetalCommandQueueInfoEXT.sType );
3872     VULKAN_HPP_HASH_COMBINE( seed, exportMetalCommandQueueInfoEXT.pNext );
3873     VULKAN_HPP_HASH_COMBINE( seed, exportMetalCommandQueueInfoEXT.queue );
3874     VULKAN_HPP_HASH_COMBINE( seed, exportMetalCommandQueueInfoEXT.mtlCommandQueue );
3875       return seed;
3876     }
3877   };
3878 #endif /*VK_USE_PLATFORM_METAL_EXT*/
3879 
3880   #if defined( VK_USE_PLATFORM_METAL_EXT )
3881 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT>
3882   {
operator ()std::hash3883     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT const & exportMetalDeviceInfoEXT) const VULKAN_HPP_NOEXCEPT
3884     {
3885       std::size_t seed = 0;
3886     VULKAN_HPP_HASH_COMBINE( seed, exportMetalDeviceInfoEXT.sType );
3887     VULKAN_HPP_HASH_COMBINE( seed, exportMetalDeviceInfoEXT.pNext );
3888     VULKAN_HPP_HASH_COMBINE( seed, exportMetalDeviceInfoEXT.mtlDevice );
3889       return seed;
3890     }
3891   };
3892 #endif /*VK_USE_PLATFORM_METAL_EXT*/
3893 
3894   #if defined( VK_USE_PLATFORM_METAL_EXT )
3895 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT>
3896   {
operator ()std::hash3897     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT const & exportMetalIOSurfaceInfoEXT) const VULKAN_HPP_NOEXCEPT
3898     {
3899       std::size_t seed = 0;
3900     VULKAN_HPP_HASH_COMBINE( seed, exportMetalIOSurfaceInfoEXT.sType );
3901     VULKAN_HPP_HASH_COMBINE( seed, exportMetalIOSurfaceInfoEXT.pNext );
3902     VULKAN_HPP_HASH_COMBINE( seed, exportMetalIOSurfaceInfoEXT.image );
3903     VULKAN_HPP_HASH_COMBINE( seed, exportMetalIOSurfaceInfoEXT.ioSurface );
3904       return seed;
3905     }
3906   };
3907 #endif /*VK_USE_PLATFORM_METAL_EXT*/
3908 
3909   #if defined( VK_USE_PLATFORM_METAL_EXT )
3910 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT>
3911   {
operator ()std::hash3912     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT const & exportMetalObjectCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
3913     {
3914       std::size_t seed = 0;
3915     VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectCreateInfoEXT.sType );
3916     VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectCreateInfoEXT.pNext );
3917     VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectCreateInfoEXT.exportObjectType );
3918       return seed;
3919     }
3920   };
3921 #endif /*VK_USE_PLATFORM_METAL_EXT*/
3922 
3923   #if defined( VK_USE_PLATFORM_METAL_EXT )
3924 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT>
3925   {
operator ()std::hash3926     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT const & exportMetalObjectsInfoEXT) const VULKAN_HPP_NOEXCEPT
3927     {
3928       std::size_t seed = 0;
3929     VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectsInfoEXT.sType );
3930     VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectsInfoEXT.pNext );
3931       return seed;
3932     }
3933   };
3934 #endif /*VK_USE_PLATFORM_METAL_EXT*/
3935 
3936   #if defined( VK_USE_PLATFORM_METAL_EXT )
3937 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT>
3938   {
operator ()std::hash3939     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT const & exportMetalSharedEventInfoEXT) const VULKAN_HPP_NOEXCEPT
3940     {
3941       std::size_t seed = 0;
3942     VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.sType );
3943     VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.pNext );
3944     VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.semaphore );
3945     VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.event );
3946     VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.mtlSharedEvent );
3947       return seed;
3948     }
3949   };
3950 #endif /*VK_USE_PLATFORM_METAL_EXT*/
3951 
3952   #if defined( VK_USE_PLATFORM_METAL_EXT )
3953 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT>
3954   {
operator ()std::hash3955     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT const & exportMetalTextureInfoEXT) const VULKAN_HPP_NOEXCEPT
3956     {
3957       std::size_t seed = 0;
3958     VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.sType );
3959     VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.pNext );
3960     VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.image );
3961     VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.imageView );
3962     VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.bufferView );
3963     VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.plane );
3964     VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.mtlTexture );
3965       return seed;
3966     }
3967   };
3968 #endif /*VK_USE_PLATFORM_METAL_EXT*/
3969 
3970   template <> struct hash<VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo>
3971   {
operator ()std::hash3972     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo const & exportSemaphoreCreateInfo) const VULKAN_HPP_NOEXCEPT
3973     {
3974       std::size_t seed = 0;
3975     VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.sType );
3976     VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.pNext );
3977     VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.handleTypes );
3978       return seed;
3979     }
3980   };
3981 
3982   #if defined( VK_USE_PLATFORM_WIN32_KHR )
3983 template <> struct hash<VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR>
3984   {
operator ()std::hash3985     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR const & exportSemaphoreWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
3986     {
3987       std::size_t seed = 0;
3988     VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.sType );
3989     VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.pNext );
3990     VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.pAttributes );
3991     VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.dwAccess );
3992     VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.name );
3993       return seed;
3994     }
3995   };
3996 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
3997 
3998   template <> struct hash<VULKAN_HPP_NAMESPACE::ExtensionProperties>
3999   {
operator ()std::hash4000     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExtensionProperties const & extensionProperties) const VULKAN_HPP_NOEXCEPT
4001     {
4002       std::size_t seed = 0;
4003     for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i )
4004     {
4005       VULKAN_HPP_HASH_COMBINE( seed, extensionProperties.extensionName[i] );
4006     }
4007     VULKAN_HPP_HASH_COMBINE( seed, extensionProperties.specVersion );
4008       return seed;
4009     }
4010   };
4011 
4012   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalMemoryProperties>
4013   {
operator ()std::hash4014     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const & externalMemoryProperties) const VULKAN_HPP_NOEXCEPT
4015     {
4016       std::size_t seed = 0;
4017     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.externalMemoryFeatures );
4018     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.exportFromImportedHandleTypes );
4019     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.compatibleHandleTypes );
4020       return seed;
4021     }
4022   };
4023 
4024   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalBufferProperties>
4025   {
operator ()std::hash4026     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalBufferProperties const & externalBufferProperties) const VULKAN_HPP_NOEXCEPT
4027     {
4028       std::size_t seed = 0;
4029     VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.sType );
4030     VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.pNext );
4031     VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.externalMemoryProperties );
4032       return seed;
4033     }
4034   };
4035 
4036   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalFenceProperties>
4037   {
operator ()std::hash4038     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalFenceProperties const & externalFenceProperties) const VULKAN_HPP_NOEXCEPT
4039     {
4040       std::size_t seed = 0;
4041     VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.sType );
4042     VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.pNext );
4043     VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.exportFromImportedHandleTypes );
4044     VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.compatibleHandleTypes );
4045     VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.externalFenceFeatures );
4046       return seed;
4047     }
4048   };
4049 
4050   #if defined( VK_USE_PLATFORM_ANDROID_KHR )
4051 template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalFormatANDROID>
4052   {
operator ()std::hash4053     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalFormatANDROID const & externalFormatANDROID) const VULKAN_HPP_NOEXCEPT
4054     {
4055       std::size_t seed = 0;
4056     VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.sType );
4057     VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.pNext );
4058     VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.externalFormat );
4059       return seed;
4060     }
4061   };
4062 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4063 
4064   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties>
4065   {
operator ()std::hash4066     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties const & externalImageFormatProperties) const VULKAN_HPP_NOEXCEPT
4067     {
4068       std::size_t seed = 0;
4069     VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.sType );
4070     VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.pNext );
4071     VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.externalMemoryProperties );
4072       return seed;
4073     }
4074   };
4075 
4076   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageFormatProperties>
4077   {
operator ()std::hash4078     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageFormatProperties const & imageFormatProperties) const VULKAN_HPP_NOEXCEPT
4079     {
4080       std::size_t seed = 0;
4081     VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxExtent );
4082     VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxMipLevels );
4083     VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxArrayLayers );
4084     VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.sampleCounts );
4085     VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxResourceSize );
4086       return seed;
4087     }
4088   };
4089 
4090   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV>
4091   {
operator ()std::hash4092     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV const & externalImageFormatPropertiesNV) const VULKAN_HPP_NOEXCEPT
4093     {
4094       std::size_t seed = 0;
4095     VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.imageFormatProperties );
4096     VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.externalMemoryFeatures );
4097     VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.exportFromImportedHandleTypes );
4098     VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.compatibleHandleTypes );
4099       return seed;
4100     }
4101   };
4102 
4103   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo>
4104   {
operator ()std::hash4105     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo const & externalMemoryBufferCreateInfo) const VULKAN_HPP_NOEXCEPT
4106     {
4107       std::size_t seed = 0;
4108     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.sType );
4109     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.pNext );
4110     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.handleTypes );
4111       return seed;
4112     }
4113   };
4114 
4115   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo>
4116   {
operator ()std::hash4117     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo const & externalMemoryImageCreateInfo) const VULKAN_HPP_NOEXCEPT
4118     {
4119       std::size_t seed = 0;
4120     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.sType );
4121     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.pNext );
4122     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.handleTypes );
4123       return seed;
4124     }
4125   };
4126 
4127   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV>
4128   {
operator ()std::hash4129     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV const & externalMemoryImageCreateInfoNV) const VULKAN_HPP_NOEXCEPT
4130     {
4131       std::size_t seed = 0;
4132     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.sType );
4133     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.pNext );
4134     VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.handleTypes );
4135       return seed;
4136     }
4137   };
4138 
4139   template <> struct hash<VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties>
4140   {
operator ()std::hash4141     std::size_t operator()(VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties const & externalSemaphoreProperties) const VULKAN_HPP_NOEXCEPT
4142     {
4143       std::size_t seed = 0;
4144     VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.sType );
4145     VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.pNext );
4146     VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.exportFromImportedHandleTypes );
4147     VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.compatibleHandleTypes );
4148     VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.externalSemaphoreFeatures );
4149       return seed;
4150     }
4151   };
4152 
4153   template <> struct hash<VULKAN_HPP_NAMESPACE::FenceCreateInfo>
4154   {
operator ()std::hash4155     std::size_t operator()(VULKAN_HPP_NAMESPACE::FenceCreateInfo const & fenceCreateInfo) const VULKAN_HPP_NOEXCEPT
4156     {
4157       std::size_t seed = 0;
4158     VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.sType );
4159     VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.pNext );
4160     VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.flags );
4161       return seed;
4162     }
4163   };
4164 
4165   template <> struct hash<VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR>
4166   {
operator ()std::hash4167     std::size_t operator()(VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR const & fenceGetFdInfoKHR) const VULKAN_HPP_NOEXCEPT
4168     {
4169       std::size_t seed = 0;
4170     VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.sType );
4171     VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.pNext );
4172     VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.fence );
4173     VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.handleType );
4174       return seed;
4175     }
4176   };
4177 
4178   #if defined( VK_USE_PLATFORM_WIN32_KHR )
4179 template <> struct hash<VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR>
4180   {
operator ()std::hash4181     std::size_t operator()(VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR const & fenceGetWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
4182     {
4183       std::size_t seed = 0;
4184     VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.sType );
4185     VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.pNext );
4186     VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.fence );
4187     VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.handleType );
4188       return seed;
4189     }
4190   };
4191 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
4192 
4193   template <> struct hash<VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT>
4194   {
operator ()std::hash4195     std::size_t operator()(VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT const & filterCubicImageViewImageFormatPropertiesEXT) const VULKAN_HPP_NOEXCEPT
4196     {
4197       std::size_t seed = 0;
4198     VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.sType );
4199     VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.pNext );
4200     VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.filterCubic );
4201     VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.filterCubicMinmax );
4202       return seed;
4203     }
4204   };
4205 
4206   template <> struct hash<VULKAN_HPP_NAMESPACE::FormatProperties>
4207   {
operator ()std::hash4208     std::size_t operator()(VULKAN_HPP_NAMESPACE::FormatProperties const & formatProperties) const VULKAN_HPP_NOEXCEPT
4209     {
4210       std::size_t seed = 0;
4211     VULKAN_HPP_HASH_COMBINE( seed, formatProperties.linearTilingFeatures );
4212     VULKAN_HPP_HASH_COMBINE( seed, formatProperties.optimalTilingFeatures );
4213     VULKAN_HPP_HASH_COMBINE( seed, formatProperties.bufferFeatures );
4214       return seed;
4215     }
4216   };
4217 
4218   template <> struct hash<VULKAN_HPP_NAMESPACE::FormatProperties2>
4219   {
operator ()std::hash4220     std::size_t operator()(VULKAN_HPP_NAMESPACE::FormatProperties2 const & formatProperties2) const VULKAN_HPP_NOEXCEPT
4221     {
4222       std::size_t seed = 0;
4223     VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.sType );
4224     VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.pNext );
4225     VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.formatProperties );
4226       return seed;
4227     }
4228   };
4229 
4230   template <> struct hash<VULKAN_HPP_NAMESPACE::FormatProperties3>
4231   {
operator ()std::hash4232     std::size_t operator()(VULKAN_HPP_NAMESPACE::FormatProperties3 const & formatProperties3) const VULKAN_HPP_NOEXCEPT
4233     {
4234       std::size_t seed = 0;
4235     VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.sType );
4236     VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.pNext );
4237     VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.linearTilingFeatures );
4238     VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.optimalTilingFeatures );
4239     VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.bufferFeatures );
4240       return seed;
4241     }
4242   };
4243 
4244   template <> struct hash<VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR>
4245   {
operator ()std::hash4246     std::size_t operator()(VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR const & fragmentShadingRateAttachmentInfoKHR) const VULKAN_HPP_NOEXCEPT
4247     {
4248       std::size_t seed = 0;
4249     VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.sType );
4250     VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.pNext );
4251     VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.pFragmentShadingRateAttachment );
4252     VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.shadingRateAttachmentTexelSize );
4253       return seed;
4254     }
4255   };
4256 
4257   template <> struct hash<VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo>
4258   {
operator ()std::hash4259     std::size_t operator()(VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo const & framebufferAttachmentImageInfo) const VULKAN_HPP_NOEXCEPT
4260     {
4261       std::size_t seed = 0;
4262     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.sType );
4263     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.pNext );
4264     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.flags );
4265     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.usage );
4266     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.width );
4267     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.height );
4268     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.layerCount );
4269     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.viewFormatCount );
4270     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.pViewFormats );
4271       return seed;
4272     }
4273   };
4274 
4275   template <> struct hash<VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo>
4276   {
operator ()std::hash4277     std::size_t operator()(VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo const & framebufferAttachmentsCreateInfo) const VULKAN_HPP_NOEXCEPT
4278     {
4279       std::size_t seed = 0;
4280     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.sType );
4281     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.pNext );
4282     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.attachmentImageInfoCount );
4283     VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.pAttachmentImageInfos );
4284       return seed;
4285     }
4286   };
4287 
4288   template <> struct hash<VULKAN_HPP_NAMESPACE::FramebufferCreateInfo>
4289   {
operator ()std::hash4290     std::size_t operator()(VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & framebufferCreateInfo) const VULKAN_HPP_NOEXCEPT
4291     {
4292       std::size_t seed = 0;
4293     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.sType );
4294     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.pNext );
4295     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.flags );
4296     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.renderPass );
4297     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.attachmentCount );
4298     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.pAttachments );
4299     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.width );
4300     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.height );
4301     VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.layers );
4302       return seed;
4303     }
4304   };
4305 
4306   template <> struct hash<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV>
4307   {
operator ()std::hash4308     std::size_t operator()(VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV const & framebufferMixedSamplesCombinationNV) const VULKAN_HPP_NOEXCEPT
4309     {
4310       std::size_t seed = 0;
4311     VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.sType );
4312     VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.pNext );
4313     VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.coverageReductionMode );
4314     VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.rasterizationSamples );
4315     VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.depthStencilSamples );
4316     VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.colorSamples );
4317       return seed;
4318     }
4319   };
4320 
4321   template <> struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV>
4322   {
operator ()std::hash4323     std::size_t operator()(VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV const & indirectCommandsStreamNV) const VULKAN_HPP_NOEXCEPT
4324     {
4325       std::size_t seed = 0;
4326     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsStreamNV.buffer );
4327     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsStreamNV.offset );
4328       return seed;
4329     }
4330   };
4331 
4332   template <> struct hash<VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV>
4333   {
operator ()std::hash4334     std::size_t operator()(VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV const & generatedCommandsInfoNV) const VULKAN_HPP_NOEXCEPT
4335     {
4336       std::size_t seed = 0;
4337     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sType );
4338     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pNext );
4339     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pipelineBindPoint );
4340     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pipeline );
4341     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.indirectCommandsLayout );
4342     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.streamCount );
4343     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pStreams );
4344     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCount );
4345     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessBuffer );
4346     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessOffset );
4347     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessSize );
4348     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCountBuffer );
4349     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCountOffset );
4350     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesIndexBuffer );
4351     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesIndexOffset );
4352       return seed;
4353     }
4354   };
4355 
4356   template <> struct hash<VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV>
4357   {
operator ()std::hash4358     std::size_t operator()(VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV const & generatedCommandsMemoryRequirementsInfoNV) const VULKAN_HPP_NOEXCEPT
4359     {
4360       std::size_t seed = 0;
4361     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.sType );
4362     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pNext );
4363     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pipelineBindPoint );
4364     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pipeline );
4365     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.indirectCommandsLayout );
4366     VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.maxSequencesCount );
4367       return seed;
4368     }
4369   };
4370 
4371   template <> struct hash<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription>
4372   {
operator ()std::hash4373     std::size_t operator()(VULKAN_HPP_NAMESPACE::VertexInputBindingDescription const & vertexInputBindingDescription) const VULKAN_HPP_NOEXCEPT
4374     {
4375       std::size_t seed = 0;
4376     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.binding );
4377     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.stride );
4378     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.inputRate );
4379       return seed;
4380     }
4381   };
4382 
4383   template <> struct hash<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription>
4384   {
operator ()std::hash4385     std::size_t operator()(VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription const & vertexInputAttributeDescription) const VULKAN_HPP_NOEXCEPT
4386     {
4387       std::size_t seed = 0;
4388     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.location );
4389     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.binding );
4390     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.format );
4391     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.offset );
4392       return seed;
4393     }
4394   };
4395 
4396   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo>
4397   {
operator ()std::hash4398     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo const & pipelineVertexInputStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4399     {
4400       std::size_t seed = 0;
4401     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.sType );
4402     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pNext );
4403     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.flags );
4404     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.vertexBindingDescriptionCount );
4405     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pVertexBindingDescriptions );
4406     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.vertexAttributeDescriptionCount );
4407     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pVertexAttributeDescriptions );
4408       return seed;
4409     }
4410   };
4411 
4412   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo>
4413   {
operator ()std::hash4414     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo const & pipelineInputAssemblyStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4415     {
4416       std::size_t seed = 0;
4417     VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.sType );
4418     VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.pNext );
4419     VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.flags );
4420     VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.topology );
4421     VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.primitiveRestartEnable );
4422       return seed;
4423     }
4424   };
4425 
4426   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo>
4427   {
operator ()std::hash4428     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo const & pipelineTessellationStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4429     {
4430       std::size_t seed = 0;
4431     VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.sType );
4432     VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.pNext );
4433     VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.flags );
4434     VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.patchControlPoints );
4435       return seed;
4436     }
4437   };
4438 
4439   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo>
4440   {
operator ()std::hash4441     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo const & pipelineViewportStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4442     {
4443       std::size_t seed = 0;
4444     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.sType );
4445     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pNext );
4446     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.flags );
4447     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.viewportCount );
4448     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pViewports );
4449     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.scissorCount );
4450     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pScissors );
4451       return seed;
4452     }
4453   };
4454 
4455   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo>
4456   {
operator ()std::hash4457     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo const & pipelineRasterizationStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4458     {
4459       std::size_t seed = 0;
4460     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.sType );
4461     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.pNext );
4462     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.flags );
4463     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthClampEnable );
4464     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.rasterizerDiscardEnable );
4465     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.polygonMode );
4466     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.cullMode );
4467     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.frontFace );
4468     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasEnable );
4469     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasConstantFactor );
4470     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasClamp );
4471     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasSlopeFactor );
4472     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.lineWidth );
4473       return seed;
4474     }
4475   };
4476 
4477   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo>
4478   {
operator ()std::hash4479     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo const & pipelineMultisampleStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4480     {
4481       std::size_t seed = 0;
4482     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.sType );
4483     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.pNext );
4484     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.flags );
4485     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.rasterizationSamples );
4486     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.sampleShadingEnable );
4487     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.minSampleShading );
4488     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.pSampleMask );
4489     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.alphaToCoverageEnable );
4490     VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.alphaToOneEnable );
4491       return seed;
4492     }
4493   };
4494 
4495   template <> struct hash<VULKAN_HPP_NAMESPACE::StencilOpState>
4496   {
operator ()std::hash4497     std::size_t operator()(VULKAN_HPP_NAMESPACE::StencilOpState const & stencilOpState) const VULKAN_HPP_NOEXCEPT
4498     {
4499       std::size_t seed = 0;
4500     VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.failOp );
4501     VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.passOp );
4502     VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.depthFailOp );
4503     VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.compareOp );
4504     VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.compareMask );
4505     VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.writeMask );
4506     VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.reference );
4507       return seed;
4508     }
4509   };
4510 
4511   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo>
4512   {
operator ()std::hash4513     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo const & pipelineDepthStencilStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4514     {
4515       std::size_t seed = 0;
4516     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.sType );
4517     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.pNext );
4518     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.flags );
4519     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthTestEnable );
4520     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthWriteEnable );
4521     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthCompareOp );
4522     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthBoundsTestEnable );
4523     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.stencilTestEnable );
4524     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.front );
4525     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.back );
4526     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.minDepthBounds );
4527     VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.maxDepthBounds );
4528       return seed;
4529     }
4530   };
4531 
4532   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState>
4533   {
operator ()std::hash4534     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState const & pipelineColorBlendAttachmentState) const VULKAN_HPP_NOEXCEPT
4535     {
4536       std::size_t seed = 0;
4537     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.blendEnable );
4538     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.srcColorBlendFactor );
4539     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.dstColorBlendFactor );
4540     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.colorBlendOp );
4541     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.srcAlphaBlendFactor );
4542     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.dstAlphaBlendFactor );
4543     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.alphaBlendOp );
4544     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.colorWriteMask );
4545       return seed;
4546     }
4547   };
4548 
4549   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo>
4550   {
operator ()std::hash4551     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo const & pipelineColorBlendStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4552     {
4553       std::size_t seed = 0;
4554     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.sType );
4555     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.pNext );
4556     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.flags );
4557     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.logicOpEnable );
4558     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.logicOp );
4559     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.attachmentCount );
4560     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.pAttachments );
4561     for ( size_t i = 0; i < 4; ++i )
4562     {
4563       VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.blendConstants[i] );
4564     }
4565       return seed;
4566     }
4567   };
4568 
4569   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo>
4570   {
operator ()std::hash4571     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo const & pipelineDynamicStateCreateInfo) const VULKAN_HPP_NOEXCEPT
4572     {
4573       std::size_t seed = 0;
4574     VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.sType );
4575     VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.pNext );
4576     VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.flags );
4577     VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.dynamicStateCount );
4578     VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.pDynamicStates );
4579       return seed;
4580     }
4581   };
4582 
4583   template <> struct hash<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo>
4584   {
operator ()std::hash4585     std::size_t operator()(VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const & graphicsPipelineCreateInfo) const VULKAN_HPP_NOEXCEPT
4586     {
4587       std::size_t seed = 0;
4588     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.sType );
4589     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pNext );
4590     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.flags );
4591     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.stageCount );
4592     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pStages );
4593     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pVertexInputState );
4594     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pInputAssemblyState );
4595     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pTessellationState );
4596     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pViewportState );
4597     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pRasterizationState );
4598     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pMultisampleState );
4599     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pDepthStencilState );
4600     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pColorBlendState );
4601     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pDynamicState );
4602     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.layout );
4603     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.renderPass );
4604     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.subpass );
4605     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.basePipelineHandle );
4606     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.basePipelineIndex );
4607       return seed;
4608     }
4609   };
4610 
4611   template <> struct hash<VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT>
4612   {
operator ()std::hash4613     std::size_t operator()(VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT const & graphicsPipelineLibraryCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
4614     {
4615       std::size_t seed = 0;
4616     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineLibraryCreateInfoEXT.sType );
4617     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineLibraryCreateInfoEXT.pNext );
4618     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineLibraryCreateInfoEXT.flags );
4619       return seed;
4620     }
4621   };
4622 
4623   template <> struct hash<VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV>
4624   {
operator ()std::hash4625     std::size_t operator()(VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV const & graphicsShaderGroupCreateInfoNV) const VULKAN_HPP_NOEXCEPT
4626     {
4627       std::size_t seed = 0;
4628     VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.sType );
4629     VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pNext );
4630     VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.stageCount );
4631     VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pStages );
4632     VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pVertexInputState );
4633     VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pTessellationState );
4634       return seed;
4635     }
4636   };
4637 
4638   template <> struct hash<VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV>
4639   {
operator ()std::hash4640     std::size_t operator()(VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV const & graphicsPipelineShaderGroupsCreateInfoNV) const VULKAN_HPP_NOEXCEPT
4641     {
4642       std::size_t seed = 0;
4643     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.sType );
4644     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pNext );
4645     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.groupCount );
4646     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pGroups );
4647     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pipelineCount );
4648     VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pPipelines );
4649       return seed;
4650     }
4651   };
4652 
4653   template <> struct hash<VULKAN_HPP_NAMESPACE::XYColorEXT>
4654   {
operator ()std::hash4655     std::size_t operator()(VULKAN_HPP_NAMESPACE::XYColorEXT const & xYColorEXT) const VULKAN_HPP_NOEXCEPT
4656     {
4657       std::size_t seed = 0;
4658     VULKAN_HPP_HASH_COMBINE( seed, xYColorEXT.x );
4659     VULKAN_HPP_HASH_COMBINE( seed, xYColorEXT.y );
4660       return seed;
4661     }
4662   };
4663 
4664   template <> struct hash<VULKAN_HPP_NAMESPACE::HdrMetadataEXT>
4665   {
operator ()std::hash4666     std::size_t operator()(VULKAN_HPP_NAMESPACE::HdrMetadataEXT const & hdrMetadataEXT) const VULKAN_HPP_NOEXCEPT
4667     {
4668       std::size_t seed = 0;
4669     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.sType );
4670     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.pNext );
4671     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryRed );
4672     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryGreen );
4673     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryBlue );
4674     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.whitePoint );
4675     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxLuminance );
4676     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.minLuminance );
4677     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxContentLightLevel );
4678     VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxFrameAverageLightLevel );
4679       return seed;
4680     }
4681   };
4682 
4683   template <> struct hash<VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT>
4684   {
operator ()std::hash4685     std::size_t operator()(VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const & headlessSurfaceCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
4686     {
4687       std::size_t seed = 0;
4688     VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.sType );
4689     VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.pNext );
4690     VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.flags );
4691       return seed;
4692     }
4693   };
4694 
4695   #if defined( VK_USE_PLATFORM_IOS_MVK )
4696 template <> struct hash<VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK>
4697   {
operator ()std::hash4698     std::size_t operator()(VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const & iOSSurfaceCreateInfoMVK) const VULKAN_HPP_NOEXCEPT
4699     {
4700       std::size_t seed = 0;
4701     VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.sType );
4702     VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.pNext );
4703     VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.flags );
4704     VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.pView );
4705       return seed;
4706     }
4707   };
4708 #endif /*VK_USE_PLATFORM_IOS_MVK*/
4709 
4710   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageBlit>
4711   {
operator ()std::hash4712     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageBlit const & imageBlit) const VULKAN_HPP_NOEXCEPT
4713     {
4714       std::size_t seed = 0;
4715     VULKAN_HPP_HASH_COMBINE( seed, imageBlit.srcSubresource );
4716     for ( size_t i = 0; i < 2; ++i )
4717     {
4718       VULKAN_HPP_HASH_COMBINE( seed, imageBlit.srcOffsets[i] );
4719     }
4720     VULKAN_HPP_HASH_COMBINE( seed, imageBlit.dstSubresource );
4721     for ( size_t i = 0; i < 2; ++i )
4722     {
4723       VULKAN_HPP_HASH_COMBINE( seed, imageBlit.dstOffsets[i] );
4724     }
4725       return seed;
4726     }
4727   };
4728 
4729   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT>
4730   {
operator ()std::hash4731     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT const & imageCaptureDescriptorDataInfoEXT) const VULKAN_HPP_NOEXCEPT
4732     {
4733       std::size_t seed = 0;
4734     VULKAN_HPP_HASH_COMBINE( seed, imageCaptureDescriptorDataInfoEXT.sType );
4735     VULKAN_HPP_HASH_COMBINE( seed, imageCaptureDescriptorDataInfoEXT.pNext );
4736     VULKAN_HPP_HASH_COMBINE( seed, imageCaptureDescriptorDataInfoEXT.image );
4737       return seed;
4738     }
4739   };
4740 
4741   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT>
4742   {
operator ()std::hash4743     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT const & imageCompressionControlEXT) const VULKAN_HPP_NOEXCEPT
4744     {
4745       std::size_t seed = 0;
4746     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.sType );
4747     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.pNext );
4748     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.flags );
4749     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.compressionControlPlaneCount );
4750     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.pFixedRateFlags );
4751       return seed;
4752     }
4753   };
4754 
4755   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT>
4756   {
operator ()std::hash4757     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT const & imageCompressionPropertiesEXT) const VULKAN_HPP_NOEXCEPT
4758     {
4759       std::size_t seed = 0;
4760     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionPropertiesEXT.sType );
4761     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionPropertiesEXT.pNext );
4762     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionPropertiesEXT.imageCompressionFlags );
4763     VULKAN_HPP_HASH_COMBINE( seed, imageCompressionPropertiesEXT.imageCompressionFixedRateFlags );
4764       return seed;
4765     }
4766   };
4767 
4768   #if defined( VK_USE_PLATFORM_FUCHSIA )
4769 template <> struct hash<VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA>
4770   {
operator ()std::hash4771     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA const & imageFormatConstraintsInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
4772     {
4773       std::size_t seed = 0;
4774     VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.sType );
4775     VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.pNext );
4776     VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.imageCreateInfo );
4777     VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.requiredFormatFeatures );
4778     VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.flags );
4779     VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.sysmemPixelFormat );
4780     VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.colorSpaceCount );
4781     VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.pColorSpaces );
4782       return seed;
4783     }
4784   };
4785 #endif /*VK_USE_PLATFORM_FUCHSIA*/
4786 
4787   #if defined( VK_USE_PLATFORM_FUCHSIA )
4788 template <> struct hash<VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA>
4789   {
operator ()std::hash4790     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA const & imageConstraintsInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
4791     {
4792       std::size_t seed = 0;
4793     VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.sType );
4794     VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.pNext );
4795     VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.formatConstraintsCount );
4796     VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.pFormatConstraints );
4797     VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.bufferCollectionConstraints );
4798     VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.flags );
4799       return seed;
4800     }
4801   };
4802 #endif /*VK_USE_PLATFORM_FUCHSIA*/
4803 
4804   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageCopy>
4805   {
operator ()std::hash4806     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageCopy const & imageCopy) const VULKAN_HPP_NOEXCEPT
4807     {
4808       std::size_t seed = 0;
4809     VULKAN_HPP_HASH_COMBINE( seed, imageCopy.srcSubresource );
4810     VULKAN_HPP_HASH_COMBINE( seed, imageCopy.srcOffset );
4811     VULKAN_HPP_HASH_COMBINE( seed, imageCopy.dstSubresource );
4812     VULKAN_HPP_HASH_COMBINE( seed, imageCopy.dstOffset );
4813     VULKAN_HPP_HASH_COMBINE( seed, imageCopy.extent );
4814       return seed;
4815     }
4816   };
4817 
4818   template <> struct hash<VULKAN_HPP_NAMESPACE::SubresourceLayout>
4819   {
operator ()std::hash4820     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubresourceLayout const & subresourceLayout) const VULKAN_HPP_NOEXCEPT
4821     {
4822       std::size_t seed = 0;
4823     VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.offset );
4824     VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.size );
4825     VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.rowPitch );
4826     VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.arrayPitch );
4827     VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.depthPitch );
4828       return seed;
4829     }
4830   };
4831 
4832   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT>
4833   {
operator ()std::hash4834     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT const & imageDrmFormatModifierExplicitCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
4835     {
4836       std::size_t seed = 0;
4837     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.sType );
4838     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.pNext );
4839     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.drmFormatModifier );
4840     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.drmFormatModifierPlaneCount );
4841     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.pPlaneLayouts );
4842       return seed;
4843     }
4844   };
4845 
4846   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT>
4847   {
operator ()std::hash4848     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT const & imageDrmFormatModifierListCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
4849     {
4850       std::size_t seed = 0;
4851     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.sType );
4852     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.pNext );
4853     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.drmFormatModifierCount );
4854     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.pDrmFormatModifiers );
4855       return seed;
4856     }
4857   };
4858 
4859   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT>
4860   {
operator ()std::hash4861     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT const & imageDrmFormatModifierPropertiesEXT) const VULKAN_HPP_NOEXCEPT
4862     {
4863       std::size_t seed = 0;
4864     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.sType );
4865     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.pNext );
4866     VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.drmFormatModifier );
4867       return seed;
4868     }
4869   };
4870 
4871   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo>
4872   {
operator ()std::hash4873     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo const & imageFormatListCreateInfo) const VULKAN_HPP_NOEXCEPT
4874     {
4875       std::size_t seed = 0;
4876     VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.sType );
4877     VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.pNext );
4878     VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.viewFormatCount );
4879     VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.pViewFormats );
4880       return seed;
4881     }
4882   };
4883 
4884   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>
4885   {
operator ()std::hash4886     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageFormatProperties2 const & imageFormatProperties2) const VULKAN_HPP_NOEXCEPT
4887     {
4888       std::size_t seed = 0;
4889     VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.sType );
4890     VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.pNext );
4891     VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.imageFormatProperties );
4892       return seed;
4893     }
4894   };
4895 
4896   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageMemoryBarrier>
4897   {
operator ()std::hash4898     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageMemoryBarrier const & imageMemoryBarrier) const VULKAN_HPP_NOEXCEPT
4899     {
4900       std::size_t seed = 0;
4901     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.sType );
4902     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.pNext );
4903     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.srcAccessMask );
4904     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.dstAccessMask );
4905     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.oldLayout );
4906     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.newLayout );
4907     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.srcQueueFamilyIndex );
4908     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.dstQueueFamilyIndex );
4909     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.image );
4910     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.subresourceRange );
4911       return seed;
4912     }
4913   };
4914 
4915   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2>
4916   {
operator ()std::hash4917     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 const & imageMemoryRequirementsInfo2) const VULKAN_HPP_NOEXCEPT
4918     {
4919       std::size_t seed = 0;
4920     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.sType );
4921     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.pNext );
4922     VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.image );
4923       return seed;
4924     }
4925   };
4926 
4927   #if defined( VK_USE_PLATFORM_FUCHSIA )
4928 template <> struct hash<VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA>
4929   {
operator ()std::hash4930     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const & imagePipeSurfaceCreateInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
4931     {
4932       std::size_t seed = 0;
4933     VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.sType );
4934     VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.pNext );
4935     VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.flags );
4936     VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.imagePipeHandle );
4937       return seed;
4938     }
4939   };
4940 #endif /*VK_USE_PLATFORM_FUCHSIA*/
4941 
4942   template <> struct hash<VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo>
4943   {
operator ()std::hash4944     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo const & imagePlaneMemoryRequirementsInfo) const VULKAN_HPP_NOEXCEPT
4945     {
4946       std::size_t seed = 0;
4947     VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.sType );
4948     VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.pNext );
4949     VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.planeAspect );
4950       return seed;
4951     }
4952   };
4953 
4954   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageResolve>
4955   {
operator ()std::hash4956     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageResolve const & imageResolve) const VULKAN_HPP_NOEXCEPT
4957     {
4958       std::size_t seed = 0;
4959     VULKAN_HPP_HASH_COMBINE( seed, imageResolve.srcSubresource );
4960     VULKAN_HPP_HASH_COMBINE( seed, imageResolve.srcOffset );
4961     VULKAN_HPP_HASH_COMBINE( seed, imageResolve.dstSubresource );
4962     VULKAN_HPP_HASH_COMBINE( seed, imageResolve.dstOffset );
4963     VULKAN_HPP_HASH_COMBINE( seed, imageResolve.extent );
4964       return seed;
4965     }
4966   };
4967 
4968   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageResolve2>
4969   {
operator ()std::hash4970     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageResolve2 const & imageResolve2) const VULKAN_HPP_NOEXCEPT
4971     {
4972       std::size_t seed = 0;
4973     VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.sType );
4974     VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.pNext );
4975     VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.srcSubresource );
4976     VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.srcOffset );
4977     VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.dstSubresource );
4978     VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.dstOffset );
4979     VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.extent );
4980       return seed;
4981     }
4982   };
4983 
4984   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2>
4985   {
operator ()std::hash4986     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 const & imageSparseMemoryRequirementsInfo2) const VULKAN_HPP_NOEXCEPT
4987     {
4988       std::size_t seed = 0;
4989     VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.sType );
4990     VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.pNext );
4991     VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.image );
4992       return seed;
4993     }
4994   };
4995 
4996   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo>
4997   {
operator ()std::hash4998     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo const & imageStencilUsageCreateInfo) const VULKAN_HPP_NOEXCEPT
4999     {
5000       std::size_t seed = 0;
5001     VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.sType );
5002     VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.pNext );
5003     VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.stencilUsage );
5004       return seed;
5005     }
5006   };
5007 
5008   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageSubresource2EXT>
5009   {
operator ()std::hash5010     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageSubresource2EXT const & imageSubresource2EXT) const VULKAN_HPP_NOEXCEPT
5011     {
5012       std::size_t seed = 0;
5013     VULKAN_HPP_HASH_COMBINE( seed, imageSubresource2EXT.sType );
5014     VULKAN_HPP_HASH_COMBINE( seed, imageSubresource2EXT.pNext );
5015     VULKAN_HPP_HASH_COMBINE( seed, imageSubresource2EXT.imageSubresource );
5016       return seed;
5017     }
5018   };
5019 
5020   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR>
5021   {
operator ()std::hash5022     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR const & imageSwapchainCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
5023     {
5024       std::size_t seed = 0;
5025     VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.sType );
5026     VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.pNext );
5027     VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.swapchain );
5028       return seed;
5029     }
5030   };
5031 
5032   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT>
5033   {
operator ()std::hash5034     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT const & imageViewASTCDecodeModeEXT) const VULKAN_HPP_NOEXCEPT
5035     {
5036       std::size_t seed = 0;
5037     VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.sType );
5038     VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.pNext );
5039     VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.decodeMode );
5040       return seed;
5041     }
5042   };
5043 
5044   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX>
5045   {
operator ()std::hash5046     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX const & imageViewAddressPropertiesNVX) const VULKAN_HPP_NOEXCEPT
5047     {
5048       std::size_t seed = 0;
5049     VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.sType );
5050     VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.pNext );
5051     VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.deviceAddress );
5052     VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.size );
5053       return seed;
5054     }
5055   };
5056 
5057   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT>
5058   {
operator ()std::hash5059     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT const & imageViewCaptureDescriptorDataInfoEXT) const VULKAN_HPP_NOEXCEPT
5060     {
5061       std::size_t seed = 0;
5062     VULKAN_HPP_HASH_COMBINE( seed, imageViewCaptureDescriptorDataInfoEXT.sType );
5063     VULKAN_HPP_HASH_COMBINE( seed, imageViewCaptureDescriptorDataInfoEXT.pNext );
5064     VULKAN_HPP_HASH_COMBINE( seed, imageViewCaptureDescriptorDataInfoEXT.imageView );
5065       return seed;
5066     }
5067   };
5068 
5069   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageViewCreateInfo>
5070   {
operator ()std::hash5071     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & imageViewCreateInfo) const VULKAN_HPP_NOEXCEPT
5072     {
5073       std::size_t seed = 0;
5074     VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.sType );
5075     VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.pNext );
5076     VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.flags );
5077     VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.image );
5078     VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.viewType );
5079     VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.format );
5080     VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.components );
5081     VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.subresourceRange );
5082       return seed;
5083     }
5084   };
5085 
5086   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX>
5087   {
operator ()std::hash5088     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX const & imageViewHandleInfoNVX) const VULKAN_HPP_NOEXCEPT
5089     {
5090       std::size_t seed = 0;
5091     VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.sType );
5092     VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.pNext );
5093     VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.imageView );
5094     VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.descriptorType );
5095     VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.sampler );
5096       return seed;
5097     }
5098   };
5099 
5100   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT>
5101   {
operator ()std::hash5102     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT const & imageViewMinLodCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
5103     {
5104       std::size_t seed = 0;
5105     VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.sType );
5106     VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.pNext );
5107     VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.minLod );
5108       return seed;
5109     }
5110   };
5111 
5112   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM>
5113   {
operator ()std::hash5114     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM const & imageViewSampleWeightCreateInfoQCOM) const VULKAN_HPP_NOEXCEPT
5115     {
5116       std::size_t seed = 0;
5117     VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.sType );
5118     VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.pNext );
5119     VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.filterCenter );
5120     VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.filterSize );
5121     VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.numPhases );
5122       return seed;
5123     }
5124   };
5125 
5126   template <> struct hash<VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo>
5127   {
operator ()std::hash5128     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo const & imageViewUsageCreateInfo) const VULKAN_HPP_NOEXCEPT
5129     {
5130       std::size_t seed = 0;
5131     VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.sType );
5132     VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.pNext );
5133     VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.usage );
5134       return seed;
5135     }
5136   };
5137 
5138   #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5139 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID>
5140   {
operator ()std::hash5141     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID const & importAndroidHardwareBufferInfoANDROID) const VULKAN_HPP_NOEXCEPT
5142     {
5143       std::size_t seed = 0;
5144     VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.sType );
5145     VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.pNext );
5146     VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.buffer );
5147       return seed;
5148     }
5149   };
5150 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5151 
5152   template <> struct hash<VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR>
5153   {
operator ()std::hash5154     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR const & importFenceFdInfoKHR) const VULKAN_HPP_NOEXCEPT
5155     {
5156       std::size_t seed = 0;
5157     VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.sType );
5158     VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.pNext );
5159     VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.fence );
5160     VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.flags );
5161     VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.handleType );
5162     VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.fd );
5163       return seed;
5164     }
5165   };
5166 
5167   #if defined( VK_USE_PLATFORM_WIN32_KHR )
5168 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR>
5169   {
operator ()std::hash5170     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR const & importFenceWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
5171     {
5172       std::size_t seed = 0;
5173     VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.sType );
5174     VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.pNext );
5175     VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.fence );
5176     VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.flags );
5177     VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.handleType );
5178     VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.handle );
5179     VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.name );
5180       return seed;
5181     }
5182   };
5183 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
5184 
5185   #if defined( VK_USE_PLATFORM_FUCHSIA )
5186 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA>
5187   {
operator ()std::hash5188     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA const & importMemoryBufferCollectionFUCHSIA) const VULKAN_HPP_NOEXCEPT
5189     {
5190       std::size_t seed = 0;
5191     VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.sType );
5192     VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.pNext );
5193     VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.collection );
5194     VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.index );
5195       return seed;
5196     }
5197   };
5198 #endif /*VK_USE_PLATFORM_FUCHSIA*/
5199 
5200   template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR>
5201   {
operator ()std::hash5202     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR const & importMemoryFdInfoKHR) const VULKAN_HPP_NOEXCEPT
5203     {
5204       std::size_t seed = 0;
5205     VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.sType );
5206     VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.pNext );
5207     VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.handleType );
5208     VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.fd );
5209       return seed;
5210     }
5211   };
5212 
5213   template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT>
5214   {
operator ()std::hash5215     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT const & importMemoryHostPointerInfoEXT) const VULKAN_HPP_NOEXCEPT
5216     {
5217       std::size_t seed = 0;
5218     VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.sType );
5219     VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.pNext );
5220     VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.handleType );
5221     VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.pHostPointer );
5222       return seed;
5223     }
5224   };
5225 
5226   #if defined( VK_USE_PLATFORM_WIN32_KHR )
5227 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR>
5228   {
operator ()std::hash5229     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR const & importMemoryWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
5230     {
5231       std::size_t seed = 0;
5232     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.sType );
5233     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.pNext );
5234     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.handleType );
5235     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.handle );
5236     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.name );
5237       return seed;
5238     }
5239   };
5240 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
5241 
5242   #if defined( VK_USE_PLATFORM_WIN32_KHR )
5243 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV>
5244   {
operator ()std::hash5245     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV const & importMemoryWin32HandleInfoNV) const VULKAN_HPP_NOEXCEPT
5246     {
5247       std::size_t seed = 0;
5248     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.sType );
5249     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.pNext );
5250     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.handleType );
5251     VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.handle );
5252       return seed;
5253     }
5254   };
5255 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
5256 
5257   #if defined( VK_USE_PLATFORM_FUCHSIA )
5258 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA>
5259   {
operator ()std::hash5260     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA const & importMemoryZirconHandleInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
5261     {
5262       std::size_t seed = 0;
5263     VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.sType );
5264     VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.pNext );
5265     VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.handleType );
5266     VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.handle );
5267       return seed;
5268     }
5269   };
5270 #endif /*VK_USE_PLATFORM_FUCHSIA*/
5271 
5272   #if defined( VK_USE_PLATFORM_METAL_EXT )
5273 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT>
5274   {
operator ()std::hash5275     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT const & importMetalBufferInfoEXT) const VULKAN_HPP_NOEXCEPT
5276     {
5277       std::size_t seed = 0;
5278     VULKAN_HPP_HASH_COMBINE( seed, importMetalBufferInfoEXT.sType );
5279     VULKAN_HPP_HASH_COMBINE( seed, importMetalBufferInfoEXT.pNext );
5280     VULKAN_HPP_HASH_COMBINE( seed, importMetalBufferInfoEXT.mtlBuffer );
5281       return seed;
5282     }
5283   };
5284 #endif /*VK_USE_PLATFORM_METAL_EXT*/
5285 
5286   #if defined( VK_USE_PLATFORM_METAL_EXT )
5287 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT>
5288   {
operator ()std::hash5289     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT const & importMetalIOSurfaceInfoEXT) const VULKAN_HPP_NOEXCEPT
5290     {
5291       std::size_t seed = 0;
5292     VULKAN_HPP_HASH_COMBINE( seed, importMetalIOSurfaceInfoEXT.sType );
5293     VULKAN_HPP_HASH_COMBINE( seed, importMetalIOSurfaceInfoEXT.pNext );
5294     VULKAN_HPP_HASH_COMBINE( seed, importMetalIOSurfaceInfoEXT.ioSurface );
5295       return seed;
5296     }
5297   };
5298 #endif /*VK_USE_PLATFORM_METAL_EXT*/
5299 
5300   #if defined( VK_USE_PLATFORM_METAL_EXT )
5301 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT>
5302   {
operator ()std::hash5303     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT const & importMetalSharedEventInfoEXT) const VULKAN_HPP_NOEXCEPT
5304     {
5305       std::size_t seed = 0;
5306     VULKAN_HPP_HASH_COMBINE( seed, importMetalSharedEventInfoEXT.sType );
5307     VULKAN_HPP_HASH_COMBINE( seed, importMetalSharedEventInfoEXT.pNext );
5308     VULKAN_HPP_HASH_COMBINE( seed, importMetalSharedEventInfoEXT.mtlSharedEvent );
5309       return seed;
5310     }
5311   };
5312 #endif /*VK_USE_PLATFORM_METAL_EXT*/
5313 
5314   #if defined( VK_USE_PLATFORM_METAL_EXT )
5315 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT>
5316   {
operator ()std::hash5317     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT const & importMetalTextureInfoEXT) const VULKAN_HPP_NOEXCEPT
5318     {
5319       std::size_t seed = 0;
5320     VULKAN_HPP_HASH_COMBINE( seed, importMetalTextureInfoEXT.sType );
5321     VULKAN_HPP_HASH_COMBINE( seed, importMetalTextureInfoEXT.pNext );
5322     VULKAN_HPP_HASH_COMBINE( seed, importMetalTextureInfoEXT.plane );
5323     VULKAN_HPP_HASH_COMBINE( seed, importMetalTextureInfoEXT.mtlTexture );
5324       return seed;
5325     }
5326   };
5327 #endif /*VK_USE_PLATFORM_METAL_EXT*/
5328 
5329   template <> struct hash<VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR>
5330   {
operator ()std::hash5331     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR const & importSemaphoreFdInfoKHR) const VULKAN_HPP_NOEXCEPT
5332     {
5333       std::size_t seed = 0;
5334     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.sType );
5335     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.pNext );
5336     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.semaphore );
5337     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.flags );
5338     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.handleType );
5339     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.fd );
5340       return seed;
5341     }
5342   };
5343 
5344   #if defined( VK_USE_PLATFORM_WIN32_KHR )
5345 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR>
5346   {
operator ()std::hash5347     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR const & importSemaphoreWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
5348     {
5349       std::size_t seed = 0;
5350     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.sType );
5351     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.pNext );
5352     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.semaphore );
5353     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.flags );
5354     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.handleType );
5355     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.handle );
5356     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.name );
5357       return seed;
5358     }
5359   };
5360 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
5361 
5362   #if defined( VK_USE_PLATFORM_FUCHSIA )
5363 template <> struct hash<VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA>
5364   {
operator ()std::hash5365     std::size_t operator()(VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA const & importSemaphoreZirconHandleInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
5366     {
5367       std::size_t seed = 0;
5368     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.sType );
5369     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.pNext );
5370     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.semaphore );
5371     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.flags );
5372     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.handleType );
5373     VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.zirconHandle );
5374       return seed;
5375     }
5376   };
5377 #endif /*VK_USE_PLATFORM_FUCHSIA*/
5378 
5379   template <> struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV>
5380   {
operator ()std::hash5381     std::size_t operator()(VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV const & indirectCommandsLayoutTokenNV) const VULKAN_HPP_NOEXCEPT
5382     {
5383       std::size_t seed = 0;
5384     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.sType );
5385     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pNext );
5386     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.tokenType );
5387     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.stream );
5388     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.offset );
5389     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.vertexBindingUnit );
5390     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.vertexDynamicStride );
5391     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantPipelineLayout );
5392     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantShaderStageFlags );
5393     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantOffset );
5394     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantSize );
5395     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.indirectStateFlags );
5396     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.indexTypeCount );
5397     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pIndexTypes );
5398     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pIndexTypeValues );
5399       return seed;
5400     }
5401   };
5402 
5403   template <> struct hash<VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV>
5404   {
operator ()std::hash5405     std::size_t operator()(VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & indirectCommandsLayoutCreateInfoNV) const VULKAN_HPP_NOEXCEPT
5406     {
5407       std::size_t seed = 0;
5408     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.sType );
5409     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pNext );
5410     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.flags );
5411     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pipelineBindPoint );
5412     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.tokenCount );
5413     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pTokens );
5414     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.streamCount );
5415     VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pStreamStrides );
5416       return seed;
5417     }
5418   };
5419 
5420   template <> struct hash<VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL>
5421   {
operator ()std::hash5422     std::size_t operator()(VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL const & initializePerformanceApiInfoINTEL) const VULKAN_HPP_NOEXCEPT
5423     {
5424       std::size_t seed = 0;
5425     VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.sType );
5426     VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.pNext );
5427     VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.pUserData );
5428       return seed;
5429     }
5430   };
5431 
5432   template <> struct hash<VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference>
5433   {
operator ()std::hash5434     std::size_t operator()(VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference const & inputAttachmentAspectReference) const VULKAN_HPP_NOEXCEPT
5435     {
5436       std::size_t seed = 0;
5437     VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.subpass );
5438     VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.inputAttachmentIndex );
5439     VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.aspectMask );
5440       return seed;
5441     }
5442   };
5443 
5444   template <> struct hash<VULKAN_HPP_NAMESPACE::InstanceCreateInfo>
5445   {
operator ()std::hash5446     std::size_t operator()(VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & instanceCreateInfo) const VULKAN_HPP_NOEXCEPT
5447     {
5448       std::size_t seed = 0;
5449     VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.sType );
5450     VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.pNext );
5451     VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.flags );
5452     VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.pApplicationInfo );
5453     VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.enabledLayerCount );
5454     for ( size_t i = 0; i < instanceCreateInfo.enabledLayerCount; ++i )
5455     {
5456         for ( const char* p = instanceCreateInfo.ppEnabledLayerNames[i]; *p != '\0'; ++p )
5457         {
5458           VULKAN_HPP_HASH_COMBINE( seed, *p );
5459         }
5460     }
5461     VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.enabledExtensionCount );
5462     for ( size_t i = 0; i < instanceCreateInfo.enabledExtensionCount; ++i )
5463     {
5464         for ( const char* p = instanceCreateInfo.ppEnabledExtensionNames[i]; *p != '\0'; ++p )
5465         {
5466           VULKAN_HPP_HASH_COMBINE( seed, *p );
5467         }
5468     }
5469       return seed;
5470     }
5471   };
5472 
5473   template <> struct hash<VULKAN_HPP_NAMESPACE::LayerProperties>
5474   {
operator ()std::hash5475     std::size_t operator()(VULKAN_HPP_NAMESPACE::LayerProperties const & layerProperties) const VULKAN_HPP_NOEXCEPT
5476     {
5477       std::size_t seed = 0;
5478     for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i )
5479     {
5480       VULKAN_HPP_HASH_COMBINE( seed, layerProperties.layerName[i] );
5481     }
5482     VULKAN_HPP_HASH_COMBINE( seed, layerProperties.specVersion );
5483     VULKAN_HPP_HASH_COMBINE( seed, layerProperties.implementationVersion );
5484     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
5485     {
5486       VULKAN_HPP_HASH_COMBINE( seed, layerProperties.description[i] );
5487     }
5488       return seed;
5489     }
5490   };
5491 
5492   #if defined( VK_USE_PLATFORM_MACOS_MVK )
5493 template <> struct hash<VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK>
5494   {
operator ()std::hash5495     std::size_t operator()(VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const & macOSSurfaceCreateInfoMVK) const VULKAN_HPP_NOEXCEPT
5496     {
5497       std::size_t seed = 0;
5498     VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.sType );
5499     VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.pNext );
5500     VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.flags );
5501     VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.pView );
5502       return seed;
5503     }
5504   };
5505 #endif /*VK_USE_PLATFORM_MACOS_MVK*/
5506 
5507   template <> struct hash<VULKAN_HPP_NAMESPACE::MappedMemoryRange>
5508   {
operator ()std::hash5509     std::size_t operator()(VULKAN_HPP_NAMESPACE::MappedMemoryRange const & mappedMemoryRange) const VULKAN_HPP_NOEXCEPT
5510     {
5511       std::size_t seed = 0;
5512     VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.sType );
5513     VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.pNext );
5514     VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.memory );
5515     VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.offset );
5516     VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.size );
5517       return seed;
5518     }
5519   };
5520 
5521   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo>
5522   {
operator ()std::hash5523     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo const & memoryAllocateFlagsInfo) const VULKAN_HPP_NOEXCEPT
5524     {
5525       std::size_t seed = 0;
5526     VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.sType );
5527     VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.pNext );
5528     VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.flags );
5529     VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.deviceMask );
5530       return seed;
5531     }
5532   };
5533 
5534   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryAllocateInfo>
5535   {
operator ()std::hash5536     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & memoryAllocateInfo) const VULKAN_HPP_NOEXCEPT
5537     {
5538       std::size_t seed = 0;
5539     VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.sType );
5540     VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.pNext );
5541     VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.allocationSize );
5542     VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.memoryTypeIndex );
5543       return seed;
5544     }
5545   };
5546 
5547   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryBarrier>
5548   {
operator ()std::hash5549     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryBarrier const & memoryBarrier) const VULKAN_HPP_NOEXCEPT
5550     {
5551       std::size_t seed = 0;
5552     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.sType );
5553     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.pNext );
5554     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.srcAccessMask );
5555     VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.dstAccessMask );
5556       return seed;
5557     }
5558   };
5559 
5560   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo>
5561   {
operator ()std::hash5562     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo const & memoryDedicatedAllocateInfo) const VULKAN_HPP_NOEXCEPT
5563     {
5564       std::size_t seed = 0;
5565     VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.sType );
5566     VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.pNext );
5567     VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.image );
5568     VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.buffer );
5569       return seed;
5570     }
5571   };
5572 
5573   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements>
5574   {
operator ()std::hash5575     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements const & memoryDedicatedRequirements) const VULKAN_HPP_NOEXCEPT
5576     {
5577       std::size_t seed = 0;
5578     VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.sType );
5579     VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.pNext );
5580     VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.prefersDedicatedAllocation );
5581     VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.requiresDedicatedAllocation );
5582       return seed;
5583     }
5584   };
5585 
5586   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR>
5587   {
operator ()std::hash5588     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR const & memoryFdPropertiesKHR) const VULKAN_HPP_NOEXCEPT
5589     {
5590       std::size_t seed = 0;
5591     VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.sType );
5592     VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.pNext );
5593     VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.memoryTypeBits );
5594       return seed;
5595     }
5596   };
5597 
5598   #if defined( VK_USE_PLATFORM_ANDROID_KHR )
5599 template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID>
5600   {
operator ()std::hash5601     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID const & memoryGetAndroidHardwareBufferInfoANDROID) const VULKAN_HPP_NOEXCEPT
5602     {
5603       std::size_t seed = 0;
5604     VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.sType );
5605     VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.pNext );
5606     VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.memory );
5607       return seed;
5608     }
5609   };
5610 #endif /*VK_USE_PLATFORM_ANDROID_KHR*/
5611 
5612   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR>
5613   {
operator ()std::hash5614     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR const & memoryGetFdInfoKHR) const VULKAN_HPP_NOEXCEPT
5615     {
5616       std::size_t seed = 0;
5617     VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.sType );
5618     VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.pNext );
5619     VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.memory );
5620     VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.handleType );
5621       return seed;
5622     }
5623   };
5624 
5625   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV>
5626   {
operator ()std::hash5627     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV const & memoryGetRemoteAddressInfoNV) const VULKAN_HPP_NOEXCEPT
5628     {
5629       std::size_t seed = 0;
5630     VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.sType );
5631     VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.pNext );
5632     VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.memory );
5633     VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.handleType );
5634       return seed;
5635     }
5636   };
5637 
5638   #if defined( VK_USE_PLATFORM_WIN32_KHR )
5639 template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR>
5640   {
operator ()std::hash5641     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR const & memoryGetWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
5642     {
5643       std::size_t seed = 0;
5644     VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.sType );
5645     VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.pNext );
5646     VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.memory );
5647     VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.handleType );
5648       return seed;
5649     }
5650   };
5651 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
5652 
5653   #if defined( VK_USE_PLATFORM_FUCHSIA )
5654 template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA>
5655   {
operator ()std::hash5656     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA const & memoryGetZirconHandleInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
5657     {
5658       std::size_t seed = 0;
5659     VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.sType );
5660     VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.pNext );
5661     VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.memory );
5662     VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.handleType );
5663       return seed;
5664     }
5665   };
5666 #endif /*VK_USE_PLATFORM_FUCHSIA*/
5667 
5668   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryHeap>
5669   {
operator ()std::hash5670     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryHeap const & memoryHeap) const VULKAN_HPP_NOEXCEPT
5671     {
5672       std::size_t seed = 0;
5673     VULKAN_HPP_HASH_COMBINE( seed, memoryHeap.size );
5674     VULKAN_HPP_HASH_COMBINE( seed, memoryHeap.flags );
5675       return seed;
5676     }
5677   };
5678 
5679   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT>
5680   {
operator ()std::hash5681     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT const & memoryHostPointerPropertiesEXT) const VULKAN_HPP_NOEXCEPT
5682     {
5683       std::size_t seed = 0;
5684     VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.sType );
5685     VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.pNext );
5686     VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.memoryTypeBits );
5687       return seed;
5688     }
5689   };
5690 
5691   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo>
5692   {
operator ()std::hash5693     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo const & memoryOpaqueCaptureAddressAllocateInfo) const VULKAN_HPP_NOEXCEPT
5694     {
5695       std::size_t seed = 0;
5696     VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.sType );
5697     VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.pNext );
5698     VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.opaqueCaptureAddress );
5699       return seed;
5700     }
5701   };
5702 
5703   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT>
5704   {
operator ()std::hash5705     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT const & memoryPriorityAllocateInfoEXT) const VULKAN_HPP_NOEXCEPT
5706     {
5707       std::size_t seed = 0;
5708     VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.sType );
5709     VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.pNext );
5710     VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.priority );
5711       return seed;
5712     }
5713   };
5714 
5715   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryRequirements>
5716   {
operator ()std::hash5717     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryRequirements const & memoryRequirements) const VULKAN_HPP_NOEXCEPT
5718     {
5719       std::size_t seed = 0;
5720     VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.size );
5721     VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.alignment );
5722     VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.memoryTypeBits );
5723       return seed;
5724     }
5725   };
5726 
5727   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryRequirements2>
5728   {
operator ()std::hash5729     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryRequirements2 const & memoryRequirements2) const VULKAN_HPP_NOEXCEPT
5730     {
5731       std::size_t seed = 0;
5732     VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.sType );
5733     VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.pNext );
5734     VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.memoryRequirements );
5735       return seed;
5736     }
5737   };
5738 
5739   template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryType>
5740   {
operator ()std::hash5741     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryType const & memoryType) const VULKAN_HPP_NOEXCEPT
5742     {
5743       std::size_t seed = 0;
5744     VULKAN_HPP_HASH_COMBINE( seed, memoryType.propertyFlags );
5745     VULKAN_HPP_HASH_COMBINE( seed, memoryType.heapIndex );
5746       return seed;
5747     }
5748   };
5749 
5750   #if defined( VK_USE_PLATFORM_WIN32_KHR )
5751 template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR>
5752   {
operator ()std::hash5753     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR const & memoryWin32HandlePropertiesKHR) const VULKAN_HPP_NOEXCEPT
5754     {
5755       std::size_t seed = 0;
5756     VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.sType );
5757     VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.pNext );
5758     VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.memoryTypeBits );
5759       return seed;
5760     }
5761   };
5762 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
5763 
5764   #if defined( VK_USE_PLATFORM_FUCHSIA )
5765 template <> struct hash<VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA>
5766   {
operator ()std::hash5767     std::size_t operator()(VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA const & memoryZirconHandlePropertiesFUCHSIA) const VULKAN_HPP_NOEXCEPT
5768     {
5769       std::size_t seed = 0;
5770     VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.sType );
5771     VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.pNext );
5772     VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.memoryTypeBits );
5773       return seed;
5774     }
5775   };
5776 #endif /*VK_USE_PLATFORM_FUCHSIA*/
5777 
5778   #if defined( VK_USE_PLATFORM_METAL_EXT )
5779 template <> struct hash<VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT>
5780   {
operator ()std::hash5781     std::size_t operator()(VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const & metalSurfaceCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
5782     {
5783       std::size_t seed = 0;
5784     VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.sType );
5785     VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.pNext );
5786     VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.flags );
5787     VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.pLayer );
5788       return seed;
5789     }
5790   };
5791 #endif /*VK_USE_PLATFORM_METAL_EXT*/
5792 
5793   template <> struct hash<VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT>
5794   {
operator ()std::hash5795     std::size_t operator()(VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT const & micromapBuildSizesInfoEXT) const VULKAN_HPP_NOEXCEPT
5796     {
5797       std::size_t seed = 0;
5798     VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.sType );
5799     VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.pNext );
5800     VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.micromapSize );
5801     VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.buildScratchSize );
5802     VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.discardable );
5803       return seed;
5804     }
5805   };
5806 
5807   template <> struct hash<VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT>
5808   {
operator ()std::hash5809     std::size_t operator()(VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const & micromapCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
5810     {
5811       std::size_t seed = 0;
5812     VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.sType );
5813     VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.pNext );
5814     VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.createFlags );
5815     VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.buffer );
5816     VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.offset );
5817     VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.size );
5818     VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.type );
5819     VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.deviceAddress );
5820       return seed;
5821     }
5822   };
5823 
5824   template <> struct hash<VULKAN_HPP_NAMESPACE::MicromapTriangleEXT>
5825   {
operator ()std::hash5826     std::size_t operator()(VULKAN_HPP_NAMESPACE::MicromapTriangleEXT const & micromapTriangleEXT) const VULKAN_HPP_NOEXCEPT
5827     {
5828       std::size_t seed = 0;
5829     VULKAN_HPP_HASH_COMBINE( seed, micromapTriangleEXT.dataOffset );
5830     VULKAN_HPP_HASH_COMBINE( seed, micromapTriangleEXT.subdivisionLevel );
5831     VULKAN_HPP_HASH_COMBINE( seed, micromapTriangleEXT.format );
5832       return seed;
5833     }
5834   };
5835 
5836   template <> struct hash<VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT>
5837   {
operator ()std::hash5838     std::size_t operator()(VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT const & micromapVersionInfoEXT) const VULKAN_HPP_NOEXCEPT
5839     {
5840       std::size_t seed = 0;
5841     VULKAN_HPP_HASH_COMBINE( seed, micromapVersionInfoEXT.sType );
5842     VULKAN_HPP_HASH_COMBINE( seed, micromapVersionInfoEXT.pNext );
5843     VULKAN_HPP_HASH_COMBINE( seed, micromapVersionInfoEXT.pVersionData );
5844       return seed;
5845     }
5846   };
5847 
5848   template <> struct hash<VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT>
5849   {
operator ()std::hash5850     std::size_t operator()(VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT const & multiDrawIndexedInfoEXT) const VULKAN_HPP_NOEXCEPT
5851     {
5852       std::size_t seed = 0;
5853     VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.firstIndex );
5854     VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.indexCount );
5855     VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.vertexOffset );
5856       return seed;
5857     }
5858   };
5859 
5860   template <> struct hash<VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT>
5861   {
operator ()std::hash5862     std::size_t operator()(VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT const & multiDrawInfoEXT) const VULKAN_HPP_NOEXCEPT
5863     {
5864       std::size_t seed = 0;
5865     VULKAN_HPP_HASH_COMBINE( seed, multiDrawInfoEXT.firstVertex );
5866     VULKAN_HPP_HASH_COMBINE( seed, multiDrawInfoEXT.vertexCount );
5867       return seed;
5868     }
5869   };
5870 
5871   template <> struct hash<VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT>
5872   {
operator ()std::hash5873     std::size_t operator()(VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT const & multisamplePropertiesEXT) const VULKAN_HPP_NOEXCEPT
5874     {
5875       std::size_t seed = 0;
5876     VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.sType );
5877     VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.pNext );
5878     VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.maxSampleLocationGridSize );
5879       return seed;
5880     }
5881   };
5882 
5883   template <> struct hash<VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT>
5884   {
operator ()std::hash5885     std::size_t operator()(VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT const & multisampledRenderToSingleSampledInfoEXT) const VULKAN_HPP_NOEXCEPT
5886     {
5887       std::size_t seed = 0;
5888     VULKAN_HPP_HASH_COMBINE( seed, multisampledRenderToSingleSampledInfoEXT.sType );
5889     VULKAN_HPP_HASH_COMBINE( seed, multisampledRenderToSingleSampledInfoEXT.pNext );
5890     VULKAN_HPP_HASH_COMBINE( seed, multisampledRenderToSingleSampledInfoEXT.multisampledRenderToSingleSampledEnable );
5891     VULKAN_HPP_HASH_COMBINE( seed, multisampledRenderToSingleSampledInfoEXT.rasterizationSamples );
5892       return seed;
5893     }
5894   };
5895 
5896   template <> struct hash<VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX>
5897   {
operator ()std::hash5898     std::size_t operator()(VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX const & multiviewPerViewAttributesInfoNVX) const VULKAN_HPP_NOEXCEPT
5899     {
5900       std::size_t seed = 0;
5901     VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.sType );
5902     VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.pNext );
5903     VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.perViewAttributes );
5904     VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.perViewAttributesPositionXOnly );
5905       return seed;
5906     }
5907   };
5908 
5909   template <> struct hash<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT>
5910   {
operator ()std::hash5911     std::size_t operator()(VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT const & mutableDescriptorTypeListEXT) const VULKAN_HPP_NOEXCEPT
5912     {
5913       std::size_t seed = 0;
5914     VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeListEXT.descriptorTypeCount );
5915     VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeListEXT.pDescriptorTypes );
5916       return seed;
5917     }
5918   };
5919 
5920   template <> struct hash<VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT>
5921   {
operator ()std::hash5922     std::size_t operator()(VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT const & mutableDescriptorTypeCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
5923     {
5924       std::size_t seed = 0;
5925     VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoEXT.sType );
5926     VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoEXT.pNext );
5927     VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoEXT.mutableDescriptorTypeListCount );
5928     VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoEXT.pMutableDescriptorTypeLists );
5929       return seed;
5930     }
5931   };
5932 
5933   template <> struct hash<VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT>
5934   {
operator ()std::hash5935     std::size_t operator()(VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT const & opaqueCaptureDescriptorDataCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
5936     {
5937       std::size_t seed = 0;
5938     VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDescriptorDataCreateInfoEXT.sType );
5939     VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDescriptorDataCreateInfoEXT.pNext );
5940     VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDescriptorDataCreateInfoEXT.opaqueCaptureDescriptorData );
5941       return seed;
5942     }
5943   };
5944 
5945   template <> struct hash<VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV>
5946   {
operator ()std::hash5947     std::size_t operator()(VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV const & opticalFlowExecuteInfoNV) const VULKAN_HPP_NOEXCEPT
5948     {
5949       std::size_t seed = 0;
5950     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.sType );
5951     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.pNext );
5952     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.flags );
5953     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.regionCount );
5954     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.pRegions );
5955       return seed;
5956     }
5957   };
5958 
5959   template <> struct hash<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV>
5960   {
operator ()std::hash5961     std::size_t operator()(VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV const & opticalFlowImageFormatInfoNV) const VULKAN_HPP_NOEXCEPT
5962     {
5963       std::size_t seed = 0;
5964     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatInfoNV.sType );
5965     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatInfoNV.pNext );
5966     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatInfoNV.usage );
5967       return seed;
5968     }
5969   };
5970 
5971   template <> struct hash<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV>
5972   {
operator ()std::hash5973     std::size_t operator()(VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV const & opticalFlowImageFormatPropertiesNV) const VULKAN_HPP_NOEXCEPT
5974     {
5975       std::size_t seed = 0;
5976     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatPropertiesNV.sType );
5977     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatPropertiesNV.pNext );
5978     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatPropertiesNV.format );
5979       return seed;
5980     }
5981   };
5982 
5983   template <> struct hash<VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV>
5984   {
operator ()std::hash5985     std::size_t operator()(VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const & opticalFlowSessionCreateInfoNV) const VULKAN_HPP_NOEXCEPT
5986     {
5987       std::size_t seed = 0;
5988     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.sType );
5989     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.pNext );
5990     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.width );
5991     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.height );
5992     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.imageFormat );
5993     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.flowVectorFormat );
5994     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.costFormat );
5995     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.outputGridSize );
5996     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.hintGridSize );
5997     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.performanceLevel );
5998     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.flags );
5999       return seed;
6000     }
6001   };
6002 
6003   template <> struct hash<VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV>
6004   {
operator ()std::hash6005     std::size_t operator()(VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV const & opticalFlowSessionCreatePrivateDataInfoNV) const VULKAN_HPP_NOEXCEPT
6006     {
6007       std::size_t seed = 0;
6008     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.sType );
6009     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.pNext );
6010     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.id );
6011     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.size );
6012     VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.pPrivateData );
6013       return seed;
6014     }
6015   };
6016 
6017   template <> struct hash<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE>
6018   {
operator ()std::hash6019     std::size_t operator()(VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE const & pastPresentationTimingGOOGLE) const VULKAN_HPP_NOEXCEPT
6020     {
6021       std::size_t seed = 0;
6022     VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.presentID );
6023     VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.desiredPresentTime );
6024     VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.actualPresentTime );
6025     VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.earliestPresentTime );
6026     VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.presentMargin );
6027       return seed;
6028     }
6029   };
6030 
6031   template <> struct hash<VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL>
6032   {
operator ()std::hash6033     std::size_t operator()(VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & performanceConfigurationAcquireInfoINTEL) const VULKAN_HPP_NOEXCEPT
6034     {
6035       std::size_t seed = 0;
6036     VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.sType );
6037     VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.pNext );
6038     VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.type );
6039       return seed;
6040     }
6041   };
6042 
6043   template <> struct hash<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR>
6044   {
operator ()std::hash6045     std::size_t operator()(VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR const & performanceCounterDescriptionKHR) const VULKAN_HPP_NOEXCEPT
6046     {
6047       std::size_t seed = 0;
6048     VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.sType );
6049     VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.pNext );
6050     VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.flags );
6051     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
6052     {
6053       VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.name[i] );
6054     }
6055     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
6056     {
6057       VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.category[i] );
6058     }
6059     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
6060     {
6061       VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.description[i] );
6062     }
6063       return seed;
6064     }
6065   };
6066 
6067   template <> struct hash<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR>
6068   {
operator ()std::hash6069     std::size_t operator()(VULKAN_HPP_NAMESPACE::PerformanceCounterKHR const & performanceCounterKHR) const VULKAN_HPP_NOEXCEPT
6070     {
6071       std::size_t seed = 0;
6072     VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.sType );
6073     VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.pNext );
6074     VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.unit );
6075     VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.scope );
6076     VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.storage );
6077     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
6078     {
6079       VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.uuid[i] );
6080     }
6081       return seed;
6082     }
6083   };
6084 
6085   template <> struct hash<VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL>
6086   {
operator ()std::hash6087     std::size_t operator()(VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL const & performanceMarkerInfoINTEL) const VULKAN_HPP_NOEXCEPT
6088     {
6089       std::size_t seed = 0;
6090     VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.sType );
6091     VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.pNext );
6092     VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.marker );
6093       return seed;
6094     }
6095   };
6096 
6097   template <> struct hash<VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL>
6098   {
operator ()std::hash6099     std::size_t operator()(VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL const & performanceOverrideInfoINTEL) const VULKAN_HPP_NOEXCEPT
6100     {
6101       std::size_t seed = 0;
6102     VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.sType );
6103     VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.pNext );
6104     VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.type );
6105     VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.enable );
6106     VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.parameter );
6107       return seed;
6108     }
6109   };
6110 
6111   template <> struct hash<VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR>
6112   {
operator ()std::hash6113     std::size_t operator()(VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR const & performanceQuerySubmitInfoKHR) const VULKAN_HPP_NOEXCEPT
6114     {
6115       std::size_t seed = 0;
6116     VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.sType );
6117     VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.pNext );
6118     VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.counterPassIndex );
6119       return seed;
6120     }
6121   };
6122 
6123   template <> struct hash<VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL>
6124   {
operator ()std::hash6125     std::size_t operator()(VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL const & performanceStreamMarkerInfoINTEL) const VULKAN_HPP_NOEXCEPT
6126     {
6127       std::size_t seed = 0;
6128     VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.sType );
6129     VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.pNext );
6130     VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.marker );
6131       return seed;
6132     }
6133   };
6134 
6135   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures>
6136   {
operator ()std::hash6137     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures const & physicalDevice16BitStorageFeatures) const VULKAN_HPP_NOEXCEPT
6138     {
6139       std::size_t seed = 0;
6140     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.sType );
6141     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.pNext );
6142     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storageBuffer16BitAccess );
6143     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.uniformAndStorageBuffer16BitAccess );
6144     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storagePushConstant16 );
6145     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storageInputOutput16 );
6146       return seed;
6147     }
6148   };
6149 
6150   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT>
6151   {
operator ()std::hash6152     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT const & physicalDevice4444FormatsFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6153     {
6154       std::size_t seed = 0;
6155     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.sType );
6156     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.pNext );
6157     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 );
6158     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.formatA4B4G4R4 );
6159       return seed;
6160     }
6161   };
6162 
6163   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures>
6164   {
operator ()std::hash6165     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures const & physicalDevice8BitStorageFeatures) const VULKAN_HPP_NOEXCEPT
6166     {
6167       std::size_t seed = 0;
6168     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.sType );
6169     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.pNext );
6170     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.storageBuffer8BitAccess );
6171     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.uniformAndStorageBuffer8BitAccess );
6172     VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.storagePushConstant8 );
6173       return seed;
6174     }
6175   };
6176 
6177   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT>
6178   {
operator ()std::hash6179     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT const & physicalDeviceASTCDecodeFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6180     {
6181       std::size_t seed = 0;
6182     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.sType );
6183     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.pNext );
6184     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.decodeModeSharedExponent );
6185       return seed;
6186     }
6187   };
6188 
6189   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR>
6190   {
operator ()std::hash6191     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR const & physicalDeviceAccelerationStructureFeaturesKHR) const VULKAN_HPP_NOEXCEPT
6192     {
6193       std::size_t seed = 0;
6194     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.sType );
6195     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.pNext );
6196     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure );
6197     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureCaptureReplay );
6198     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureIndirectBuild );
6199     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureHostCommands );
6200     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind );
6201       return seed;
6202     }
6203   };
6204 
6205   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR>
6206   {
operator ()std::hash6207     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR const & physicalDeviceAccelerationStructurePropertiesKHR) const VULKAN_HPP_NOEXCEPT
6208     {
6209       std::size_t seed = 0;
6210     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.sType );
6211     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.pNext );
6212     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxGeometryCount );
6213     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxInstanceCount );
6214     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxPrimitiveCount );
6215     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxPerStageDescriptorAccelerationStructures );
6216     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxPerStageDescriptorUpdateAfterBindAccelerationStructures );
6217     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxDescriptorSetAccelerationStructures );
6218     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxDescriptorSetUpdateAfterBindAccelerationStructures );
6219     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.minAccelerationStructureScratchOffsetAlignment );
6220       return seed;
6221     }
6222   };
6223 
6224   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT>
6225   {
operator ()std::hash6226     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT const & physicalDeviceAddressBindingReportFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6227     {
6228       std::size_t seed = 0;
6229     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAddressBindingReportFeaturesEXT.sType );
6230     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAddressBindingReportFeaturesEXT.pNext );
6231     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAddressBindingReportFeaturesEXT.reportAddressBinding );
6232       return seed;
6233     }
6234   };
6235 
6236   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC>
6237   {
operator ()std::hash6238     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC const & physicalDeviceAmigoProfilingFeaturesSEC) const VULKAN_HPP_NOEXCEPT
6239     {
6240       std::size_t seed = 0;
6241     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAmigoProfilingFeaturesSEC.sType );
6242     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAmigoProfilingFeaturesSEC.pNext );
6243     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAmigoProfilingFeaturesSEC.amigoProfiling );
6244       return seed;
6245     }
6246   };
6247 
6248   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT>
6249   {
operator ()std::hash6250     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6251     {
6252       std::size_t seed = 0;
6253     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.sType );
6254     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.pNext );
6255     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.attachmentFeedbackLoopLayout );
6256       return seed;
6257     }
6258   };
6259 
6260   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT>
6261   {
operator ()std::hash6262     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & physicalDeviceBlendOperationAdvancedFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6263     {
6264       std::size_t seed = 0;
6265     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.sType );
6266     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.pNext );
6267     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.advancedBlendCoherentOperations );
6268       return seed;
6269     }
6270   };
6271 
6272   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT>
6273   {
operator ()std::hash6274     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & physicalDeviceBlendOperationAdvancedPropertiesEXT) const VULKAN_HPP_NOEXCEPT
6275     {
6276       std::size_t seed = 0;
6277     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.sType );
6278     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.pNext );
6279     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendMaxColorAttachments );
6280     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendIndependentBlend );
6281     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendNonPremultipliedSrcColor );
6282     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendNonPremultipliedDstColor );
6283     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendCorrelatedOverlap );
6284     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendAllOperations );
6285       return seed;
6286     }
6287   };
6288 
6289   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT>
6290   {
operator ()std::hash6291     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT const & physicalDeviceBorderColorSwizzleFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6292     {
6293       std::size_t seed = 0;
6294     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.sType );
6295     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.pNext );
6296     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle );
6297     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzleFromImage );
6298       return seed;
6299     }
6300   };
6301 
6302   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures>
6303   {
operator ()std::hash6304     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures const & physicalDeviceBufferDeviceAddressFeatures) const VULKAN_HPP_NOEXCEPT
6305     {
6306       std::size_t seed = 0;
6307     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.sType );
6308     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.pNext );
6309     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress );
6310     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddressCaptureReplay );
6311     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddressMultiDevice );
6312       return seed;
6313     }
6314   };
6315 
6316   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT>
6317   {
operator ()std::hash6318     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT const & physicalDeviceBufferDeviceAddressFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6319     {
6320       std::size_t seed = 0;
6321     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.sType );
6322     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.pNext );
6323     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddress );
6324     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddressCaptureReplay );
6325     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddressMultiDevice );
6326       return seed;
6327     }
6328   };
6329 
6330   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI>
6331   {
operator ()std::hash6332     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & physicalDeviceClusterCullingShaderFeaturesHUAWEI) const VULKAN_HPP_NOEXCEPT
6333     {
6334       std::size_t seed = 0;
6335     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderFeaturesHUAWEI.sType );
6336     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderFeaturesHUAWEI.pNext );
6337     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderFeaturesHUAWEI.clustercullingShader );
6338     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderFeaturesHUAWEI.multiviewClusterCullingShader );
6339       return seed;
6340     }
6341   };
6342 
6343   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI>
6344   {
operator ()std::hash6345     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & physicalDeviceClusterCullingShaderPropertiesHUAWEI) const VULKAN_HPP_NOEXCEPT
6346     {
6347       std::size_t seed = 0;
6348     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.sType );
6349     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.pNext );
6350     for ( size_t i = 0; i < 3; ++i )
6351     {
6352       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.maxWorkGroupCount[i] );
6353     }
6354     for ( size_t i = 0; i < 3; ++i )
6355     {
6356       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.maxWorkGroupSize[i] );
6357     }
6358     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.maxOutputClusterCount );
6359       return seed;
6360     }
6361   };
6362 
6363   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD>
6364   {
operator ()std::hash6365     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD const & physicalDeviceCoherentMemoryFeaturesAMD) const VULKAN_HPP_NOEXCEPT
6366     {
6367       std::size_t seed = 0;
6368     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.sType );
6369     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.pNext );
6370     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.deviceCoherentMemory );
6371       return seed;
6372     }
6373   };
6374 
6375   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT>
6376   {
operator ()std::hash6377     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT const & physicalDeviceColorWriteEnableFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6378     {
6379       std::size_t seed = 0;
6380     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.sType );
6381     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.pNext );
6382     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable );
6383       return seed;
6384     }
6385   };
6386 
6387   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV>
6388   {
operator ()std::hash6389     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesNV const & physicalDeviceComputeShaderDerivativesFeaturesNV) const VULKAN_HPP_NOEXCEPT
6390     {
6391       std::size_t seed = 0;
6392     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesNV.sType );
6393     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesNV.pNext );
6394     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesNV.computeDerivativeGroupQuads );
6395     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesNV.computeDerivativeGroupLinear );
6396       return seed;
6397     }
6398   };
6399 
6400   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT>
6401   {
operator ()std::hash6402     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT const & physicalDeviceConditionalRenderingFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6403     {
6404       std::size_t seed = 0;
6405     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.sType );
6406     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.pNext );
6407     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering );
6408     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.inheritedConditionalRendering );
6409       return seed;
6410     }
6411   };
6412 
6413   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT>
6414   {
operator ()std::hash6415     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT const & physicalDeviceConservativeRasterizationPropertiesEXT) const VULKAN_HPP_NOEXCEPT
6416     {
6417       std::size_t seed = 0;
6418     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.sType );
6419     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.pNext );
6420     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.primitiveOverestimationSize );
6421     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.maxExtraPrimitiveOverestimationSize );
6422     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.extraPrimitiveOverestimationSizeGranularity );
6423     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.primitiveUnderestimation );
6424     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.conservativePointAndLineRasterization );
6425     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.degenerateTrianglesRasterized );
6426     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.degenerateLinesRasterized );
6427     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.fullyCoveredFragmentShaderInputVariable );
6428     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.conservativeRasterizationPostDepthCoverage );
6429       return seed;
6430     }
6431   };
6432 
6433   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV>
6434   {
operator ()std::hash6435     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV const & physicalDeviceCooperativeMatrixFeaturesNV) const VULKAN_HPP_NOEXCEPT
6436     {
6437       std::size_t seed = 0;
6438     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.sType );
6439     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.pNext );
6440     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.cooperativeMatrix );
6441     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.cooperativeMatrixRobustBufferAccess );
6442       return seed;
6443     }
6444   };
6445 
6446   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV>
6447   {
operator ()std::hash6448     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV const & physicalDeviceCooperativeMatrixPropertiesNV) const VULKAN_HPP_NOEXCEPT
6449     {
6450       std::size_t seed = 0;
6451     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.sType );
6452     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.pNext );
6453     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.cooperativeMatrixSupportedStages );
6454       return seed;
6455     }
6456   };
6457 
6458   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV>
6459   {
operator ()std::hash6460     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV const & physicalDeviceCopyMemoryIndirectFeaturesNV) const VULKAN_HPP_NOEXCEPT
6461     {
6462       std::size_t seed = 0;
6463     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesNV.sType );
6464     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesNV.pNext );
6465     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesNV.indirectCopy );
6466       return seed;
6467     }
6468   };
6469 
6470   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV>
6471   {
operator ()std::hash6472     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesNV const & physicalDeviceCopyMemoryIndirectPropertiesNV) const VULKAN_HPP_NOEXCEPT
6473     {
6474       std::size_t seed = 0;
6475     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectPropertiesNV.sType );
6476     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectPropertiesNV.pNext );
6477     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectPropertiesNV.supportedQueues );
6478       return seed;
6479     }
6480   };
6481 
6482   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV>
6483   {
operator ()std::hash6484     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV const & physicalDeviceCornerSampledImageFeaturesNV) const VULKAN_HPP_NOEXCEPT
6485     {
6486       std::size_t seed = 0;
6487     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.sType );
6488     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.pNext );
6489     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.cornerSampledImage );
6490       return seed;
6491     }
6492   };
6493 
6494   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV>
6495   {
operator ()std::hash6496     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV const & physicalDeviceCoverageReductionModeFeaturesNV) const VULKAN_HPP_NOEXCEPT
6497     {
6498       std::size_t seed = 0;
6499     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.sType );
6500     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.pNext );
6501     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.coverageReductionMode );
6502       return seed;
6503     }
6504   };
6505 
6506   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT>
6507   {
operator ()std::hash6508     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT const & physicalDeviceCustomBorderColorFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6509     {
6510       std::size_t seed = 0;
6511     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.sType );
6512     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.pNext );
6513     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.customBorderColors );
6514     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.customBorderColorWithoutFormat );
6515       return seed;
6516     }
6517   };
6518 
6519   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT>
6520   {
operator ()std::hash6521     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT const & physicalDeviceCustomBorderColorPropertiesEXT) const VULKAN_HPP_NOEXCEPT
6522     {
6523       std::size_t seed = 0;
6524     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.sType );
6525     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.pNext );
6526     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.maxCustomBorderColorSamplers );
6527       return seed;
6528     }
6529   };
6530 
6531   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV>
6532   {
operator ()std::hash6533     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & physicalDeviceDedicatedAllocationImageAliasingFeaturesNV) const VULKAN_HPP_NOEXCEPT
6534     {
6535       std::size_t seed = 0;
6536     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.sType );
6537     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.pNext );
6538     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.dedicatedAllocationImageAliasing );
6539       return seed;
6540     }
6541   };
6542 
6543   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT>
6544   {
operator ()std::hash6545     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesEXT const & physicalDeviceDepthClampZeroOneFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6546     {
6547       std::size_t seed = 0;
6548     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampZeroOneFeaturesEXT.sType );
6549     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampZeroOneFeaturesEXT.pNext );
6550     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampZeroOneFeaturesEXT.depthClampZeroOne );
6551       return seed;
6552     }
6553   };
6554 
6555   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT>
6556   {
operator ()std::hash6557     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT const & physicalDeviceDepthClipControlFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6558     {
6559       std::size_t seed = 0;
6560     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.sType );
6561     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.pNext );
6562     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.depthClipControl );
6563       return seed;
6564     }
6565   };
6566 
6567   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT>
6568   {
operator ()std::hash6569     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT const & physicalDeviceDepthClipEnableFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6570     {
6571       std::size_t seed = 0;
6572     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.sType );
6573     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.pNext );
6574     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable );
6575       return seed;
6576     }
6577   };
6578 
6579   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties>
6580   {
operator ()std::hash6581     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties const & physicalDeviceDepthStencilResolveProperties) const VULKAN_HPP_NOEXCEPT
6582     {
6583       std::size_t seed = 0;
6584     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.sType );
6585     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.pNext );
6586     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.supportedDepthResolveModes );
6587     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.supportedStencilResolveModes );
6588     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.independentResolveNone );
6589     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.independentResolve );
6590       return seed;
6591     }
6592   };
6593 
6594   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT>
6595   {
operator ()std::hash6596     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & physicalDeviceDescriptorBufferDensityMapPropertiesEXT) const VULKAN_HPP_NOEXCEPT
6597     {
6598       std::size_t seed = 0;
6599     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferDensityMapPropertiesEXT.sType );
6600     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferDensityMapPropertiesEXT.pNext );
6601     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferDensityMapPropertiesEXT.combinedImageSamplerDensityMapDescriptorSize );
6602       return seed;
6603     }
6604   };
6605 
6606   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT>
6607   {
operator ()std::hash6608     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT const & physicalDeviceDescriptorBufferFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6609     {
6610       std::size_t seed = 0;
6611     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.sType );
6612     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.pNext );
6613     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.descriptorBuffer );
6614     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.descriptorBufferCaptureReplay );
6615     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.descriptorBufferImageLayoutIgnored );
6616     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.descriptorBufferPushDescriptors );
6617       return seed;
6618     }
6619   };
6620 
6621   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT>
6622   {
operator ()std::hash6623     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT const & physicalDeviceDescriptorBufferPropertiesEXT) const VULKAN_HPP_NOEXCEPT
6624     {
6625       std::size_t seed = 0;
6626     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.sType );
6627     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.pNext );
6628     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.combinedImageSamplerDescriptorSingleArray );
6629     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.bufferlessPushDescriptors );
6630     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.allowSamplerImageViewPostSubmitCreation );
6631     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.descriptorBufferOffsetAlignment );
6632     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxDescriptorBufferBindings );
6633     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxResourceDescriptorBufferBindings );
6634     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxSamplerDescriptorBufferBindings );
6635     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxEmbeddedImmutableSamplerBindings );
6636     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxEmbeddedImmutableSamplers );
6637     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.bufferCaptureReplayDescriptorDataSize );
6638     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.imageCaptureReplayDescriptorDataSize );
6639     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.imageViewCaptureReplayDescriptorDataSize );
6640     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.samplerCaptureReplayDescriptorDataSize );
6641     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.accelerationStructureCaptureReplayDescriptorDataSize );
6642     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.samplerDescriptorSize );
6643     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.combinedImageSamplerDescriptorSize );
6644     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.sampledImageDescriptorSize );
6645     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.storageImageDescriptorSize );
6646     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.uniformTexelBufferDescriptorSize );
6647     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.robustUniformTexelBufferDescriptorSize );
6648     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.storageTexelBufferDescriptorSize );
6649     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.robustStorageTexelBufferDescriptorSize );
6650     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.uniformBufferDescriptorSize );
6651     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.robustUniformBufferDescriptorSize );
6652     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.storageBufferDescriptorSize );
6653     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.robustStorageBufferDescriptorSize );
6654     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.inputAttachmentDescriptorSize );
6655     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.accelerationStructureDescriptorSize );
6656     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxSamplerDescriptorBufferRange );
6657     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxResourceDescriptorBufferRange );
6658     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.samplerDescriptorBufferAddressSpaceSize );
6659     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.resourceDescriptorBufferAddressSpaceSize );
6660     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.descriptorBufferAddressSpaceSize );
6661       return seed;
6662     }
6663   };
6664 
6665   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures>
6666   {
operator ()std::hash6667     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures const & physicalDeviceDescriptorIndexingFeatures) const VULKAN_HPP_NOEXCEPT
6668     {
6669       std::size_t seed = 0;
6670     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.sType );
6671     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.pNext );
6672     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderInputAttachmentArrayDynamicIndexing );
6673     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing );
6674     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing );
6675     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderUniformBufferArrayNonUniformIndexing );
6676     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing );
6677     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing );
6678     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageImageArrayNonUniformIndexing );
6679     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderInputAttachmentArrayNonUniformIndexing );
6680     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing );
6681     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing );
6682     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformBufferUpdateAfterBind );
6683     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind );
6684     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind );
6685     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind );
6686     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind );
6687     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind );
6688     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending );
6689     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound );
6690     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingVariableDescriptorCount );
6691     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray );
6692       return seed;
6693     }
6694   };
6695 
6696   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties>
6697   {
operator ()std::hash6698     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties const & physicalDeviceDescriptorIndexingProperties) const VULKAN_HPP_NOEXCEPT
6699     {
6700       std::size_t seed = 0;
6701     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.sType );
6702     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.pNext );
6703     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxUpdateAfterBindDescriptorsInAllPools );
6704     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderUniformBufferArrayNonUniformIndexingNative );
6705     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderSampledImageArrayNonUniformIndexingNative );
6706     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderStorageBufferArrayNonUniformIndexingNative );
6707     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderStorageImageArrayNonUniformIndexingNative );
6708     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderInputAttachmentArrayNonUniformIndexingNative );
6709     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.robustBufferAccessUpdateAfterBind );
6710     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.quadDivergentImplicitLod );
6711     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSamplers );
6712     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindUniformBuffers );
6713     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageBuffers );
6714     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSampledImages );
6715     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageImages );
6716     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindInputAttachments );
6717     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageUpdateAfterBindResources );
6718     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSamplers );
6719     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffers );
6720     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic );
6721     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffers );
6722     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic );
6723     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSampledImages );
6724     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageImages );
6725     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindInputAttachments );
6726       return seed;
6727     }
6728   };
6729 
6730   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE>
6731   {
operator ()std::hash6732     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & physicalDeviceDescriptorSetHostMappingFeaturesVALVE) const VULKAN_HPP_NOEXCEPT
6733     {
6734       std::size_t seed = 0;
6735     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorSetHostMappingFeaturesVALVE.sType );
6736     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorSetHostMappingFeaturesVALVE.pNext );
6737     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorSetHostMappingFeaturesVALVE.descriptorSetHostMapping );
6738       return seed;
6739     }
6740   };
6741 
6742   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV>
6743   {
operator ()std::hash6744     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & physicalDeviceDeviceGeneratedCommandsFeaturesNV) const VULKAN_HPP_NOEXCEPT
6745     {
6746       std::size_t seed = 0;
6747     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.sType );
6748     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.pNext );
6749     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.deviceGeneratedCommands );
6750       return seed;
6751     }
6752   };
6753 
6754   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV>
6755   {
operator ()std::hash6756     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & physicalDeviceDeviceGeneratedCommandsPropertiesNV) const VULKAN_HPP_NOEXCEPT
6757     {
6758       std::size_t seed = 0;
6759     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.sType );
6760     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.pNext );
6761     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxGraphicsShaderGroupCount );
6762     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectSequenceCount );
6763     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsTokenCount );
6764     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsStreamCount );
6765     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsTokenOffset );
6766     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsStreamStride );
6767     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minSequencesCountBufferOffsetAlignment );
6768     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minSequencesIndexBufferOffsetAlignment );
6769     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minIndirectCommandsBufferOffsetAlignment );
6770       return seed;
6771     }
6772   };
6773 
6774   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT>
6775   {
operator ()std::hash6776     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT const & physicalDeviceDeviceMemoryReportFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6777     {
6778       std::size_t seed = 0;
6779     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.sType );
6780     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.pNext );
6781     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.deviceMemoryReport );
6782       return seed;
6783     }
6784   };
6785 
6786   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV>
6787   {
operator ()std::hash6788     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV const & physicalDeviceDiagnosticsConfigFeaturesNV) const VULKAN_HPP_NOEXCEPT
6789     {
6790       std::size_t seed = 0;
6791     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.sType );
6792     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.pNext );
6793     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.diagnosticsConfig );
6794       return seed;
6795     }
6796   };
6797 
6798   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT>
6799   {
operator ()std::hash6800     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT const & physicalDeviceDiscardRectanglePropertiesEXT) const VULKAN_HPP_NOEXCEPT
6801     {
6802       std::size_t seed = 0;
6803     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.sType );
6804     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.pNext );
6805     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.maxDiscardRectangles );
6806       return seed;
6807     }
6808   };
6809 
6810   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties>
6811   {
operator ()std::hash6812     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties const & physicalDeviceDriverProperties) const VULKAN_HPP_NOEXCEPT
6813     {
6814       std::size_t seed = 0;
6815     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.sType );
6816     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.pNext );
6817     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverID );
6818     for ( size_t i = 0; i < VK_MAX_DRIVER_NAME_SIZE; ++i )
6819     {
6820       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverName[i] );
6821     }
6822     for ( size_t i = 0; i < VK_MAX_DRIVER_INFO_SIZE; ++i )
6823     {
6824       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverInfo[i] );
6825     }
6826     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.conformanceVersion );
6827       return seed;
6828     }
6829   };
6830 
6831   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT>
6832   {
operator ()std::hash6833     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT const & physicalDeviceDrmPropertiesEXT) const VULKAN_HPP_NOEXCEPT
6834     {
6835       std::size_t seed = 0;
6836     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.sType );
6837     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.pNext );
6838     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.hasPrimary );
6839     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.hasRender );
6840     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.primaryMajor );
6841     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.primaryMinor );
6842     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.renderMajor );
6843     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.renderMinor );
6844       return seed;
6845     }
6846   };
6847 
6848   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures>
6849   {
operator ()std::hash6850     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures const & physicalDeviceDynamicRenderingFeatures) const VULKAN_HPP_NOEXCEPT
6851     {
6852       std::size_t seed = 0;
6853     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.sType );
6854     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.pNext );
6855     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.dynamicRendering );
6856       return seed;
6857     }
6858   };
6859 
6860   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV>
6861   {
operator ()std::hash6862     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV const & physicalDeviceExclusiveScissorFeaturesNV) const VULKAN_HPP_NOEXCEPT
6863     {
6864       std::size_t seed = 0;
6865     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.sType );
6866     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.pNext );
6867     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.exclusiveScissor );
6868       return seed;
6869     }
6870   };
6871 
6872   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT>
6873   {
operator ()std::hash6874     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT const & physicalDeviceExtendedDynamicState2FeaturesEXT) const VULKAN_HPP_NOEXCEPT
6875     {
6876       std::size_t seed = 0;
6877     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.sType );
6878     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.pNext );
6879     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 );
6880     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2LogicOp );
6881     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2PatchControlPoints );
6882       return seed;
6883     }
6884   };
6885 
6886   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT>
6887   {
operator ()std::hash6888     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT const & physicalDeviceExtendedDynamicState3FeaturesEXT) const VULKAN_HPP_NOEXCEPT
6889     {
6890       std::size_t seed = 0;
6891     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.sType );
6892     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.pNext );
6893     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3TessellationDomainOrigin );
6894     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClampEnable );
6895     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3PolygonMode );
6896     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RasterizationSamples );
6897     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3SampleMask );
6898     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3AlphaToCoverageEnable );
6899     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3AlphaToOneEnable );
6900     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LogicOpEnable );
6901     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendEnable );
6902     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendEquation );
6903     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorWriteMask );
6904     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RasterizationStream );
6905     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ConservativeRasterizationMode );
6906     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ExtraPrimitiveOverestimationSize );
6907     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClipEnable );
6908     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3SampleLocationsEnable );
6909     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendAdvanced );
6910     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ProvokingVertexMode );
6911     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LineRasterizationMode );
6912     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LineStippleEnable );
6913     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClipNegativeOneToOne );
6914     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ViewportWScalingEnable );
6915     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ViewportSwizzle );
6916     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageToColorEnable );
6917     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageToColorLocation );
6918     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationMode );
6919     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationTableEnable );
6920     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationTable );
6921     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageReductionMode );
6922     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RepresentativeFragmentTestEnable );
6923     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ShadingRateImageEnable );
6924       return seed;
6925     }
6926   };
6927 
6928   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT>
6929   {
operator ()std::hash6930     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT const & physicalDeviceExtendedDynamicState3PropertiesEXT) const VULKAN_HPP_NOEXCEPT
6931     {
6932       std::size_t seed = 0;
6933     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3PropertiesEXT.sType );
6934     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3PropertiesEXT.pNext );
6935     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3PropertiesEXT.dynamicPrimitiveTopologyUnrestricted );
6936       return seed;
6937     }
6938   };
6939 
6940   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT>
6941   {
operator ()std::hash6942     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT const & physicalDeviceExtendedDynamicStateFeaturesEXT) const VULKAN_HPP_NOEXCEPT
6943     {
6944       std::size_t seed = 0;
6945     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.sType );
6946     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.pNext );
6947     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.extendedDynamicState );
6948       return seed;
6949     }
6950   };
6951 
6952   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo>
6953   {
operator ()std::hash6954     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo const & physicalDeviceExternalBufferInfo) const VULKAN_HPP_NOEXCEPT
6955     {
6956       std::size_t seed = 0;
6957     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.sType );
6958     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.pNext );
6959     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.flags );
6960     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.usage );
6961     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.handleType );
6962       return seed;
6963     }
6964   };
6965 
6966   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo>
6967   {
operator ()std::hash6968     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo const & physicalDeviceExternalFenceInfo) const VULKAN_HPP_NOEXCEPT
6969     {
6970       std::size_t seed = 0;
6971     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.sType );
6972     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.pNext );
6973     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.handleType );
6974       return seed;
6975     }
6976   };
6977 
6978   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo>
6979   {
operator ()std::hash6980     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo const & physicalDeviceExternalImageFormatInfo) const VULKAN_HPP_NOEXCEPT
6981     {
6982       std::size_t seed = 0;
6983     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.sType );
6984     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.pNext );
6985     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.handleType );
6986       return seed;
6987     }
6988   };
6989 
6990   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT>
6991   {
operator ()std::hash6992     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT const & physicalDeviceExternalMemoryHostPropertiesEXT) const VULKAN_HPP_NOEXCEPT
6993     {
6994       std::size_t seed = 0;
6995     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.sType );
6996     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.pNext );
6997     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.minImportedHostPointerAlignment );
6998       return seed;
6999     }
7000   };
7001 
7002   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV>
7003   {
operator ()std::hash7004     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV const & physicalDeviceExternalMemoryRDMAFeaturesNV) const VULKAN_HPP_NOEXCEPT
7005     {
7006       std::size_t seed = 0;
7007     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.sType );
7008     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.pNext );
7009     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.externalMemoryRDMA );
7010       return seed;
7011     }
7012   };
7013 
7014   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo>
7015   {
operator ()std::hash7016     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo const & physicalDeviceExternalSemaphoreInfo) const VULKAN_HPP_NOEXCEPT
7017     {
7018       std::size_t seed = 0;
7019     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.sType );
7020     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.pNext );
7021     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.handleType );
7022       return seed;
7023     }
7024   };
7025 
7026   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT>
7027   {
operator ()std::hash7028     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT const & physicalDeviceFaultFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7029     {
7030       std::size_t seed = 0;
7031     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesEXT.sType );
7032     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesEXT.pNext );
7033     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesEXT.deviceFault );
7034     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesEXT.deviceFaultVendorBinary );
7035       return seed;
7036     }
7037   };
7038 
7039   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>
7040   {
operator ()std::hash7041     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 const & physicalDeviceFeatures2) const VULKAN_HPP_NOEXCEPT
7042     {
7043       std::size_t seed = 0;
7044     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.sType );
7045     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.pNext );
7046     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.features );
7047       return seed;
7048     }
7049   };
7050 
7051   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties>
7052   {
operator ()std::hash7053     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties const & physicalDeviceFloatControlsProperties) const VULKAN_HPP_NOEXCEPT
7054     {
7055       std::size_t seed = 0;
7056     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.sType );
7057     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.pNext );
7058     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.denormBehaviorIndependence );
7059     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.roundingModeIndependence );
7060     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat16 );
7061     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat32 );
7062     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat64 );
7063     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat16 );
7064     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat32 );
7065     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat64 );
7066     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat16 );
7067     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat32 );
7068     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat64 );
7069     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat16 );
7070     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat32 );
7071     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat64 );
7072     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat16 );
7073     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat32 );
7074     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat64 );
7075       return seed;
7076     }
7077   };
7078 
7079   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT>
7080   {
operator ()std::hash7081     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT const & physicalDeviceFragmentDensityMap2FeaturesEXT) const VULKAN_HPP_NOEXCEPT
7082     {
7083       std::size_t seed = 0;
7084     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.sType );
7085     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.pNext );
7086     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.fragmentDensityMapDeferred );
7087       return seed;
7088     }
7089   };
7090 
7091   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT>
7092   {
operator ()std::hash7093     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT const & physicalDeviceFragmentDensityMap2PropertiesEXT) const VULKAN_HPP_NOEXCEPT
7094     {
7095       std::size_t seed = 0;
7096     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.sType );
7097     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.pNext );
7098     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.subsampledLoads );
7099     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.subsampledCoarseReconstructionEarlyAccess );
7100     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.maxSubsampledArrayLayers );
7101     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.maxDescriptorSetSubsampledSamplers );
7102       return seed;
7103     }
7104   };
7105 
7106   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT>
7107   {
operator ()std::hash7108     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT const & physicalDeviceFragmentDensityMapFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7109     {
7110       std::size_t seed = 0;
7111     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.sType );
7112     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.pNext );
7113     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap );
7114     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMapDynamic );
7115     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMapNonSubsampledImages );
7116       return seed;
7117     }
7118   };
7119 
7120   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM>
7121   {
operator ()std::hash7122     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM const & physicalDeviceFragmentDensityMapOffsetFeaturesQCOM) const VULKAN_HPP_NOEXCEPT
7123     {
7124       std::size_t seed = 0;
7125     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.sType );
7126     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.pNext );
7127     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesQCOM.fragmentDensityMapOffset );
7128       return seed;
7129     }
7130   };
7131 
7132   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM>
7133   {
operator ()std::hash7134     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM const & physicalDeviceFragmentDensityMapOffsetPropertiesQCOM) const VULKAN_HPP_NOEXCEPT
7135     {
7136       std::size_t seed = 0;
7137     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.sType );
7138     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.pNext );
7139     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesQCOM.fragmentDensityOffsetGranularity );
7140       return seed;
7141     }
7142   };
7143 
7144   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT>
7145   {
operator ()std::hash7146     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT const & physicalDeviceFragmentDensityMapPropertiesEXT) const VULKAN_HPP_NOEXCEPT
7147     {
7148       std::size_t seed = 0;
7149     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.sType );
7150     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.pNext );
7151     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.minFragmentDensityTexelSize );
7152     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.maxFragmentDensityTexelSize );
7153     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.fragmentDensityInvocations );
7154       return seed;
7155     }
7156   };
7157 
7158   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR>
7159   {
operator ()std::hash7160     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & physicalDeviceFragmentShaderBarycentricFeaturesKHR) const VULKAN_HPP_NOEXCEPT
7161     {
7162       std::size_t seed = 0;
7163     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesKHR.sType );
7164     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesKHR.pNext );
7165     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesKHR.fragmentShaderBarycentric );
7166       return seed;
7167     }
7168   };
7169 
7170   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR>
7171   {
operator ()std::hash7172     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & physicalDeviceFragmentShaderBarycentricPropertiesKHR) const VULKAN_HPP_NOEXCEPT
7173     {
7174       std::size_t seed = 0;
7175     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricPropertiesKHR.sType );
7176     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricPropertiesKHR.pNext );
7177     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricPropertiesKHR.triStripVertexOrderIndependentOfProvokingVertex );
7178       return seed;
7179     }
7180   };
7181 
7182   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT>
7183   {
operator ()std::hash7184     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & physicalDeviceFragmentShaderInterlockFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7185     {
7186       std::size_t seed = 0;
7187     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.sType );
7188     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.pNext );
7189     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock );
7190     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock );
7191     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock );
7192       return seed;
7193     }
7194   };
7195 
7196   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV>
7197   {
operator ()std::hash7198     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & physicalDeviceFragmentShadingRateEnumsFeaturesNV) const VULKAN_HPP_NOEXCEPT
7199     {
7200       std::size_t seed = 0;
7201     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.sType );
7202     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.pNext );
7203     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.fragmentShadingRateEnums );
7204     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.supersampleFragmentShadingRates );
7205     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.noInvocationFragmentShadingRates );
7206       return seed;
7207     }
7208   };
7209 
7210   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV>
7211   {
operator ()std::hash7212     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & physicalDeviceFragmentShadingRateEnumsPropertiesNV) const VULKAN_HPP_NOEXCEPT
7213     {
7214       std::size_t seed = 0;
7215     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.sType );
7216     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.pNext );
7217     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.maxFragmentShadingRateInvocationCount );
7218       return seed;
7219     }
7220   };
7221 
7222   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR>
7223   {
operator ()std::hash7224     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR const & physicalDeviceFragmentShadingRateFeaturesKHR) const VULKAN_HPP_NOEXCEPT
7225     {
7226       std::size_t seed = 0;
7227     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.sType );
7228     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.pNext );
7229     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.pipelineFragmentShadingRate );
7230     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.primitiveFragmentShadingRate );
7231     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.attachmentFragmentShadingRate );
7232       return seed;
7233     }
7234   };
7235 
7236   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR>
7237   {
operator ()std::hash7238     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR const & physicalDeviceFragmentShadingRateKHR) const VULKAN_HPP_NOEXCEPT
7239     {
7240       std::size_t seed = 0;
7241     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.sType );
7242     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.pNext );
7243     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.sampleCounts );
7244     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.fragmentSize );
7245       return seed;
7246     }
7247   };
7248 
7249   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR>
7250   {
operator ()std::hash7251     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR const & physicalDeviceFragmentShadingRatePropertiesKHR) const VULKAN_HPP_NOEXCEPT
7252     {
7253       std::size_t seed = 0;
7254     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.sType );
7255     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.pNext );
7256     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.minFragmentShadingRateAttachmentTexelSize );
7257     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateAttachmentTexelSize );
7258     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateAttachmentTexelSizeAspectRatio );
7259     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.primitiveFragmentShadingRateWithMultipleViewports );
7260     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.layeredShadingRateAttachments );
7261     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateNonTrivialCombinerOps );
7262     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentSize );
7263     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentSizeAspectRatio );
7264     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateCoverageSamples );
7265     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateRasterizationSamples );
7266     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithShaderDepthStencilWrites );
7267     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithSampleMask );
7268     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithShaderSampleMask );
7269     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithConservativeRasterization );
7270     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithFragmentShaderInterlock );
7271     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithCustomSampleLocations );
7272     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateStrictMultiplyCombiner );
7273       return seed;
7274     }
7275   };
7276 
7277   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR>
7278   {
operator ()std::hash7279     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeaturesKHR const & physicalDeviceGlobalPriorityQueryFeaturesKHR) const VULKAN_HPP_NOEXCEPT
7280     {
7281       std::size_t seed = 0;
7282     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeaturesKHR.sType );
7283     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeaturesKHR.pNext );
7284     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeaturesKHR.globalPriorityQuery );
7285       return seed;
7286     }
7287   };
7288 
7289   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT>
7290   {
operator ()std::hash7291     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & physicalDeviceGraphicsPipelineLibraryFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7292     {
7293       std::size_t seed = 0;
7294     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryFeaturesEXT.sType );
7295     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryFeaturesEXT.pNext );
7296     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryFeaturesEXT.graphicsPipelineLibrary );
7297       return seed;
7298     }
7299   };
7300 
7301   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT>
7302   {
operator ()std::hash7303     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & physicalDeviceGraphicsPipelineLibraryPropertiesEXT) const VULKAN_HPP_NOEXCEPT
7304     {
7305       std::size_t seed = 0;
7306     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryPropertiesEXT.sType );
7307     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryPropertiesEXT.pNext );
7308     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryPropertiesEXT.graphicsPipelineLibraryFastLinking );
7309     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryPropertiesEXT.graphicsPipelineLibraryIndependentInterpolationDecoration );
7310       return seed;
7311     }
7312   };
7313 
7314   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
7315   {
operator ()std::hash7316     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties const & physicalDeviceGroupProperties) const VULKAN_HPP_NOEXCEPT
7317     {
7318       std::size_t seed = 0;
7319     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.sType );
7320     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.pNext );
7321     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.physicalDeviceCount );
7322     for ( size_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; ++i )
7323     {
7324       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.physicalDevices[i] );
7325     }
7326     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.subsetAllocation );
7327       return seed;
7328     }
7329   };
7330 
7331   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures>
7332   {
operator ()std::hash7333     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures const & physicalDeviceHostQueryResetFeatures) const VULKAN_HPP_NOEXCEPT
7334     {
7335       std::size_t seed = 0;
7336     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.sType );
7337     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.pNext );
7338     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.hostQueryReset );
7339       return seed;
7340     }
7341   };
7342 
7343   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties>
7344   {
operator ()std::hash7345     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties const & physicalDeviceIDProperties) const VULKAN_HPP_NOEXCEPT
7346     {
7347       std::size_t seed = 0;
7348     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.sType );
7349     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.pNext );
7350     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
7351     {
7352       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceUUID[i] );
7353     }
7354     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
7355     {
7356       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.driverUUID[i] );
7357     }
7358     for ( size_t i = 0; i < VK_LUID_SIZE; ++i )
7359     {
7360       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceLUID[i] );
7361     }
7362     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceNodeMask );
7363     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceLUIDValid );
7364       return seed;
7365     }
7366   };
7367 
7368   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT>
7369   {
operator ()std::hash7370     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT const & physicalDeviceImage2DViewOf3DFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7371     {
7372       std::size_t seed = 0;
7373     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImage2DViewOf3DFeaturesEXT.sType );
7374     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImage2DViewOf3DFeaturesEXT.pNext );
7375     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImage2DViewOf3DFeaturesEXT.image2DViewOf3D );
7376     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImage2DViewOf3DFeaturesEXT.sampler2DViewOf3D );
7377       return seed;
7378     }
7379   };
7380 
7381   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT>
7382   {
operator ()std::hash7383     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT const & physicalDeviceImageCompressionControlFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7384     {
7385       std::size_t seed = 0;
7386     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlFeaturesEXT.sType );
7387     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlFeaturesEXT.pNext );
7388     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlFeaturesEXT.imageCompressionControl );
7389       return seed;
7390     }
7391   };
7392 
7393   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT>
7394   {
operator ()std::hash7395     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & physicalDeviceImageCompressionControlSwapchainFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7396     {
7397       std::size_t seed = 0;
7398     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlSwapchainFeaturesEXT.sType );
7399     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlSwapchainFeaturesEXT.pNext );
7400     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlSwapchainFeaturesEXT.imageCompressionControlSwapchain );
7401       return seed;
7402     }
7403   };
7404 
7405   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT>
7406   {
operator ()std::hash7407     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT const & physicalDeviceImageDrmFormatModifierInfoEXT) const VULKAN_HPP_NOEXCEPT
7408     {
7409       std::size_t seed = 0;
7410     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.sType );
7411     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.pNext );
7412     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.drmFormatModifier );
7413     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.sharingMode );
7414     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.queueFamilyIndexCount );
7415     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.pQueueFamilyIndices );
7416       return seed;
7417     }
7418   };
7419 
7420   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2>
7421   {
operator ()std::hash7422     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 const & physicalDeviceImageFormatInfo2) const VULKAN_HPP_NOEXCEPT
7423     {
7424       std::size_t seed = 0;
7425     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.sType );
7426     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.pNext );
7427     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.format );
7428     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.type );
7429     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.tiling );
7430     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.usage );
7431     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.flags );
7432       return seed;
7433     }
7434   };
7435 
7436   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM>
7437   {
operator ()std::hash7438     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM const & physicalDeviceImageProcessingFeaturesQCOM) const VULKAN_HPP_NOEXCEPT
7439     {
7440       std::size_t seed = 0;
7441     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.sType );
7442     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.pNext );
7443     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.textureSampleWeighted );
7444     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.textureBoxFilter );
7445     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.textureBlockMatch );
7446       return seed;
7447     }
7448   };
7449 
7450   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM>
7451   {
operator ()std::hash7452     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM const & physicalDeviceImageProcessingPropertiesQCOM) const VULKAN_HPP_NOEXCEPT
7453     {
7454       std::size_t seed = 0;
7455     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.sType );
7456     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.pNext );
7457     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.maxWeightFilterPhases );
7458     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.maxWeightFilterDimension );
7459     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.maxBlockMatchRegion );
7460     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.maxBoxFilterBlockSize );
7461       return seed;
7462     }
7463   };
7464 
7465   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures>
7466   {
operator ()std::hash7467     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures const & physicalDeviceImageRobustnessFeatures) const VULKAN_HPP_NOEXCEPT
7468     {
7469       std::size_t seed = 0;
7470     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.sType );
7471     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.pNext );
7472     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.robustImageAccess );
7473       return seed;
7474     }
7475   };
7476 
7477   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT>
7478   {
operator ()std::hash7479     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT const & physicalDeviceImageViewImageFormatInfoEXT) const VULKAN_HPP_NOEXCEPT
7480     {
7481       std::size_t seed = 0;
7482     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.sType );
7483     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.pNext );
7484     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.imageViewType );
7485       return seed;
7486     }
7487   };
7488 
7489   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT>
7490   {
operator ()std::hash7491     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT const & physicalDeviceImageViewMinLodFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7492     {
7493       std::size_t seed = 0;
7494     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.sType );
7495     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.pNext );
7496     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.minLod );
7497       return seed;
7498     }
7499   };
7500 
7501   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures>
7502   {
operator ()std::hash7503     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures const & physicalDeviceImagelessFramebufferFeatures) const VULKAN_HPP_NOEXCEPT
7504     {
7505       std::size_t seed = 0;
7506     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.sType );
7507     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.pNext );
7508     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.imagelessFramebuffer );
7509       return seed;
7510     }
7511   };
7512 
7513   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT>
7514   {
operator ()std::hash7515     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8FeaturesEXT const & physicalDeviceIndexTypeUint8FeaturesEXT) const VULKAN_HPP_NOEXCEPT
7516     {
7517       std::size_t seed = 0;
7518     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8FeaturesEXT.sType );
7519     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8FeaturesEXT.pNext );
7520     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8FeaturesEXT.indexTypeUint8 );
7521       return seed;
7522     }
7523   };
7524 
7525   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV>
7526   {
operator ()std::hash7527     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV const & physicalDeviceInheritedViewportScissorFeaturesNV) const VULKAN_HPP_NOEXCEPT
7528     {
7529       std::size_t seed = 0;
7530     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.sType );
7531     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.pNext );
7532     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.inheritedViewportScissor2D );
7533       return seed;
7534     }
7535   };
7536 
7537   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures>
7538   {
operator ()std::hash7539     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures const & physicalDeviceInlineUniformBlockFeatures) const VULKAN_HPP_NOEXCEPT
7540     {
7541       std::size_t seed = 0;
7542     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.sType );
7543     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.pNext );
7544     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.inlineUniformBlock );
7545     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.descriptorBindingInlineUniformBlockUpdateAfterBind );
7546       return seed;
7547     }
7548   };
7549 
7550   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties>
7551   {
operator ()std::hash7552     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties const & physicalDeviceInlineUniformBlockProperties) const VULKAN_HPP_NOEXCEPT
7553     {
7554       std::size_t seed = 0;
7555     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.sType );
7556     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.pNext );
7557     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxInlineUniformBlockSize );
7558     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxPerStageDescriptorInlineUniformBlocks );
7559     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks );
7560     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxDescriptorSetInlineUniformBlocks );
7561     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
7562       return seed;
7563     }
7564   };
7565 
7566   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI>
7567   {
operator ()std::hash7568     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI const & physicalDeviceInvocationMaskFeaturesHUAWEI) const VULKAN_HPP_NOEXCEPT
7569     {
7570       std::size_t seed = 0;
7571     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.sType );
7572     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.pNext );
7573     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.invocationMask );
7574       return seed;
7575     }
7576   };
7577 
7578   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT>
7579   {
operator ()std::hash7580     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT const & physicalDeviceLegacyDitheringFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7581     {
7582       std::size_t seed = 0;
7583     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyDitheringFeaturesEXT.sType );
7584     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyDitheringFeaturesEXT.pNext );
7585     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyDitheringFeaturesEXT.legacyDithering );
7586       return seed;
7587     }
7588   };
7589 
7590   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits>
7591   {
operator ()std::hash7592     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const & physicalDeviceLimits) const VULKAN_HPP_NOEXCEPT
7593     {
7594       std::size_t seed = 0;
7595     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension1D );
7596     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension2D );
7597     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension3D );
7598     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimensionCube );
7599     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageArrayLayers );
7600     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelBufferElements );
7601     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxUniformBufferRange );
7602     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxStorageBufferRange );
7603     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPushConstantsSize );
7604     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxMemoryAllocationCount );
7605     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerAllocationCount );
7606     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.bufferImageGranularity );
7607     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sparseAddressSpaceSize );
7608     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxBoundDescriptorSets );
7609     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorSamplers );
7610     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorUniformBuffers );
7611     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorStorageBuffers );
7612     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorSampledImages );
7613     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorStorageImages );
7614     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorInputAttachments );
7615     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageResources );
7616     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetSamplers );
7617     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetUniformBuffers );
7618     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetUniformBuffersDynamic );
7619     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageBuffers );
7620     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageBuffersDynamic );
7621     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetSampledImages );
7622     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageImages );
7623     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetInputAttachments );
7624     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputAttributes );
7625     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputBindings );
7626     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputAttributeOffset );
7627     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputBindingStride );
7628     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexOutputComponents );
7629     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationGenerationLevel );
7630     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationPatchSize );
7631     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerVertexInputComponents );
7632     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerVertexOutputComponents );
7633     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerPatchOutputComponents );
7634     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlTotalOutputComponents );
7635     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationEvaluationInputComponents );
7636     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationEvaluationOutputComponents );
7637     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryShaderInvocations );
7638     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryInputComponents );
7639     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryOutputComponents );
7640     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryOutputVertices );
7641     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryTotalOutputComponents );
7642     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentInputComponents );
7643     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentOutputAttachments );
7644     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentDualSrcAttachments );
7645     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentCombinedOutputResources );
7646     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeSharedMemorySize );
7647     for ( size_t i = 0; i < 3; ++i )
7648     {
7649       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupCount[i] );
7650     }
7651     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupInvocations );
7652     for ( size_t i = 0; i < 3; ++i )
7653     {
7654       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupSize[i] );
7655     }
7656     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subPixelPrecisionBits );
7657     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subTexelPrecisionBits );
7658     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.mipmapPrecisionBits );
7659     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDrawIndexedIndexValue );
7660     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDrawIndirectCount );
7661     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerLodBias );
7662     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerAnisotropy );
7663     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxViewports );
7664     for ( size_t i = 0; i < 2; ++i )
7665     {
7666       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxViewportDimensions[i] );
7667     }
7668     for ( size_t i = 0; i < 2; ++i )
7669     {
7670       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.viewportBoundsRange[i] );
7671     }
7672     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.viewportSubPixelBits );
7673     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minMemoryMapAlignment );
7674     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelBufferOffsetAlignment );
7675     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minUniformBufferOffsetAlignment );
7676     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minStorageBufferOffsetAlignment );
7677     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelOffset );
7678     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelOffset );
7679     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelGatherOffset );
7680     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelGatherOffset );
7681     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minInterpolationOffset );
7682     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxInterpolationOffset );
7683     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subPixelInterpolationOffsetBits );
7684     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferWidth );
7685     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferHeight );
7686     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferLayers );
7687     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferColorSampleCounts );
7688     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferDepthSampleCounts );
7689     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferStencilSampleCounts );
7690     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferNoAttachmentsSampleCounts );
7691     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxColorAttachments );
7692     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageColorSampleCounts );
7693     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageIntegerSampleCounts );
7694     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageDepthSampleCounts );
7695     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageStencilSampleCounts );
7696     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.storageImageSampleCounts );
7697     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSampleMaskWords );
7698     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.timestampComputeAndGraphics );
7699     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.timestampPeriod );
7700     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxClipDistances );
7701     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxCullDistances );
7702     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxCombinedClipAndCullDistances );
7703     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.discreteQueuePriorities );
7704     for ( size_t i = 0; i < 2; ++i )
7705     {
7706       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.pointSizeRange[i] );
7707     }
7708     for ( size_t i = 0; i < 2; ++i )
7709     {
7710       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.lineWidthRange[i] );
7711     }
7712     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.pointSizeGranularity );
7713     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.lineWidthGranularity );
7714     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.strictLines );
7715     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.standardSampleLocations );
7716     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.optimalBufferCopyOffsetAlignment );
7717     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.optimalBufferCopyRowPitchAlignment );
7718     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.nonCoherentAtomSize );
7719       return seed;
7720     }
7721   };
7722 
7723   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT>
7724   {
operator ()std::hash7725     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeaturesEXT const & physicalDeviceLineRasterizationFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7726     {
7727       std::size_t seed = 0;
7728     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.sType );
7729     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.pNext );
7730     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.rectangularLines );
7731     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.bresenhamLines );
7732     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.smoothLines );
7733     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.stippledRectangularLines );
7734     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.stippledBresenhamLines );
7735     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeaturesEXT.stippledSmoothLines );
7736       return seed;
7737     }
7738   };
7739 
7740   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT>
7741   {
operator ()std::hash7742     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationPropertiesEXT const & physicalDeviceLineRasterizationPropertiesEXT) const VULKAN_HPP_NOEXCEPT
7743     {
7744       std::size_t seed = 0;
7745     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationPropertiesEXT.sType );
7746     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationPropertiesEXT.pNext );
7747     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationPropertiesEXT.lineSubPixelPrecisionBits );
7748       return seed;
7749     }
7750   };
7751 
7752   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV>
7753   {
operator ()std::hash7754     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV const & physicalDeviceLinearColorAttachmentFeaturesNV) const VULKAN_HPP_NOEXCEPT
7755     {
7756       std::size_t seed = 0;
7757     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.sType );
7758     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.pNext );
7759     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.linearColorAttachment );
7760       return seed;
7761     }
7762   };
7763 
7764   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties>
7765   {
operator ()std::hash7766     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties const & physicalDeviceMaintenance3Properties) const VULKAN_HPP_NOEXCEPT
7767     {
7768       std::size_t seed = 0;
7769     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.sType );
7770     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.pNext );
7771     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.maxPerSetDescriptors );
7772     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.maxMemoryAllocationSize );
7773       return seed;
7774     }
7775   };
7776 
7777   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features>
7778   {
operator ()std::hash7779     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features const & physicalDeviceMaintenance4Features) const VULKAN_HPP_NOEXCEPT
7780     {
7781       std::size_t seed = 0;
7782     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.sType );
7783     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.pNext );
7784     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.maintenance4 );
7785       return seed;
7786     }
7787   };
7788 
7789   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties>
7790   {
operator ()std::hash7791     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties const & physicalDeviceMaintenance4Properties) const VULKAN_HPP_NOEXCEPT
7792     {
7793       std::size_t seed = 0;
7794     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.sType );
7795     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.pNext );
7796     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.maxBufferSize );
7797       return seed;
7798     }
7799   };
7800 
7801   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT>
7802   {
operator ()std::hash7803     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT const & physicalDeviceMemoryBudgetPropertiesEXT) const VULKAN_HPP_NOEXCEPT
7804     {
7805       std::size_t seed = 0;
7806     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.sType );
7807     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.pNext );
7808     for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i )
7809     {
7810       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.heapBudget[i] );
7811     }
7812     for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i )
7813     {
7814       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.heapUsage[i] );
7815     }
7816       return seed;
7817     }
7818   };
7819 
7820   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV>
7821   {
operator ()std::hash7822     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesNV const & physicalDeviceMemoryDecompressionFeaturesNV) const VULKAN_HPP_NOEXCEPT
7823     {
7824       std::size_t seed = 0;
7825     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionFeaturesNV.sType );
7826     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionFeaturesNV.pNext );
7827     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionFeaturesNV.memoryDecompression );
7828       return seed;
7829     }
7830   };
7831 
7832   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV>
7833   {
operator ()std::hash7834     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesNV const & physicalDeviceMemoryDecompressionPropertiesNV) const VULKAN_HPP_NOEXCEPT
7835     {
7836       std::size_t seed = 0;
7837     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionPropertiesNV.sType );
7838     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionPropertiesNV.pNext );
7839     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionPropertiesNV.decompressionMethods );
7840     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionPropertiesNV.maxDecompressionIndirectCount );
7841       return seed;
7842     }
7843   };
7844 
7845   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT>
7846   {
operator ()std::hash7847     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT const & physicalDeviceMemoryPriorityFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7848     {
7849       std::size_t seed = 0;
7850     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.sType );
7851     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.pNext );
7852     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority );
7853       return seed;
7854     }
7855   };
7856 
7857   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties>
7858   {
operator ()std::hash7859     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties) const VULKAN_HPP_NOEXCEPT
7860     {
7861       std::size_t seed = 0;
7862     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryTypeCount );
7863     for ( size_t i = 0; i < VK_MAX_MEMORY_TYPES; ++i )
7864     {
7865       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryTypes[i] );
7866     }
7867     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryHeapCount );
7868     for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i )
7869     {
7870       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryHeaps[i] );
7871     }
7872       return seed;
7873     }
7874   };
7875 
7876   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>
7877   {
operator ()std::hash7878     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 const & physicalDeviceMemoryProperties2) const VULKAN_HPP_NOEXCEPT
7879     {
7880       std::size_t seed = 0;
7881     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.sType );
7882     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.pNext );
7883     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.memoryProperties );
7884       return seed;
7885     }
7886   };
7887 
7888   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT>
7889   {
operator ()std::hash7890     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT const & physicalDeviceMeshShaderFeaturesEXT) const VULKAN_HPP_NOEXCEPT
7891     {
7892       std::size_t seed = 0;
7893     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.sType );
7894     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.pNext );
7895     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.taskShader );
7896     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.meshShader );
7897     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.multiviewMeshShader );
7898     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.primitiveFragmentShadingRateMeshShader );
7899     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.meshShaderQueries );
7900       return seed;
7901     }
7902   };
7903 
7904   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV>
7905   {
operator ()std::hash7906     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV const & physicalDeviceMeshShaderFeaturesNV) const VULKAN_HPP_NOEXCEPT
7907     {
7908       std::size_t seed = 0;
7909     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.sType );
7910     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.pNext );
7911     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.taskShader );
7912     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.meshShader );
7913       return seed;
7914     }
7915   };
7916 
7917   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT>
7918   {
operator ()std::hash7919     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT const & physicalDeviceMeshShaderPropertiesEXT) const VULKAN_HPP_NOEXCEPT
7920     {
7921       std::size_t seed = 0;
7922     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.sType );
7923     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.pNext );
7924     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskWorkGroupTotalCount );
7925     for ( size_t i = 0; i < 3; ++i )
7926     {
7927       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskWorkGroupCount[i] );
7928     }
7929     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskWorkGroupInvocations );
7930     for ( size_t i = 0; i < 3; ++i )
7931     {
7932       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskWorkGroupSize[i] );
7933     }
7934     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskPayloadSize );
7935     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskSharedMemorySize );
7936     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskPayloadAndSharedMemorySize );
7937     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshWorkGroupTotalCount );
7938     for ( size_t i = 0; i < 3; ++i )
7939     {
7940       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshWorkGroupCount[i] );
7941     }
7942     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshWorkGroupInvocations );
7943     for ( size_t i = 0; i < 3; ++i )
7944     {
7945       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshWorkGroupSize[i] );
7946     }
7947     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshSharedMemorySize );
7948     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshPayloadAndSharedMemorySize );
7949     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputMemorySize );
7950     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshPayloadAndOutputMemorySize );
7951     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputComponents );
7952     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputVertices );
7953     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputPrimitives );
7954     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputLayers );
7955     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshMultiviewViewCount );
7956     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.meshOutputPerVertexGranularity );
7957     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.meshOutputPerPrimitiveGranularity );
7958     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxPreferredTaskWorkGroupInvocations );
7959     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxPreferredMeshWorkGroupInvocations );
7960     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.prefersLocalInvocationVertexOutput );
7961     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.prefersLocalInvocationPrimitiveOutput );
7962     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.prefersCompactVertexOutput );
7963     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.prefersCompactPrimitiveOutput );
7964       return seed;
7965     }
7966   };
7967 
7968   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV>
7969   {
operator ()std::hash7970     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV const & physicalDeviceMeshShaderPropertiesNV) const VULKAN_HPP_NOEXCEPT
7971     {
7972       std::size_t seed = 0;
7973     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.sType );
7974     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.pNext );
7975     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxDrawMeshTasksCount );
7976     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskWorkGroupInvocations );
7977     for ( size_t i = 0; i < 3; ++i )
7978     {
7979       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskWorkGroupSize[i] );
7980     }
7981     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskTotalMemorySize );
7982     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskOutputCount );
7983     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshWorkGroupInvocations );
7984     for ( size_t i = 0; i < 3; ++i )
7985     {
7986       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshWorkGroupSize[i] );
7987     }
7988     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshTotalMemorySize );
7989     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshOutputVertices );
7990     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshOutputPrimitives );
7991     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshMultiviewViewCount );
7992     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.meshOutputPerVertexGranularity );
7993     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.meshOutputPerPrimitiveGranularity );
7994       return seed;
7995     }
7996   };
7997 
7998   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT>
7999   {
operator ()std::hash8000     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT const & physicalDeviceMultiDrawFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8001     {
8002       std::size_t seed = 0;
8003     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.sType );
8004     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.pNext );
8005     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.multiDraw );
8006       return seed;
8007     }
8008   };
8009 
8010   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT>
8011   {
operator ()std::hash8012     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT const & physicalDeviceMultiDrawPropertiesEXT) const VULKAN_HPP_NOEXCEPT
8013     {
8014       std::size_t seed = 0;
8015     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.sType );
8016     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.pNext );
8017     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.maxMultiDrawCount );
8018       return seed;
8019     }
8020   };
8021 
8022   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT>
8023   {
operator ()std::hash8024     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8025     {
8026       std::size_t seed = 0;
8027     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.sType );
8028     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.pNext );
8029     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.multisampledRenderToSingleSampled );
8030       return seed;
8031     }
8032   };
8033 
8034   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures>
8035   {
operator ()std::hash8036     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures const & physicalDeviceMultiviewFeatures) const VULKAN_HPP_NOEXCEPT
8037     {
8038       std::size_t seed = 0;
8039     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.sType );
8040     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.pNext );
8041     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiview );
8042     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiviewGeometryShader );
8043     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiviewTessellationShader );
8044       return seed;
8045     }
8046   };
8047 
8048   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>
8049   {
operator ()std::hash8050     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & physicalDeviceMultiviewPerViewAttributesPropertiesNVX) const VULKAN_HPP_NOEXCEPT
8051     {
8052       std::size_t seed = 0;
8053     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewAttributesPropertiesNVX.sType );
8054     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewAttributesPropertiesNVX.pNext );
8055     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewAttributesPropertiesNVX.perViewPositionAllComponents );
8056       return seed;
8057     }
8058   };
8059 
8060   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM>
8061   {
operator ()std::hash8062     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & physicalDeviceMultiviewPerViewViewportsFeaturesQCOM) const VULKAN_HPP_NOEXCEPT
8063     {
8064       std::size_t seed = 0;
8065     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewViewportsFeaturesQCOM.sType );
8066     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewViewportsFeaturesQCOM.pNext );
8067     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewViewportsFeaturesQCOM.multiviewPerViewViewports );
8068       return seed;
8069     }
8070   };
8071 
8072   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties>
8073   {
operator ()std::hash8074     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties const & physicalDeviceMultiviewProperties) const VULKAN_HPP_NOEXCEPT
8075     {
8076       std::size_t seed = 0;
8077     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.sType );
8078     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.pNext );
8079     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.maxMultiviewViewCount );
8080     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.maxMultiviewInstanceIndex );
8081       return seed;
8082     }
8083   };
8084 
8085   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT>
8086   {
operator ()std::hash8087     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & physicalDeviceMutableDescriptorTypeFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8088     {
8089       std::size_t seed = 0;
8090     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesEXT.sType );
8091     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesEXT.pNext );
8092     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesEXT.mutableDescriptorType );
8093       return seed;
8094     }
8095   };
8096 
8097   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT>
8098   {
operator ()std::hash8099     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & physicalDeviceNonSeamlessCubeMapFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8100     {
8101       std::size_t seed = 0;
8102     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNonSeamlessCubeMapFeaturesEXT.sType );
8103     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNonSeamlessCubeMapFeaturesEXT.pNext );
8104     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNonSeamlessCubeMapFeaturesEXT.nonSeamlessCubeMap );
8105       return seed;
8106     }
8107   };
8108 
8109   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT>
8110   {
operator ()std::hash8111     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT const & physicalDeviceOpacityMicromapFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8112     {
8113       std::size_t seed = 0;
8114     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.sType );
8115     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.pNext );
8116     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.micromap );
8117     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.micromapCaptureReplay );
8118     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.micromapHostCommands );
8119       return seed;
8120     }
8121   };
8122 
8123   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT>
8124   {
operator ()std::hash8125     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT const & physicalDeviceOpacityMicromapPropertiesEXT) const VULKAN_HPP_NOEXCEPT
8126     {
8127       std::size_t seed = 0;
8128     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapPropertiesEXT.sType );
8129     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapPropertiesEXT.pNext );
8130     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapPropertiesEXT.maxOpacity2StateSubdivisionLevel );
8131     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapPropertiesEXT.maxOpacity4StateSubdivisionLevel );
8132       return seed;
8133     }
8134   };
8135 
8136   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV>
8137   {
operator ()std::hash8138     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV const & physicalDeviceOpticalFlowFeaturesNV) const VULKAN_HPP_NOEXCEPT
8139     {
8140       std::size_t seed = 0;
8141     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowFeaturesNV.sType );
8142     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowFeaturesNV.pNext );
8143     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowFeaturesNV.opticalFlow );
8144       return seed;
8145     }
8146   };
8147 
8148   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV>
8149   {
operator ()std::hash8150     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV const & physicalDeviceOpticalFlowPropertiesNV) const VULKAN_HPP_NOEXCEPT
8151     {
8152       std::size_t seed = 0;
8153     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.sType );
8154     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.pNext );
8155     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.supportedOutputGridSizes );
8156     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.supportedHintGridSizes );
8157     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.hintSupported );
8158     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.costSupported );
8159     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.bidirectionalFlowSupported );
8160     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.globalFlowSupported );
8161     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.minWidth );
8162     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.minHeight );
8163     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.maxWidth );
8164     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.maxHeight );
8165     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.maxNumRegionsOfInterest );
8166       return seed;
8167     }
8168   };
8169 
8170   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT>
8171   {
operator ()std::hash8172     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT const & physicalDevicePCIBusInfoPropertiesEXT) const VULKAN_HPP_NOEXCEPT
8173     {
8174       std::size_t seed = 0;
8175     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.sType );
8176     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pNext );
8177     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciDomain );
8178     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciBus );
8179     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciDevice );
8180     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciFunction );
8181       return seed;
8182     }
8183   };
8184 
8185   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT>
8186   {
operator ()std::hash8187     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & physicalDevicePageableDeviceLocalMemoryFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8188     {
8189       std::size_t seed = 0;
8190     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.sType );
8191     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pNext );
8192     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pageableDeviceLocalMemory );
8193       return seed;
8194     }
8195   };
8196 
8197   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR>
8198   {
operator ()std::hash8199     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR const & physicalDevicePerformanceQueryFeaturesKHR) const VULKAN_HPP_NOEXCEPT
8200     {
8201       std::size_t seed = 0;
8202     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.sType );
8203     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.pNext );
8204     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools );
8205     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.performanceCounterMultipleQueryPools );
8206       return seed;
8207     }
8208   };
8209 
8210   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR>
8211   {
operator ()std::hash8212     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR const & physicalDevicePerformanceQueryPropertiesKHR) const VULKAN_HPP_NOEXCEPT
8213     {
8214       std::size_t seed = 0;
8215     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.sType );
8216     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.pNext );
8217     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.allowCommandBufferQueryCopies );
8218       return seed;
8219     }
8220   };
8221 
8222   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures>
8223   {
operator ()std::hash8224     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures const & physicalDevicePipelineCreationCacheControlFeatures) const VULKAN_HPP_NOEXCEPT
8225     {
8226       std::size_t seed = 0;
8227     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.sType );
8228     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.pNext );
8229     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.pipelineCreationCacheControl );
8230       return seed;
8231     }
8232   };
8233 
8234   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR>
8235   {
operator ()std::hash8236     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & physicalDevicePipelineExecutablePropertiesFeaturesKHR) const VULKAN_HPP_NOEXCEPT
8237     {
8238       std::size_t seed = 0;
8239     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.sType );
8240     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.pNext );
8241     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo );
8242       return seed;
8243     }
8244   };
8245 
8246   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT>
8247   {
operator ()std::hash8248     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT const & physicalDevicePipelinePropertiesFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8249     {
8250       std::size_t seed = 0;
8251     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelinePropertiesFeaturesEXT.sType );
8252     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelinePropertiesFeaturesEXT.pNext );
8253     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelinePropertiesFeaturesEXT.pipelinePropertiesIdentifier );
8254       return seed;
8255     }
8256   };
8257 
8258   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT>
8259   {
operator ()std::hash8260     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeaturesEXT const & physicalDevicePipelineProtectedAccessFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8261     {
8262       std::size_t seed = 0;
8263     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineProtectedAccessFeaturesEXT.sType );
8264     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineProtectedAccessFeaturesEXT.pNext );
8265     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineProtectedAccessFeaturesEXT.pipelineProtectedAccess );
8266       return seed;
8267     }
8268   };
8269 
8270   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT>
8271   {
operator ()std::hash8272     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeaturesEXT const & physicalDevicePipelineRobustnessFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8273     {
8274       std::size_t seed = 0;
8275     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessFeaturesEXT.sType );
8276     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessFeaturesEXT.pNext );
8277     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessFeaturesEXT.pipelineRobustness );
8278       return seed;
8279     }
8280   };
8281 
8282   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT>
8283   {
operator ()std::hash8284     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessPropertiesEXT const & physicalDevicePipelineRobustnessPropertiesEXT) const VULKAN_HPP_NOEXCEPT
8285     {
8286       std::size_t seed = 0;
8287     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessPropertiesEXT.sType );
8288     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessPropertiesEXT.pNext );
8289     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessPropertiesEXT.defaultRobustnessStorageBuffers );
8290     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessPropertiesEXT.defaultRobustnessUniformBuffers );
8291     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessPropertiesEXT.defaultRobustnessVertexInputs );
8292     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessPropertiesEXT.defaultRobustnessImages );
8293       return seed;
8294     }
8295   };
8296 
8297   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties>
8298   {
operator ()std::hash8299     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties const & physicalDevicePointClippingProperties) const VULKAN_HPP_NOEXCEPT
8300     {
8301       std::size_t seed = 0;
8302     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.sType );
8303     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.pNext );
8304     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.pointClippingBehavior );
8305       return seed;
8306     }
8307   };
8308 
8309   #if defined( VK_ENABLE_BETA_EXTENSIONS )
8310 template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR>
8311   {
operator ()std::hash8312     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR const & physicalDevicePortabilitySubsetFeaturesKHR) const VULKAN_HPP_NOEXCEPT
8313     {
8314       std::size_t seed = 0;
8315     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.sType );
8316     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.pNext );
8317     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.constantAlphaColorBlendFactors );
8318     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.events );
8319     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageViewFormatReinterpretation );
8320     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageViewFormatSwizzle );
8321     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageView2DOn3DImage );
8322     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.multisampleArrayImage );
8323     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.mutableComparisonSamplers );
8324     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.pointPolygons );
8325     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.samplerMipLodBias );
8326     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.separateStencilMaskRef );
8327     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.shaderSampleRateInterpolationFunctions );
8328     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.tessellationIsolines );
8329     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.tessellationPointMode );
8330     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.triangleFans );
8331     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.vertexAttributeAccessBeyondStride );
8332       return seed;
8333     }
8334   };
8335 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
8336 
8337   #if defined( VK_ENABLE_BETA_EXTENSIONS )
8338 template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR>
8339   {
operator ()std::hash8340     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR const & physicalDevicePortabilitySubsetPropertiesKHR) const VULKAN_HPP_NOEXCEPT
8341     {
8342       std::size_t seed = 0;
8343     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetPropertiesKHR.sType );
8344     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetPropertiesKHR.pNext );
8345     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetPropertiesKHR.minVertexInputBindingStrideAlignment );
8346       return seed;
8347     }
8348   };
8349 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
8350 
8351   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV>
8352   {
operator ()std::hash8353     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV const & physicalDevicePresentBarrierFeaturesNV) const VULKAN_HPP_NOEXCEPT
8354     {
8355       std::size_t seed = 0;
8356     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentBarrierFeaturesNV.sType );
8357     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentBarrierFeaturesNV.pNext );
8358     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentBarrierFeaturesNV.presentBarrier );
8359       return seed;
8360     }
8361   };
8362 
8363   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR>
8364   {
operator ()std::hash8365     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR const & physicalDevicePresentIdFeaturesKHR) const VULKAN_HPP_NOEXCEPT
8366     {
8367       std::size_t seed = 0;
8368     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.sType );
8369     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.pNext );
8370     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.presentId );
8371       return seed;
8372     }
8373   };
8374 
8375   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR>
8376   {
operator ()std::hash8377     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR const & physicalDevicePresentWaitFeaturesKHR) const VULKAN_HPP_NOEXCEPT
8378     {
8379       std::size_t seed = 0;
8380     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.sType );
8381     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.pNext );
8382     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.presentWait );
8383       return seed;
8384     }
8385   };
8386 
8387   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT>
8388   {
operator ()std::hash8389     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & physicalDevicePrimitiveTopologyListRestartFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8390     {
8391       std::size_t seed = 0;
8392     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.sType );
8393     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.pNext );
8394     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart );
8395     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyPatchListRestart );
8396       return seed;
8397     }
8398   };
8399 
8400   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT>
8401   {
operator ()std::hash8402     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & physicalDevicePrimitivesGeneratedQueryFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8403     {
8404       std::size_t seed = 0;
8405     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.sType );
8406     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.pNext );
8407     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.primitivesGeneratedQuery );
8408     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.primitivesGeneratedQueryWithRasterizerDiscard );
8409     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.primitivesGeneratedQueryWithNonZeroStreams );
8410       return seed;
8411     }
8412   };
8413 
8414   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures>
8415   {
operator ()std::hash8416     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures const & physicalDevicePrivateDataFeatures) const VULKAN_HPP_NOEXCEPT
8417     {
8418       std::size_t seed = 0;
8419     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.sType );
8420     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.pNext );
8421     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.privateData );
8422       return seed;
8423     }
8424   };
8425 
8426   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties>
8427   {
operator ()std::hash8428     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const & physicalDeviceSparseProperties) const VULKAN_HPP_NOEXCEPT
8429     {
8430       std::size_t seed = 0;
8431     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard2DBlockShape );
8432     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard2DMultisampleBlockShape );
8433     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard3DBlockShape );
8434     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyAlignedMipSize );
8435     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyNonResidentStrict );
8436       return seed;
8437     }
8438   };
8439 
8440   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties>
8441   {
operator ()std::hash8442     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const & physicalDeviceProperties) const VULKAN_HPP_NOEXCEPT
8443     {
8444       std::size_t seed = 0;
8445     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.apiVersion );
8446     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.driverVersion );
8447     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.vendorID );
8448     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceID );
8449     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceType );
8450     for ( size_t i = 0; i < VK_MAX_PHYSICAL_DEVICE_NAME_SIZE; ++i )
8451     {
8452       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceName[i] );
8453     }
8454     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
8455     {
8456       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.pipelineCacheUUID[i] );
8457     }
8458     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.limits );
8459     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.sparseProperties );
8460       return seed;
8461     }
8462   };
8463 
8464   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>
8465   {
operator ()std::hash8466     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const & physicalDeviceProperties2) const VULKAN_HPP_NOEXCEPT
8467     {
8468       std::size_t seed = 0;
8469     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.sType );
8470     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.pNext );
8471     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.properties );
8472       return seed;
8473     }
8474   };
8475 
8476   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures>
8477   {
operator ()std::hash8478     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures const & physicalDeviceProtectedMemoryFeatures) const VULKAN_HPP_NOEXCEPT
8479     {
8480       std::size_t seed = 0;
8481     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.sType );
8482     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.pNext );
8483     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.protectedMemory );
8484       return seed;
8485     }
8486   };
8487 
8488   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties>
8489   {
operator ()std::hash8490     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties const & physicalDeviceProtectedMemoryProperties) const VULKAN_HPP_NOEXCEPT
8491     {
8492       std::size_t seed = 0;
8493     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.sType );
8494     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.pNext );
8495     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.protectedNoFault );
8496       return seed;
8497     }
8498   };
8499 
8500   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT>
8501   {
operator ()std::hash8502     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT const & physicalDeviceProvokingVertexFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8503     {
8504       std::size_t seed = 0;
8505     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.sType );
8506     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.pNext );
8507     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.provokingVertexLast );
8508     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.transformFeedbackPreservesProvokingVertex );
8509       return seed;
8510     }
8511   };
8512 
8513   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT>
8514   {
operator ()std::hash8515     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT const & physicalDeviceProvokingVertexPropertiesEXT) const VULKAN_HPP_NOEXCEPT
8516     {
8517       std::size_t seed = 0;
8518     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.sType );
8519     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.pNext );
8520     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.provokingVertexModePerPipeline );
8521     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.transformFeedbackPreservesTriangleFanProvokingVertex );
8522       return seed;
8523     }
8524   };
8525 
8526   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR>
8527   {
operator ()std::hash8528     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorPropertiesKHR const & physicalDevicePushDescriptorPropertiesKHR) const VULKAN_HPP_NOEXCEPT
8529     {
8530       std::size_t seed = 0;
8531     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorPropertiesKHR.sType );
8532     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorPropertiesKHR.pNext );
8533     VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorPropertiesKHR.maxPushDescriptors );
8534       return seed;
8535     }
8536   };
8537 
8538   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT>
8539   {
operator ()std::hash8540     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & physicalDeviceRGBA10X6FormatsFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8541     {
8542       std::size_t seed = 0;
8543     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.sType );
8544     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.pNext );
8545     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.formatRgba10x6WithoutYCbCrSampler );
8546       return seed;
8547     }
8548   };
8549 
8550   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT>
8551   {
operator ()std::hash8552     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8553     {
8554       std::size_t seed = 0;
8555     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.sType );
8556     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.pNext );
8557     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.rasterizationOrderColorAttachmentAccess );
8558     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.rasterizationOrderDepthAttachmentAccess );
8559     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.rasterizationOrderStencilAttachmentAccess );
8560       return seed;
8561     }
8562   };
8563 
8564   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR>
8565   {
operator ()std::hash8566     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR const & physicalDeviceRayQueryFeaturesKHR) const VULKAN_HPP_NOEXCEPT
8567     {
8568       std::size_t seed = 0;
8569     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.sType );
8570     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.pNext );
8571     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.rayQuery );
8572       return seed;
8573     }
8574   };
8575 
8576   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV>
8577   {
operator ()std::hash8578     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & physicalDeviceRayTracingInvocationReorderFeaturesNV) const VULKAN_HPP_NOEXCEPT
8579     {
8580       std::size_t seed = 0;
8581     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesNV.sType );
8582     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesNV.pNext );
8583     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesNV.rayTracingInvocationReorder );
8584       return seed;
8585     }
8586   };
8587 
8588   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV>
8589   {
operator ()std::hash8590     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & physicalDeviceRayTracingInvocationReorderPropertiesNV) const VULKAN_HPP_NOEXCEPT
8591     {
8592       std::size_t seed = 0;
8593     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesNV.sType );
8594     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesNV.pNext );
8595     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesNV.rayTracingInvocationReorderReorderingHint );
8596       return seed;
8597     }
8598   };
8599 
8600   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR>
8601   {
operator ()std::hash8602     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & physicalDeviceRayTracingMaintenance1FeaturesKHR) const VULKAN_HPP_NOEXCEPT
8603     {
8604       std::size_t seed = 0;
8605     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMaintenance1FeaturesKHR.sType );
8606     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMaintenance1FeaturesKHR.pNext );
8607     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingMaintenance1 );
8608     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingPipelineTraceRaysIndirect2 );
8609       return seed;
8610     }
8611   };
8612 
8613   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV>
8614   {
operator ()std::hash8615     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV const & physicalDeviceRayTracingMotionBlurFeaturesNV) const VULKAN_HPP_NOEXCEPT
8616     {
8617       std::size_t seed = 0;
8618     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.sType );
8619     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.pNext );
8620     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.rayTracingMotionBlur );
8621     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.rayTracingMotionBlurPipelineTraceRaysIndirect );
8622       return seed;
8623     }
8624   };
8625 
8626   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR>
8627   {
operator ()std::hash8628     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR const & physicalDeviceRayTracingPipelineFeaturesKHR) const VULKAN_HPP_NOEXCEPT
8629     {
8630       std::size_t seed = 0;
8631     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.sType );
8632     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.pNext );
8633     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline );
8634     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineShaderGroupHandleCaptureReplay );
8635     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineShaderGroupHandleCaptureReplayMixed );
8636     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect );
8637     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling );
8638       return seed;
8639     }
8640   };
8641 
8642   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR>
8643   {
operator ()std::hash8644     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR const & physicalDeviceRayTracingPipelinePropertiesKHR) const VULKAN_HPP_NOEXCEPT
8645     {
8646       std::size_t seed = 0;
8647     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.sType );
8648     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.pNext );
8649     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleSize );
8650     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayRecursionDepth );
8651     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxShaderGroupStride );
8652     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupBaseAlignment );
8653     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleCaptureReplaySize );
8654     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayDispatchInvocationCount );
8655     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleAlignment );
8656     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayHitAttributeSize );
8657       return seed;
8658     }
8659   };
8660 
8661   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV>
8662   {
operator ()std::hash8663     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV const & physicalDeviceRayTracingPropertiesNV) const VULKAN_HPP_NOEXCEPT
8664     {
8665       std::size_t seed = 0;
8666     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.sType );
8667     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.pNext );
8668     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.shaderGroupHandleSize );
8669     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxRecursionDepth );
8670     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxShaderGroupStride );
8671     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.shaderGroupBaseAlignment );
8672     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxGeometryCount );
8673     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxInstanceCount );
8674     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxTriangleCount );
8675     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxDescriptorSetAccelerationStructures );
8676       return seed;
8677     }
8678   };
8679 
8680   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV>
8681   {
operator ()std::hash8682     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & physicalDeviceRepresentativeFragmentTestFeaturesNV) const VULKAN_HPP_NOEXCEPT
8683     {
8684       std::size_t seed = 0;
8685     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.sType );
8686     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.pNext );
8687     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.representativeFragmentTest );
8688       return seed;
8689     }
8690   };
8691 
8692   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT>
8693   {
operator ()std::hash8694     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesEXT const & physicalDeviceRobustness2FeaturesEXT) const VULKAN_HPP_NOEXCEPT
8695     {
8696       std::size_t seed = 0;
8697     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.sType );
8698     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.pNext );
8699     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.robustBufferAccess2 );
8700     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.robustImageAccess2 );
8701     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesEXT.nullDescriptor );
8702       return seed;
8703     }
8704   };
8705 
8706   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT>
8707   {
operator ()std::hash8708     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesEXT const & physicalDeviceRobustness2PropertiesEXT) const VULKAN_HPP_NOEXCEPT
8709     {
8710       std::size_t seed = 0;
8711     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesEXT.sType );
8712     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesEXT.pNext );
8713     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesEXT.robustStorageBufferAccessSizeAlignment );
8714     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesEXT.robustUniformBufferAccessSizeAlignment );
8715       return seed;
8716     }
8717   };
8718 
8719   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT>
8720   {
operator ()std::hash8721     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT const & physicalDeviceSampleLocationsPropertiesEXT) const VULKAN_HPP_NOEXCEPT
8722     {
8723       std::size_t seed = 0;
8724     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sType );
8725     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.pNext );
8726     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationSampleCounts );
8727     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.maxSampleLocationGridSize );
8728     for ( size_t i = 0; i < 2; ++i )
8729     {
8730       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationCoordinateRange[i] );
8731     }
8732     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationSubPixelBits );
8733     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.variableSampleLocations );
8734       return seed;
8735     }
8736   };
8737 
8738   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties>
8739   {
operator ()std::hash8740     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties const & physicalDeviceSamplerFilterMinmaxProperties) const VULKAN_HPP_NOEXCEPT
8741     {
8742       std::size_t seed = 0;
8743     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.sType );
8744     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.pNext );
8745     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.filterMinmaxSingleComponentFormats );
8746     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.filterMinmaxImageComponentMapping );
8747       return seed;
8748     }
8749   };
8750 
8751   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures>
8752   {
operator ()std::hash8753     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures const & physicalDeviceSamplerYcbcrConversionFeatures) const VULKAN_HPP_NOEXCEPT
8754     {
8755       std::size_t seed = 0;
8756     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.sType );
8757     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.pNext );
8758     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.samplerYcbcrConversion );
8759       return seed;
8760     }
8761   };
8762 
8763   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures>
8764   {
operator ()std::hash8765     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures const & physicalDeviceScalarBlockLayoutFeatures) const VULKAN_HPP_NOEXCEPT
8766     {
8767       std::size_t seed = 0;
8768     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.sType );
8769     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.pNext );
8770     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.scalarBlockLayout );
8771       return seed;
8772     }
8773   };
8774 
8775   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures>
8776   {
operator ()std::hash8777     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & physicalDeviceSeparateDepthStencilLayoutsFeatures) const VULKAN_HPP_NOEXCEPT
8778     {
8779       std::size_t seed = 0;
8780     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.sType );
8781     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.pNext );
8782     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.separateDepthStencilLayouts );
8783       return seed;
8784     }
8785   };
8786 
8787   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT>
8788   {
operator ()std::hash8789     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & physicalDeviceShaderAtomicFloat2FeaturesEXT) const VULKAN_HPP_NOEXCEPT
8790     {
8791       std::size_t seed = 0;
8792     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.sType );
8793     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext );
8794     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16Atomics );
8795     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16AtomicAdd );
8796     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16AtomicMinMax );
8797     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat32AtomicMinMax );
8798     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat64AtomicMinMax );
8799     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16Atomics );
8800     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16AtomicAdd );
8801     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16AtomicMinMax );
8802     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat32AtomicMinMax );
8803     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat64AtomicMinMax );
8804     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax );
8805     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax );
8806       return seed;
8807     }
8808   };
8809 
8810   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT>
8811   {
operator ()std::hash8812     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT const & physicalDeviceShaderAtomicFloatFeaturesEXT) const VULKAN_HPP_NOEXCEPT
8813     {
8814       std::size_t seed = 0;
8815     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sType );
8816     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.pNext );
8817     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat32Atomics );
8818     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat32AtomicAdd );
8819     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat64Atomics );
8820     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat64AtomicAdd );
8821     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat32Atomics );
8822     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat32AtomicAdd );
8823     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat64Atomics );
8824     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat64AtomicAdd );
8825     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics );
8826     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd );
8827     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics );
8828     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd );
8829       return seed;
8830     }
8831   };
8832 
8833   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features>
8834   {
operator ()std::hash8835     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features const & physicalDeviceShaderAtomicInt64Features) const VULKAN_HPP_NOEXCEPT
8836     {
8837       std::size_t seed = 0;
8838     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.sType );
8839     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.pNext );
8840     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics );
8841     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.shaderSharedInt64Atomics );
8842       return seed;
8843     }
8844   };
8845 
8846   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR>
8847   {
operator ()std::hash8848     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR const & physicalDeviceShaderClockFeaturesKHR) const VULKAN_HPP_NOEXCEPT
8849     {
8850       std::size_t seed = 0;
8851     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.sType );
8852     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.pNext );
8853     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock );
8854     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.shaderDeviceClock );
8855       return seed;
8856     }
8857   };
8858 
8859   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM>
8860   {
operator ()std::hash8861     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & physicalDeviceShaderCoreBuiltinsFeaturesARM) const VULKAN_HPP_NOEXCEPT
8862     {
8863       std::size_t seed = 0;
8864     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsFeaturesARM.sType );
8865     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsFeaturesARM.pNext );
8866     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsFeaturesARM.shaderCoreBuiltins );
8867       return seed;
8868     }
8869   };
8870 
8871   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM>
8872   {
operator ()std::hash8873     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & physicalDeviceShaderCoreBuiltinsPropertiesARM) const VULKAN_HPP_NOEXCEPT
8874     {
8875       std::size_t seed = 0;
8876     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.sType );
8877     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.pNext );
8878     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.shaderCoreMask );
8879     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.shaderCoreCount );
8880     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.shaderWarpsPerCore );
8881       return seed;
8882     }
8883   };
8884 
8885   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD>
8886   {
operator ()std::hash8887     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD const & physicalDeviceShaderCoreProperties2AMD) const VULKAN_HPP_NOEXCEPT
8888     {
8889       std::size_t seed = 0;
8890     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.sType );
8891     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.pNext );
8892     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.shaderCoreFeatures );
8893     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.activeComputeUnitCount );
8894       return seed;
8895     }
8896   };
8897 
8898   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD>
8899   {
operator ()std::hash8900     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD const & physicalDeviceShaderCorePropertiesAMD) const VULKAN_HPP_NOEXCEPT
8901     {
8902       std::size_t seed = 0;
8903     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sType );
8904     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.pNext );
8905     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.shaderEngineCount );
8906     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.shaderArraysPerEngineCount );
8907     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.computeUnitsPerShaderArray );
8908     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.simdPerComputeUnit );
8909     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.wavefrontsPerSimd );
8910     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.wavefrontSize );
8911     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sgprsPerSimd );
8912     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.minSgprAllocation );
8913     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.maxSgprAllocation );
8914     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sgprAllocationGranularity );
8915     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.vgprsPerSimd );
8916     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.minVgprAllocation );
8917     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.maxVgprAllocation );
8918     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.vgprAllocationGranularity );
8919       return seed;
8920     }
8921   };
8922 
8923   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures>
8924   {
operator ()std::hash8925     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & physicalDeviceShaderDemoteToHelperInvocationFeatures) const VULKAN_HPP_NOEXCEPT
8926     {
8927       std::size_t seed = 0;
8928     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDemoteToHelperInvocationFeatures.sType );
8929     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDemoteToHelperInvocationFeatures.pNext );
8930     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDemoteToHelperInvocationFeatures.shaderDemoteToHelperInvocation );
8931       return seed;
8932     }
8933   };
8934 
8935   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures>
8936   {
operator ()std::hash8937     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures const & physicalDeviceShaderDrawParametersFeatures) const VULKAN_HPP_NOEXCEPT
8938     {
8939       std::size_t seed = 0;
8940     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.sType );
8941     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.pNext );
8942     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.shaderDrawParameters );
8943       return seed;
8944     }
8945   };
8946 
8947   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD>
8948   {
operator ()std::hash8949     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD) const VULKAN_HPP_NOEXCEPT
8950     {
8951       std::size_t seed = 0;
8952     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.sType );
8953     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.pNext );
8954     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.shaderEarlyAndLateFragmentTests );
8955       return seed;
8956     }
8957   };
8958 
8959   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features>
8960   {
operator ()std::hash8961     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features const & physicalDeviceShaderFloat16Int8Features) const VULKAN_HPP_NOEXCEPT
8962     {
8963       std::size_t seed = 0;
8964     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.sType );
8965     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.pNext );
8966     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.shaderFloat16 );
8967     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.shaderInt8 );
8968       return seed;
8969     }
8970   };
8971 
8972   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT>
8973   {
operator ()std::hash8974     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & physicalDeviceShaderImageAtomicInt64FeaturesEXT) const VULKAN_HPP_NOEXCEPT
8975     {
8976       std::size_t seed = 0;
8977     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.sType );
8978     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.pNext );
8979     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics );
8980     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics );
8981       return seed;
8982     }
8983   };
8984 
8985   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV>
8986   {
operator ()std::hash8987     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV const & physicalDeviceShaderImageFootprintFeaturesNV) const VULKAN_HPP_NOEXCEPT
8988     {
8989       std::size_t seed = 0;
8990     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.sType );
8991     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.pNext );
8992     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.imageFootprint );
8993       return seed;
8994     }
8995   };
8996 
8997   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures>
8998   {
operator ()std::hash8999     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures const & physicalDeviceShaderIntegerDotProductFeatures) const VULKAN_HPP_NOEXCEPT
9000     {
9001       std::size_t seed = 0;
9002     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.sType );
9003     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.pNext );
9004     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.shaderIntegerDotProduct );
9005       return seed;
9006     }
9007   };
9008 
9009   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties>
9010   {
operator ()std::hash9011     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties const & physicalDeviceShaderIntegerDotProductProperties) const VULKAN_HPP_NOEXCEPT
9012     {
9013       std::size_t seed = 0;
9014     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.sType );
9015     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.pNext );
9016     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitUnsignedAccelerated );
9017     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitSignedAccelerated );
9018     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitMixedSignednessAccelerated );
9019     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedUnsignedAccelerated );
9020     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedSignedAccelerated );
9021     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedMixedSignednessAccelerated );
9022     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitUnsignedAccelerated );
9023     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitSignedAccelerated );
9024     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitMixedSignednessAccelerated );
9025     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitUnsignedAccelerated );
9026     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitSignedAccelerated );
9027     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitMixedSignednessAccelerated );
9028     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitUnsignedAccelerated );
9029     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitSignedAccelerated );
9030     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitMixedSignednessAccelerated );
9031     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated );
9032     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating8BitSignedAccelerated );
9033     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated );
9034     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated );
9035     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated );
9036     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated );
9037     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated );
9038     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating16BitSignedAccelerated );
9039     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated );
9040     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated );
9041     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating32BitSignedAccelerated );
9042     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated );
9043     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated );
9044     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating64BitSignedAccelerated );
9045     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
9046       return seed;
9047     }
9048   };
9049 
9050   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL>
9051   {
operator ()std::hash9052     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & physicalDeviceShaderIntegerFunctions2FeaturesINTEL) const VULKAN_HPP_NOEXCEPT
9053     {
9054       std::size_t seed = 0;
9055     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.sType );
9056     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.pNext );
9057     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.shaderIntegerFunctions2 );
9058       return seed;
9059     }
9060   };
9061 
9062   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT>
9063   {
operator ()std::hash9064     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & physicalDeviceShaderModuleIdentifierFeaturesEXT) const VULKAN_HPP_NOEXCEPT
9065     {
9066       std::size_t seed = 0;
9067     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierFeaturesEXT.sType );
9068     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierFeaturesEXT.pNext );
9069     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierFeaturesEXT.shaderModuleIdentifier );
9070       return seed;
9071     }
9072   };
9073 
9074   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT>
9075   {
operator ()std::hash9076     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & physicalDeviceShaderModuleIdentifierPropertiesEXT) const VULKAN_HPP_NOEXCEPT
9077     {
9078       std::size_t seed = 0;
9079     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierPropertiesEXT.sType );
9080     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierPropertiesEXT.pNext );
9081     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
9082     {
9083       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierPropertiesEXT.shaderModuleIdentifierAlgorithmUUID[i] );
9084     }
9085       return seed;
9086     }
9087   };
9088 
9089   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV>
9090   {
operator ()std::hash9091     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV const & physicalDeviceShaderSMBuiltinsFeaturesNV) const VULKAN_HPP_NOEXCEPT
9092     {
9093       std::size_t seed = 0;
9094     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.sType );
9095     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.pNext );
9096     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.shaderSMBuiltins );
9097       return seed;
9098     }
9099   };
9100 
9101   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV>
9102   {
operator ()std::hash9103     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV const & physicalDeviceShaderSMBuiltinsPropertiesNV) const VULKAN_HPP_NOEXCEPT
9104     {
9105       std::size_t seed = 0;
9106     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.sType );
9107     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.pNext );
9108     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.shaderSMCount );
9109     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.shaderWarpsPerSM );
9110       return seed;
9111     }
9112   };
9113 
9114   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures>
9115   {
operator ()std::hash9116     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & physicalDeviceShaderSubgroupExtendedTypesFeatures) const VULKAN_HPP_NOEXCEPT
9117     {
9118       std::size_t seed = 0;
9119     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.sType );
9120     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.pNext );
9121     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes );
9122       return seed;
9123     }
9124   };
9125 
9126   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR>
9127   {
operator ()std::hash9128     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR) const VULKAN_HPP_NOEXCEPT
9129     {
9130       std::size_t seed = 0;
9131     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType );
9132     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.pNext );
9133     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow );
9134       return seed;
9135     }
9136   };
9137 
9138   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures>
9139   {
operator ()std::hash9140     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures const & physicalDeviceShaderTerminateInvocationFeatures) const VULKAN_HPP_NOEXCEPT
9141     {
9142       std::size_t seed = 0;
9143     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.sType );
9144     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.pNext );
9145     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.shaderTerminateInvocation );
9146       return seed;
9147     }
9148   };
9149 
9150   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV>
9151   {
operator ()std::hash9152     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV const & physicalDeviceShadingRateImageFeaturesNV) const VULKAN_HPP_NOEXCEPT
9153     {
9154       std::size_t seed = 0;
9155     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.sType );
9156     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.pNext );
9157     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.shadingRateImage );
9158     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.shadingRateCoarseSampleOrder );
9159       return seed;
9160     }
9161   };
9162 
9163   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV>
9164   {
operator ()std::hash9165     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV const & physicalDeviceShadingRateImagePropertiesNV) const VULKAN_HPP_NOEXCEPT
9166     {
9167       std::size_t seed = 0;
9168     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.sType );
9169     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.pNext );
9170     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRateTexelSize );
9171     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRatePaletteSize );
9172     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRateMaxCoarseSamples );
9173       return seed;
9174     }
9175   };
9176 
9177   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2>
9178   {
operator ()std::hash9179     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 const & physicalDeviceSparseImageFormatInfo2) const VULKAN_HPP_NOEXCEPT
9180     {
9181       std::size_t seed = 0;
9182     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.sType );
9183     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.pNext );
9184     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.format );
9185     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.type );
9186     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.samples );
9187     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.usage );
9188     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.tiling );
9189       return seed;
9190     }
9191   };
9192 
9193   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties>
9194   {
operator ()std::hash9195     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties const & physicalDeviceSubgroupProperties) const VULKAN_HPP_NOEXCEPT
9196     {
9197       std::size_t seed = 0;
9198     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.sType );
9199     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.pNext );
9200     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.subgroupSize );
9201     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.supportedStages );
9202     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.supportedOperations );
9203     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.quadOperationsInAllStages );
9204       return seed;
9205     }
9206   };
9207 
9208   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures>
9209   {
operator ()std::hash9210     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures const & physicalDeviceSubgroupSizeControlFeatures) const VULKAN_HPP_NOEXCEPT
9211     {
9212       std::size_t seed = 0;
9213     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.sType );
9214     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.pNext );
9215     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.subgroupSizeControl );
9216     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.computeFullSubgroups );
9217       return seed;
9218     }
9219   };
9220 
9221   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties>
9222   {
operator ()std::hash9223     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties const & physicalDeviceSubgroupSizeControlProperties) const VULKAN_HPP_NOEXCEPT
9224     {
9225       std::size_t seed = 0;
9226     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.sType );
9227     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.pNext );
9228     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.minSubgroupSize );
9229     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.maxSubgroupSize );
9230     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.maxComputeWorkgroupSubgroups );
9231     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.requiredSubgroupSizeStages );
9232       return seed;
9233     }
9234   };
9235 
9236   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT>
9237   {
operator ()std::hash9238     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & physicalDeviceSubpassMergeFeedbackFeaturesEXT) const VULKAN_HPP_NOEXCEPT
9239     {
9240       std::size_t seed = 0;
9241     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassMergeFeedbackFeaturesEXT.sType );
9242     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassMergeFeedbackFeaturesEXT.pNext );
9243     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassMergeFeedbackFeaturesEXT.subpassMergeFeedback );
9244       return seed;
9245     }
9246   };
9247 
9248   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI>
9249   {
operator ()std::hash9250     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI const & physicalDeviceSubpassShadingFeaturesHUAWEI) const VULKAN_HPP_NOEXCEPT
9251     {
9252       std::size_t seed = 0;
9253     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.sType );
9254     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.pNext );
9255     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.subpassShading );
9256       return seed;
9257     }
9258   };
9259 
9260   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI>
9261   {
operator ()std::hash9262     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI const & physicalDeviceSubpassShadingPropertiesHUAWEI) const VULKAN_HPP_NOEXCEPT
9263     {
9264       std::size_t seed = 0;
9265     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingPropertiesHUAWEI.sType );
9266     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingPropertiesHUAWEI.pNext );
9267     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingPropertiesHUAWEI.maxSubpassShadingWorkgroupSizeAspectRatio );
9268       return seed;
9269     }
9270   };
9271 
9272   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR>
9273   {
operator ()std::hash9274     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR const & physicalDeviceSurfaceInfo2KHR) const VULKAN_HPP_NOEXCEPT
9275     {
9276       std::size_t seed = 0;
9277     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.sType );
9278     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.pNext );
9279     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.surface );
9280       return seed;
9281     }
9282   };
9283 
9284   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT>
9285   {
operator ()std::hash9286     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesEXT const & physicalDeviceSwapchainMaintenance1FeaturesEXT) const VULKAN_HPP_NOEXCEPT
9287     {
9288       std::size_t seed = 0;
9289     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSwapchainMaintenance1FeaturesEXT.sType );
9290     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSwapchainMaintenance1FeaturesEXT.pNext );
9291     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSwapchainMaintenance1FeaturesEXT.swapchainMaintenance1 );
9292       return seed;
9293     }
9294   };
9295 
9296   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features>
9297   {
operator ()std::hash9298     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features const & physicalDeviceSynchronization2Features) const VULKAN_HPP_NOEXCEPT
9299     {
9300       std::size_t seed = 0;
9301     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.sType );
9302     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.pNext );
9303     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.synchronization2 );
9304       return seed;
9305     }
9306   };
9307 
9308   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT>
9309   {
operator ()std::hash9310     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & physicalDeviceTexelBufferAlignmentFeaturesEXT) const VULKAN_HPP_NOEXCEPT
9311     {
9312       std::size_t seed = 0;
9313     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.sType );
9314     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.pNext );
9315     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment );
9316       return seed;
9317     }
9318   };
9319 
9320   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties>
9321   {
operator ()std::hash9322     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties const & physicalDeviceTexelBufferAlignmentProperties) const VULKAN_HPP_NOEXCEPT
9323     {
9324       std::size_t seed = 0;
9325     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.sType );
9326     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.pNext );
9327     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.storageTexelBufferOffsetAlignmentBytes );
9328     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.storageTexelBufferOffsetSingleTexelAlignment );
9329     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.uniformTexelBufferOffsetAlignmentBytes );
9330     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.uniformTexelBufferOffsetSingleTexelAlignment );
9331       return seed;
9332     }
9333   };
9334 
9335   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures>
9336   {
operator ()std::hash9337     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures const & physicalDeviceTextureCompressionASTCHDRFeatures) const VULKAN_HPP_NOEXCEPT
9338     {
9339       std::size_t seed = 0;
9340     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.sType );
9341     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.pNext );
9342     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.textureCompressionASTC_HDR );
9343       return seed;
9344     }
9345   };
9346 
9347   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM>
9348   {
operator ()std::hash9349     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM const & physicalDeviceTilePropertiesFeaturesQCOM) const VULKAN_HPP_NOEXCEPT
9350     {
9351       std::size_t seed = 0;
9352     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTilePropertiesFeaturesQCOM.sType );
9353     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTilePropertiesFeaturesQCOM.pNext );
9354     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTilePropertiesFeaturesQCOM.tileProperties );
9355       return seed;
9356     }
9357   };
9358 
9359   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures>
9360   {
operator ()std::hash9361     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures const & physicalDeviceTimelineSemaphoreFeatures) const VULKAN_HPP_NOEXCEPT
9362     {
9363       std::size_t seed = 0;
9364     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.sType );
9365     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.pNext );
9366     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.timelineSemaphore );
9367       return seed;
9368     }
9369   };
9370 
9371   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties>
9372   {
operator ()std::hash9373     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties const & physicalDeviceTimelineSemaphoreProperties) const VULKAN_HPP_NOEXCEPT
9374     {
9375       std::size_t seed = 0;
9376     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.sType );
9377     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.pNext );
9378     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.maxTimelineSemaphoreValueDifference );
9379       return seed;
9380     }
9381   };
9382 
9383   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties>
9384   {
operator ()std::hash9385     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties const & physicalDeviceToolProperties) const VULKAN_HPP_NOEXCEPT
9386     {
9387       std::size_t seed = 0;
9388     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.sType );
9389     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.pNext );
9390     for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i )
9391     {
9392       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.name[i] );
9393     }
9394     for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i )
9395     {
9396       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.version[i] );
9397     }
9398     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.purposes );
9399     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
9400     {
9401       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.description[i] );
9402     }
9403     for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i )
9404     {
9405       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.layer[i] );
9406     }
9407       return seed;
9408     }
9409   };
9410 
9411   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT>
9412   {
operator ()std::hash9413     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT const & physicalDeviceTransformFeedbackFeaturesEXT) const VULKAN_HPP_NOEXCEPT
9414     {
9415       std::size_t seed = 0;
9416     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.sType );
9417     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.pNext );
9418     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback );
9419     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.geometryStreams );
9420       return seed;
9421     }
9422   };
9423 
9424   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT>
9425   {
operator ()std::hash9426     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT const & physicalDeviceTransformFeedbackPropertiesEXT) const VULKAN_HPP_NOEXCEPT
9427     {
9428       std::size_t seed = 0;
9429     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.sType );
9430     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.pNext );
9431     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackStreams );
9432     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBuffers );
9433     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferSize );
9434     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackStreamDataSize );
9435     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataSize );
9436     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataStride );
9437     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackQueries );
9438     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackStreamsLinesTriangles );
9439     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackRasterizationStreamSelect );
9440     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackDraw );
9441       return seed;
9442     }
9443   };
9444 
9445   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures>
9446   {
operator ()std::hash9447     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures const & physicalDeviceUniformBufferStandardLayoutFeatures) const VULKAN_HPP_NOEXCEPT
9448     {
9449       std::size_t seed = 0;
9450     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.sType );
9451     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.pNext );
9452     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.uniformBufferStandardLayout );
9453       return seed;
9454     }
9455   };
9456 
9457   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures>
9458   {
operator ()std::hash9459     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures const & physicalDeviceVariablePointersFeatures) const VULKAN_HPP_NOEXCEPT
9460     {
9461       std::size_t seed = 0;
9462     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.sType );
9463     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.pNext );
9464     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer );
9465     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.variablePointers );
9466       return seed;
9467     }
9468   };
9469 
9470   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT>
9471   {
operator ()std::hash9472     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & physicalDeviceVertexAttributeDivisorFeaturesEXT) const VULKAN_HPP_NOEXCEPT
9473     {
9474       std::size_t seed = 0;
9475     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeaturesEXT.sType );
9476     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeaturesEXT.pNext );
9477     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateDivisor );
9478     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeaturesEXT.vertexAttributeInstanceRateZeroDivisor );
9479       return seed;
9480     }
9481   };
9482 
9483   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT>
9484   {
operator ()std::hash9485     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & physicalDeviceVertexAttributeDivisorPropertiesEXT) const VULKAN_HPP_NOEXCEPT
9486     {
9487       std::size_t seed = 0;
9488     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.sType );
9489     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.pNext );
9490     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.maxVertexAttribDivisor );
9491       return seed;
9492     }
9493   };
9494 
9495   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT>
9496   {
operator ()std::hash9497     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & physicalDeviceVertexInputDynamicStateFeaturesEXT) const VULKAN_HPP_NOEXCEPT
9498     {
9499       std::size_t seed = 0;
9500     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.sType );
9501     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.pNext );
9502     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState );
9503       return seed;
9504     }
9505   };
9506 
9507   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR>
9508   {
operator ()std::hash9509     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR const & physicalDeviceVideoFormatInfoKHR) const VULKAN_HPP_NOEXCEPT
9510     {
9511       std::size_t seed = 0;
9512     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.sType );
9513     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.pNext );
9514     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.imageUsage );
9515       return seed;
9516     }
9517   };
9518 
9519   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features>
9520   {
operator ()std::hash9521     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features const & physicalDeviceVulkan11Features) const VULKAN_HPP_NOEXCEPT
9522     {
9523       std::size_t seed = 0;
9524     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.sType );
9525     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.pNext );
9526     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storageBuffer16BitAccess );
9527     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.uniformAndStorageBuffer16BitAccess );
9528     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storagePushConstant16 );
9529     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storageInputOutput16 );
9530     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiview );
9531     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiviewGeometryShader );
9532     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiviewTessellationShader );
9533     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.variablePointersStorageBuffer );
9534     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.variablePointers );
9535     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.protectedMemory );
9536     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.samplerYcbcrConversion );
9537     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.shaderDrawParameters );
9538       return seed;
9539     }
9540   };
9541 
9542   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties>
9543   {
operator ()std::hash9544     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties const & physicalDeviceVulkan11Properties) const VULKAN_HPP_NOEXCEPT
9545     {
9546       std::size_t seed = 0;
9547     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.sType );
9548     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.pNext );
9549     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
9550     {
9551       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceUUID[i] );
9552     }
9553     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
9554     {
9555       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.driverUUID[i] );
9556     }
9557     for ( size_t i = 0; i < VK_LUID_SIZE; ++i )
9558     {
9559       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceLUID[i] );
9560     }
9561     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceNodeMask );
9562     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceLUIDValid );
9563     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSize );
9564     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSupportedStages );
9565     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSupportedOperations );
9566     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupQuadOperationsInAllStages );
9567     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.pointClippingBehavior );
9568     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMultiviewViewCount );
9569     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMultiviewInstanceIndex );
9570     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.protectedNoFault );
9571     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxPerSetDescriptors );
9572     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMemoryAllocationSize );
9573       return seed;
9574     }
9575   };
9576 
9577   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features>
9578   {
operator ()std::hash9579     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features const & physicalDeviceVulkan12Features) const VULKAN_HPP_NOEXCEPT
9580     {
9581       std::size_t seed = 0;
9582     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.sType );
9583     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.pNext );
9584     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.samplerMirrorClampToEdge );
9585     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.drawIndirectCount );
9586     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.storageBuffer8BitAccess );
9587     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.uniformAndStorageBuffer8BitAccess );
9588     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.storagePushConstant8 );
9589     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderBufferInt64Atomics );
9590     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSharedInt64Atomics );
9591     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderFloat16 );
9592     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInt8 );
9593     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorIndexing );
9594     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInputAttachmentArrayDynamicIndexing );
9595     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing );
9596     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing );
9597     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformBufferArrayNonUniformIndexing );
9598     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing );
9599     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing );
9600     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageImageArrayNonUniformIndexing );
9601     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInputAttachmentArrayNonUniformIndexing );
9602     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing );
9603     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayNonUniformIndexing );
9604     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingUniformBufferUpdateAfterBind );
9605     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind );
9606     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind );
9607     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind );
9608     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind );
9609     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind );
9610     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending );
9611     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingPartiallyBound );
9612     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingVariableDescriptorCount );
9613     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.runtimeDescriptorArray );
9614     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.samplerFilterMinmax );
9615     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.scalarBlockLayout );
9616     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.imagelessFramebuffer );
9617     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.uniformBufferStandardLayout );
9618     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes );
9619     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.separateDepthStencilLayouts );
9620     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.hostQueryReset );
9621     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.timelineSemaphore );
9622     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddress );
9623     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddressCaptureReplay );
9624     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddressMultiDevice );
9625     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModel );
9626     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModelDeviceScope );
9627     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModelAvailabilityVisibilityChains );
9628     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderOutputViewportIndex );
9629     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderOutputLayer );
9630     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.subgroupBroadcastDynamicId );
9631       return seed;
9632     }
9633   };
9634 
9635   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties>
9636   {
operator ()std::hash9637     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties const & physicalDeviceVulkan12Properties) const VULKAN_HPP_NOEXCEPT
9638     {
9639       std::size_t seed = 0;
9640     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.sType );
9641     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.pNext );
9642     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverID );
9643     for ( size_t i = 0; i < VK_MAX_DRIVER_NAME_SIZE; ++i )
9644     {
9645       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverName[i] );
9646     }
9647     for ( size_t i = 0; i < VK_MAX_DRIVER_INFO_SIZE; ++i )
9648     {
9649       VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverInfo[i] );
9650     }
9651     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.conformanceVersion );
9652     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.denormBehaviorIndependence );
9653     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.roundingModeIndependence );
9654     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat16 );
9655     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat32 );
9656     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat64 );
9657     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat16 );
9658     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat32 );
9659     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat64 );
9660     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat16 );
9661     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat32 );
9662     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat64 );
9663     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat16 );
9664     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat32 );
9665     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat64 );
9666     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat16 );
9667     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat32 );
9668     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat64 );
9669     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxUpdateAfterBindDescriptorsInAllPools );
9670     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderUniformBufferArrayNonUniformIndexingNative );
9671     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSampledImageArrayNonUniformIndexingNative );
9672     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderStorageBufferArrayNonUniformIndexingNative );
9673     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderStorageImageArrayNonUniformIndexingNative );
9674     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderInputAttachmentArrayNonUniformIndexingNative );
9675     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.robustBufferAccessUpdateAfterBind );
9676     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.quadDivergentImplicitLod );
9677     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers );
9678     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers );
9679     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers );
9680     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages );
9681     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages );
9682     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments );
9683     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageUpdateAfterBindResources );
9684     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers );
9685     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers );
9686     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic );
9687     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers );
9688     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic );
9689     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages );
9690     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages );
9691     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments );
9692     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.supportedDepthResolveModes );
9693     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.supportedStencilResolveModes );
9694     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.independentResolveNone );
9695     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.independentResolve );
9696     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.filterMinmaxSingleComponentFormats );
9697     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.filterMinmaxImageComponentMapping );
9698     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxTimelineSemaphoreValueDifference );
9699     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.framebufferIntegerColorSampleCounts );
9700       return seed;
9701     }
9702   };
9703 
9704   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features>
9705   {
operator ()std::hash9706     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features const & physicalDeviceVulkan13Features) const VULKAN_HPP_NOEXCEPT
9707     {
9708       std::size_t seed = 0;
9709     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.sType );
9710     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.pNext );
9711     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.robustImageAccess );
9712     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.inlineUniformBlock );
9713     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.descriptorBindingInlineUniformBlockUpdateAfterBind );
9714     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.pipelineCreationCacheControl );
9715     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.privateData );
9716     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderDemoteToHelperInvocation );
9717     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderTerminateInvocation );
9718     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.subgroupSizeControl );
9719     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.computeFullSubgroups );
9720     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.synchronization2 );
9721     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.textureCompressionASTC_HDR );
9722     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderZeroInitializeWorkgroupMemory );
9723     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.dynamicRendering );
9724     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderIntegerDotProduct );
9725     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.maintenance4 );
9726       return seed;
9727     }
9728   };
9729 
9730   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties>
9731   {
operator ()std::hash9732     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties const & physicalDeviceVulkan13Properties) const VULKAN_HPP_NOEXCEPT
9733     {
9734       std::size_t seed = 0;
9735     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.sType );
9736     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.pNext );
9737     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.minSubgroupSize );
9738     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxSubgroupSize );
9739     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxComputeWorkgroupSubgroups );
9740     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.requiredSubgroupSizeStages );
9741     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxInlineUniformBlockSize );
9742     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxPerStageDescriptorInlineUniformBlocks );
9743     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks );
9744     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxDescriptorSetInlineUniformBlocks );
9745     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxDescriptorSetUpdateAfterBindInlineUniformBlocks );
9746     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxInlineUniformTotalSize );
9747     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitUnsignedAccelerated );
9748     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitSignedAccelerated );
9749     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitMixedSignednessAccelerated );
9750     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedUnsignedAccelerated );
9751     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedSignedAccelerated );
9752     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedMixedSignednessAccelerated );
9753     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct16BitUnsignedAccelerated );
9754     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct16BitSignedAccelerated );
9755     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct16BitMixedSignednessAccelerated );
9756     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct32BitUnsignedAccelerated );
9757     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct32BitSignedAccelerated );
9758     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct32BitMixedSignednessAccelerated );
9759     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct64BitUnsignedAccelerated );
9760     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct64BitSignedAccelerated );
9761     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct64BitMixedSignednessAccelerated );
9762     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated );
9763     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitSignedAccelerated );
9764     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated );
9765     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated );
9766     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated );
9767     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated );
9768     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated );
9769     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitSignedAccelerated );
9770     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated );
9771     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated );
9772     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitSignedAccelerated );
9773     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated );
9774     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated );
9775     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitSignedAccelerated );
9776     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated );
9777     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.storageTexelBufferOffsetAlignmentBytes );
9778     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.storageTexelBufferOffsetSingleTexelAlignment );
9779     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.uniformTexelBufferOffsetAlignmentBytes );
9780     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.uniformTexelBufferOffsetSingleTexelAlignment );
9781     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxBufferSize );
9782       return seed;
9783     }
9784   };
9785 
9786   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures>
9787   {
operator ()std::hash9788     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures const & physicalDeviceVulkanMemoryModelFeatures) const VULKAN_HPP_NOEXCEPT
9789     {
9790       std::size_t seed = 0;
9791     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.sType );
9792     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.pNext );
9793     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModel );
9794     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModelDeviceScope );
9795     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModelAvailabilityVisibilityChains );
9796       return seed;
9797     }
9798   };
9799 
9800   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR>
9801   {
operator ()std::hash9802     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR) const VULKAN_HPP_NOEXCEPT
9803     {
9804       std::size_t seed = 0;
9805     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType );
9806     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.pNext );
9807     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout );
9808     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout );
9809     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess );
9810     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess );
9811       return seed;
9812     }
9813   };
9814 
9815   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT>
9816   {
operator ()std::hash9817     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & physicalDeviceYcbcr2Plane444FormatsFeaturesEXT) const VULKAN_HPP_NOEXCEPT
9818     {
9819       std::size_t seed = 0;
9820     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType );
9821     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext );
9822     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats );
9823       return seed;
9824     }
9825   };
9826 
9827   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT>
9828   {
operator ()std::hash9829     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT const & physicalDeviceYcbcrImageArraysFeaturesEXT) const VULKAN_HPP_NOEXCEPT
9830     {
9831       std::size_t seed = 0;
9832     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.sType );
9833     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.pNext );
9834     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays );
9835       return seed;
9836     }
9837   };
9838 
9839   template <> struct hash<VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures>
9840   {
operator ()std::hash9841     std::size_t operator()(VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & physicalDeviceZeroInitializeWorkgroupMemoryFeatures) const VULKAN_HPP_NOEXCEPT
9842     {
9843       std::size_t seed = 0;
9844     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.sType );
9845     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.pNext );
9846     VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.shaderZeroInitializeWorkgroupMemory );
9847       return seed;
9848     }
9849   };
9850 
9851   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo>
9852   {
operator ()std::hash9853     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & pipelineCacheCreateInfo) const VULKAN_HPP_NOEXCEPT
9854     {
9855       std::size_t seed = 0;
9856     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.sType );
9857     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.pNext );
9858     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.flags );
9859     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.initialDataSize );
9860     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.pInitialData );
9861       return seed;
9862     }
9863   };
9864 
9865   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne>
9866   {
operator ()std::hash9867     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const & pipelineCacheHeaderVersionOne) const VULKAN_HPP_NOEXCEPT
9868     {
9869       std::size_t seed = 0;
9870     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.headerSize );
9871     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.headerVersion );
9872     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.vendorID );
9873     VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.deviceID );
9874     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
9875     {
9876       VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.pipelineCacheUUID[i] );
9877     }
9878       return seed;
9879     }
9880   };
9881 
9882   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT>
9883   {
operator ()std::hash9884     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT const & pipelineColorBlendAdvancedStateCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
9885     {
9886       std::size_t seed = 0;
9887     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.sType );
9888     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.pNext );
9889     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.srcPremultiplied );
9890     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.dstPremultiplied );
9891     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.blendOverlap );
9892       return seed;
9893     }
9894   };
9895 
9896   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT>
9897   {
operator ()std::hash9898     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT const & pipelineColorWriteCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
9899     {
9900       std::size_t seed = 0;
9901     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.sType );
9902     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.pNext );
9903     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.attachmentCount );
9904     VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.pColorWriteEnables );
9905       return seed;
9906     }
9907   };
9908 
9909   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD>
9910   {
operator ()std::hash9911     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD const & pipelineCompilerControlCreateInfoAMD) const VULKAN_HPP_NOEXCEPT
9912     {
9913       std::size_t seed = 0;
9914     VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.sType );
9915     VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.pNext );
9916     VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.compilerControlFlags );
9917       return seed;
9918     }
9919   };
9920 
9921   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV>
9922   {
operator ()std::hash9923     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV const & pipelineCoverageModulationStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
9924     {
9925       std::size_t seed = 0;
9926     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.sType );
9927     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.pNext );
9928     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.flags );
9929     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationMode );
9930     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationTableEnable );
9931     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationTableCount );
9932     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.pCoverageModulationTable );
9933       return seed;
9934     }
9935   };
9936 
9937   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV>
9938   {
operator ()std::hash9939     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV const & pipelineCoverageReductionStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
9940     {
9941       std::size_t seed = 0;
9942     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.sType );
9943     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.pNext );
9944     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.flags );
9945     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.coverageReductionMode );
9946       return seed;
9947     }
9948   };
9949 
9950   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV>
9951   {
operator ()std::hash9952     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV const & pipelineCoverageToColorStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
9953     {
9954       std::size_t seed = 0;
9955     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.sType );
9956     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.pNext );
9957     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.flags );
9958     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.coverageToColorEnable );
9959     VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.coverageToColorLocation );
9960       return seed;
9961     }
9962   };
9963 
9964   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCreationFeedback>
9965   {
operator ()std::hash9966     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCreationFeedback const & pipelineCreationFeedback) const VULKAN_HPP_NOEXCEPT
9967     {
9968       std::size_t seed = 0;
9969     VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedback.flags );
9970     VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedback.duration );
9971       return seed;
9972     }
9973   };
9974 
9975   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo>
9976   {
operator ()std::hash9977     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo const & pipelineCreationFeedbackCreateInfo) const VULKAN_HPP_NOEXCEPT
9978     {
9979       std::size_t seed = 0;
9980     VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.sType );
9981     VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pNext );
9982     VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pPipelineCreationFeedback );
9983     VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pipelineStageCreationFeedbackCount );
9984     VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pPipelineStageCreationFeedbacks );
9985       return seed;
9986     }
9987   };
9988 
9989   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT>
9990   {
operator ()std::hash9991     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT const & pipelineDiscardRectangleStateCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
9992     {
9993       std::size_t seed = 0;
9994     VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.sType );
9995     VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.pNext );
9996     VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.flags );
9997     VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.discardRectangleMode );
9998     VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.discardRectangleCount );
9999     VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.pDiscardRectangles );
10000       return seed;
10001     }
10002   };
10003 
10004   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR>
10005   {
operator ()std::hash10006     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR const & pipelineExecutableInfoKHR) const VULKAN_HPP_NOEXCEPT
10007     {
10008       std::size_t seed = 0;
10009     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.sType );
10010     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.pNext );
10011     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.pipeline );
10012     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.executableIndex );
10013       return seed;
10014     }
10015   };
10016 
10017   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>
10018   {
operator ()std::hash10019     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR const & pipelineExecutableInternalRepresentationKHR) const VULKAN_HPP_NOEXCEPT
10020     {
10021       std::size_t seed = 0;
10022     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.sType );
10023     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.pNext );
10024     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
10025     {
10026       VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.name[i] );
10027     }
10028     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
10029     {
10030       VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.description[i] );
10031     }
10032     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.isText );
10033     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.dataSize );
10034     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.pData );
10035       return seed;
10036     }
10037   };
10038 
10039   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>
10040   {
operator ()std::hash10041     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR const & pipelineExecutablePropertiesKHR) const VULKAN_HPP_NOEXCEPT
10042     {
10043       std::size_t seed = 0;
10044     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.sType );
10045     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.pNext );
10046     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.stages );
10047     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
10048     {
10049       VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.name[i] );
10050     }
10051     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
10052     {
10053       VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.description[i] );
10054     }
10055     VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.subgroupSize );
10056       return seed;
10057     }
10058   };
10059 
10060   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV>
10061   {
operator ()std::hash10062     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV const & pipelineFragmentShadingRateEnumStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10063     {
10064       std::size_t seed = 0;
10065     VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.sType );
10066     VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.pNext );
10067     VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.shadingRateType );
10068     VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.shadingRate );
10069     for ( size_t i = 0; i < 2; ++i )
10070     {
10071       VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.combinerOps[i] );
10072     }
10073       return seed;
10074     }
10075   };
10076 
10077   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR>
10078   {
operator ()std::hash10079     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR const & pipelineFragmentShadingRateStateCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
10080     {
10081       std::size_t seed = 0;
10082     VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.sType );
10083     VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.pNext );
10084     VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.fragmentSize );
10085     for ( size_t i = 0; i < 2; ++i )
10086     {
10087       VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.combinerOps[i] );
10088     }
10089       return seed;
10090     }
10091   };
10092 
10093   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineInfoKHR>
10094   {
operator ()std::hash10095     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineInfoKHR const & pipelineInfoKHR) const VULKAN_HPP_NOEXCEPT
10096     {
10097       std::size_t seed = 0;
10098     VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.sType );
10099     VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.pNext );
10100     VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.pipeline );
10101       return seed;
10102     }
10103   };
10104 
10105   template <> struct hash<VULKAN_HPP_NAMESPACE::PushConstantRange>
10106   {
operator ()std::hash10107     std::size_t operator()(VULKAN_HPP_NAMESPACE::PushConstantRange const & pushConstantRange) const VULKAN_HPP_NOEXCEPT
10108     {
10109       std::size_t seed = 0;
10110     VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.stageFlags );
10111     VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.offset );
10112     VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.size );
10113       return seed;
10114     }
10115   };
10116 
10117   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo>
10118   {
operator ()std::hash10119     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & pipelineLayoutCreateInfo) const VULKAN_HPP_NOEXCEPT
10120     {
10121       std::size_t seed = 0;
10122     VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.sType );
10123     VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pNext );
10124     VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.flags );
10125     VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.setLayoutCount );
10126     VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pSetLayouts );
10127     VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pushConstantRangeCount );
10128     VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pPushConstantRanges );
10129       return seed;
10130     }
10131   };
10132 
10133   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR>
10134   {
operator ()std::hash10135     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR const & pipelineLibraryCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
10136     {
10137       std::size_t seed = 0;
10138     VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.sType );
10139     VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.pNext );
10140     VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.libraryCount );
10141     VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.pLibraries );
10142       return seed;
10143     }
10144   };
10145 
10146   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT>
10147   {
operator ()std::hash10148     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT const & pipelinePropertiesIdentifierEXT) const VULKAN_HPP_NOEXCEPT
10149     {
10150       std::size_t seed = 0;
10151     VULKAN_HPP_HASH_COMBINE( seed, pipelinePropertiesIdentifierEXT.sType );
10152     VULKAN_HPP_HASH_COMBINE( seed, pipelinePropertiesIdentifierEXT.pNext );
10153     for ( size_t i = 0; i < VK_UUID_SIZE; ++i )
10154     {
10155       VULKAN_HPP_HASH_COMBINE( seed, pipelinePropertiesIdentifierEXT.pipelineIdentifier[i] );
10156     }
10157       return seed;
10158     }
10159   };
10160 
10161   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT>
10162   {
operator ()std::hash10163     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT const & pipelineRasterizationConservativeStateCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10164     {
10165       std::size_t seed = 0;
10166     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.sType );
10167     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.pNext );
10168     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.flags );
10169     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.conservativeRasterizationMode );
10170     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.extraPrimitiveOverestimationSize );
10171       return seed;
10172     }
10173   };
10174 
10175   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT>
10176   {
operator ()std::hash10177     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT const & pipelineRasterizationDepthClipStateCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10178     {
10179       std::size_t seed = 0;
10180     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.sType );
10181     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.pNext );
10182     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.flags );
10183     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.depthClipEnable );
10184       return seed;
10185     }
10186   };
10187 
10188   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT>
10189   {
operator ()std::hash10190     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfoEXT const & pipelineRasterizationLineStateCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10191     {
10192       std::size_t seed = 0;
10193     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.sType );
10194     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.pNext );
10195     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.lineRasterizationMode );
10196     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.stippledLineEnable );
10197     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.lineStippleFactor );
10198     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfoEXT.lineStipplePattern );
10199       return seed;
10200     }
10201   };
10202 
10203   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT>
10204   {
operator ()std::hash10205     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT const & pipelineRasterizationProvokingVertexStateCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10206     {
10207       std::size_t seed = 0;
10208     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.sType );
10209     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.pNext );
10210     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.provokingVertexMode );
10211       return seed;
10212     }
10213   };
10214 
10215   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD>
10216   {
operator ()std::hash10217     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD const & pipelineRasterizationStateRasterizationOrderAMD) const VULKAN_HPP_NOEXCEPT
10218     {
10219       std::size_t seed = 0;
10220     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.sType );
10221     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.pNext );
10222     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.rasterizationOrder );
10223       return seed;
10224     }
10225   };
10226 
10227   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT>
10228   {
operator ()std::hash10229     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT const & pipelineRasterizationStateStreamCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10230     {
10231       std::size_t seed = 0;
10232     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.sType );
10233     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.pNext );
10234     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.flags );
10235     VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.rasterizationStream );
10236       return seed;
10237     }
10238   };
10239 
10240   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo>
10241   {
operator ()std::hash10242     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo const & pipelineRenderingCreateInfo) const VULKAN_HPP_NOEXCEPT
10243     {
10244       std::size_t seed = 0;
10245     VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.sType );
10246     VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.pNext );
10247     VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.viewMask );
10248     VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.colorAttachmentCount );
10249     VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.pColorAttachmentFormats );
10250     VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.depthAttachmentFormat );
10251     VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.stencilAttachmentFormat );
10252       return seed;
10253     }
10254   };
10255 
10256   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV>
10257   {
operator ()std::hash10258     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV const & pipelineRepresentativeFragmentTestStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10259     {
10260       std::size_t seed = 0;
10261     VULKAN_HPP_HASH_COMBINE( seed, pipelineRepresentativeFragmentTestStateCreateInfoNV.sType );
10262     VULKAN_HPP_HASH_COMBINE( seed, pipelineRepresentativeFragmentTestStateCreateInfoNV.pNext );
10263     VULKAN_HPP_HASH_COMBINE( seed, pipelineRepresentativeFragmentTestStateCreateInfoNV.representativeFragmentTestEnable );
10264       return seed;
10265     }
10266   };
10267 
10268   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT>
10269   {
operator ()std::hash10270     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfoEXT const & pipelineRobustnessCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10271     {
10272       std::size_t seed = 0;
10273     VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfoEXT.sType );
10274     VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfoEXT.pNext );
10275     VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfoEXT.storageBuffers );
10276     VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfoEXT.uniformBuffers );
10277     VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfoEXT.vertexInputs );
10278     VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfoEXT.images );
10279       return seed;
10280     }
10281   };
10282 
10283   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT>
10284   {
operator ()std::hash10285     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT const & pipelineSampleLocationsStateCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10286     {
10287       std::size_t seed = 0;
10288     VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sType );
10289     VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.pNext );
10290     VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sampleLocationsEnable );
10291     VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sampleLocationsInfo );
10292       return seed;
10293     }
10294   };
10295 
10296   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT>
10297   {
operator ()std::hash10298     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT const & pipelineShaderStageModuleIdentifierCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10299     {
10300       std::size_t seed = 0;
10301     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageModuleIdentifierCreateInfoEXT.sType );
10302     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageModuleIdentifierCreateInfoEXT.pNext );
10303     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageModuleIdentifierCreateInfoEXT.identifierSize );
10304     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageModuleIdentifierCreateInfoEXT.pIdentifier );
10305       return seed;
10306     }
10307   };
10308 
10309   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo>
10310   {
operator ()std::hash10311     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo const & pipelineShaderStageRequiredSubgroupSizeCreateInfo) const VULKAN_HPP_NOEXCEPT
10312     {
10313       std::size_t seed = 0;
10314     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.sType );
10315     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.pNext );
10316     VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.requiredSubgroupSize );
10317       return seed;
10318     }
10319   };
10320 
10321   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo>
10322   {
operator ()std::hash10323     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo const & pipelineTessellationDomainOriginStateCreateInfo) const VULKAN_HPP_NOEXCEPT
10324     {
10325       std::size_t seed = 0;
10326     VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.sType );
10327     VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.pNext );
10328     VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.domainOrigin );
10329       return seed;
10330     }
10331   };
10332 
10333   template <> struct hash<VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT>
10334   {
operator ()std::hash10335     std::size_t operator()(VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT const & vertexInputBindingDivisorDescriptionEXT) const VULKAN_HPP_NOEXCEPT
10336     {
10337       std::size_t seed = 0;
10338     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDivisorDescriptionEXT.binding );
10339     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDivisorDescriptionEXT.divisor );
10340       return seed;
10341     }
10342   };
10343 
10344   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT>
10345   {
operator ()std::hash10346     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfoEXT const & pipelineVertexInputDivisorStateCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10347     {
10348       std::size_t seed = 0;
10349     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfoEXT.sType );
10350     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfoEXT.pNext );
10351     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfoEXT.vertexBindingDivisorCount );
10352     VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfoEXT.pVertexBindingDivisors );
10353       return seed;
10354     }
10355   };
10356 
10357   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV>
10358   {
operator ()std::hash10359     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV const & pipelineViewportCoarseSampleOrderStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10360     {
10361       std::size_t seed = 0;
10362     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.sType );
10363     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.pNext );
10364     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.sampleOrderType );
10365     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.customSampleOrderCount );
10366     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.pCustomSampleOrders );
10367       return seed;
10368     }
10369   };
10370 
10371   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT>
10372   {
operator ()std::hash10373     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT const & pipelineViewportDepthClipControlCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
10374     {
10375       std::size_t seed = 0;
10376     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.sType );
10377     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.pNext );
10378     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.negativeOneToOne );
10379       return seed;
10380     }
10381   };
10382 
10383   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV>
10384   {
operator ()std::hash10385     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV const & pipelineViewportExclusiveScissorStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10386     {
10387       std::size_t seed = 0;
10388     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.sType );
10389     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.pNext );
10390     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.exclusiveScissorCount );
10391     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.pExclusiveScissors );
10392       return seed;
10393     }
10394   };
10395 
10396   template <> struct hash<VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV>
10397   {
operator ()std::hash10398     std::size_t operator()(VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV const & shadingRatePaletteNV) const VULKAN_HPP_NOEXCEPT
10399     {
10400       std::size_t seed = 0;
10401     VULKAN_HPP_HASH_COMBINE( seed, shadingRatePaletteNV.shadingRatePaletteEntryCount );
10402     VULKAN_HPP_HASH_COMBINE( seed, shadingRatePaletteNV.pShadingRatePaletteEntries );
10403       return seed;
10404     }
10405   };
10406 
10407   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV>
10408   {
operator ()std::hash10409     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV const & pipelineViewportShadingRateImageStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10410     {
10411       std::size_t seed = 0;
10412     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.sType );
10413     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.pNext );
10414     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.shadingRateImageEnable );
10415     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.viewportCount );
10416     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.pShadingRatePalettes );
10417       return seed;
10418     }
10419   };
10420 
10421   template <> struct hash<VULKAN_HPP_NAMESPACE::ViewportSwizzleNV>
10422   {
operator ()std::hash10423     std::size_t operator()(VULKAN_HPP_NAMESPACE::ViewportSwizzleNV const & viewportSwizzleNV) const VULKAN_HPP_NOEXCEPT
10424     {
10425       std::size_t seed = 0;
10426     VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.x );
10427     VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.y );
10428     VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.z );
10429     VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.w );
10430       return seed;
10431     }
10432   };
10433 
10434   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV>
10435   {
operator ()std::hash10436     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV const & pipelineViewportSwizzleStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10437     {
10438       std::size_t seed = 0;
10439     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.sType );
10440     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.pNext );
10441     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.flags );
10442     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.viewportCount );
10443     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.pViewportSwizzles );
10444       return seed;
10445     }
10446   };
10447 
10448   template <> struct hash<VULKAN_HPP_NAMESPACE::ViewportWScalingNV>
10449   {
operator ()std::hash10450     std::size_t operator()(VULKAN_HPP_NAMESPACE::ViewportWScalingNV const & viewportWScalingNV) const VULKAN_HPP_NOEXCEPT
10451     {
10452       std::size_t seed = 0;
10453     VULKAN_HPP_HASH_COMBINE( seed, viewportWScalingNV.xcoeff );
10454     VULKAN_HPP_HASH_COMBINE( seed, viewportWScalingNV.ycoeff );
10455       return seed;
10456     }
10457   };
10458 
10459   template <> struct hash<VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV>
10460   {
operator ()std::hash10461     std::size_t operator()(VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV const & pipelineViewportWScalingStateCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10462     {
10463       std::size_t seed = 0;
10464     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.sType );
10465     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.pNext );
10466     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.viewportWScalingEnable );
10467     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.viewportCount );
10468     VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.pViewportWScalings );
10469       return seed;
10470     }
10471   };
10472 
10473   #if defined( VK_USE_PLATFORM_GGP )
10474 template <> struct hash<VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP>
10475   {
operator ()std::hash10476     std::size_t operator()(VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP const & presentFrameTokenGGP) const VULKAN_HPP_NOEXCEPT
10477     {
10478       std::size_t seed = 0;
10479     VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.sType );
10480     VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.pNext );
10481     VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.frameToken );
10482       return seed;
10483     }
10484   };
10485 #endif /*VK_USE_PLATFORM_GGP*/
10486 
10487   template <> struct hash<VULKAN_HPP_NAMESPACE::PresentIdKHR>
10488   {
operator ()std::hash10489     std::size_t operator()(VULKAN_HPP_NAMESPACE::PresentIdKHR const & presentIdKHR) const VULKAN_HPP_NOEXCEPT
10490     {
10491       std::size_t seed = 0;
10492     VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.sType );
10493     VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.pNext );
10494     VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.swapchainCount );
10495     VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.pPresentIds );
10496       return seed;
10497     }
10498   };
10499 
10500   template <> struct hash<VULKAN_HPP_NAMESPACE::PresentInfoKHR>
10501   {
operator ()std::hash10502     std::size_t operator()(VULKAN_HPP_NAMESPACE::PresentInfoKHR const & presentInfoKHR) const VULKAN_HPP_NOEXCEPT
10503     {
10504       std::size_t seed = 0;
10505     VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.sType );
10506     VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pNext );
10507     VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.waitSemaphoreCount );
10508     VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pWaitSemaphores );
10509     VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.swapchainCount );
10510     VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pSwapchains );
10511     VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pImageIndices );
10512     VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pResults );
10513       return seed;
10514     }
10515   };
10516 
10517   template <> struct hash<VULKAN_HPP_NAMESPACE::RectLayerKHR>
10518   {
operator ()std::hash10519     std::size_t operator()(VULKAN_HPP_NAMESPACE::RectLayerKHR const & rectLayerKHR) const VULKAN_HPP_NOEXCEPT
10520     {
10521       std::size_t seed = 0;
10522     VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.offset );
10523     VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.extent );
10524     VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.layer );
10525       return seed;
10526     }
10527   };
10528 
10529   template <> struct hash<VULKAN_HPP_NAMESPACE::PresentRegionKHR>
10530   {
operator ()std::hash10531     std::size_t operator()(VULKAN_HPP_NAMESPACE::PresentRegionKHR const & presentRegionKHR) const VULKAN_HPP_NOEXCEPT
10532     {
10533       std::size_t seed = 0;
10534     VULKAN_HPP_HASH_COMBINE( seed, presentRegionKHR.rectangleCount );
10535     VULKAN_HPP_HASH_COMBINE( seed, presentRegionKHR.pRectangles );
10536       return seed;
10537     }
10538   };
10539 
10540   template <> struct hash<VULKAN_HPP_NAMESPACE::PresentRegionsKHR>
10541   {
operator ()std::hash10542     std::size_t operator()(VULKAN_HPP_NAMESPACE::PresentRegionsKHR const & presentRegionsKHR) const VULKAN_HPP_NOEXCEPT
10543     {
10544       std::size_t seed = 0;
10545     VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.sType );
10546     VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.pNext );
10547     VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.swapchainCount );
10548     VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.pRegions );
10549       return seed;
10550     }
10551   };
10552 
10553   template <> struct hash<VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE>
10554   {
operator ()std::hash10555     std::size_t operator()(VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE const & presentTimeGOOGLE) const VULKAN_HPP_NOEXCEPT
10556     {
10557       std::size_t seed = 0;
10558     VULKAN_HPP_HASH_COMBINE( seed, presentTimeGOOGLE.presentID );
10559     VULKAN_HPP_HASH_COMBINE( seed, presentTimeGOOGLE.desiredPresentTime );
10560       return seed;
10561     }
10562   };
10563 
10564   template <> struct hash<VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE>
10565   {
operator ()std::hash10566     std::size_t operator()(VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE const & presentTimesInfoGOOGLE) const VULKAN_HPP_NOEXCEPT
10567     {
10568       std::size_t seed = 0;
10569     VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.sType );
10570     VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.pNext );
10571     VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.swapchainCount );
10572     VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.pTimes );
10573       return seed;
10574     }
10575   };
10576 
10577   template <> struct hash<VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo>
10578   {
operator ()std::hash10579     std::size_t operator()(VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & privateDataSlotCreateInfo) const VULKAN_HPP_NOEXCEPT
10580     {
10581       std::size_t seed = 0;
10582     VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.sType );
10583     VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.pNext );
10584     VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.flags );
10585       return seed;
10586     }
10587   };
10588 
10589   template <> struct hash<VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo>
10590   {
operator ()std::hash10591     std::size_t operator()(VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo const & protectedSubmitInfo) const VULKAN_HPP_NOEXCEPT
10592     {
10593       std::size_t seed = 0;
10594     VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.sType );
10595     VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.pNext );
10596     VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.protectedSubmit );
10597       return seed;
10598     }
10599   };
10600 
10601   template <> struct hash<VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo>
10602   {
operator ()std::hash10603     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & queryPoolCreateInfo) const VULKAN_HPP_NOEXCEPT
10604     {
10605       std::size_t seed = 0;
10606     VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.sType );
10607     VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.pNext );
10608     VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.flags );
10609     VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.queryType );
10610     VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.queryCount );
10611     VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.pipelineStatistics );
10612       return seed;
10613     }
10614   };
10615 
10616   template <> struct hash<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR>
10617   {
operator ()std::hash10618     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR const & queryPoolPerformanceCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
10619     {
10620       std::size_t seed = 0;
10621     VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.sType );
10622     VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.pNext );
10623     VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.queueFamilyIndex );
10624     VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.counterIndexCount );
10625     VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.pCounterIndices );
10626       return seed;
10627     }
10628   };
10629 
10630   template <> struct hash<VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL>
10631   {
operator ()std::hash10632     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL const & queryPoolPerformanceQueryCreateInfoINTEL) const VULKAN_HPP_NOEXCEPT
10633     {
10634       std::size_t seed = 0;
10635     VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.sType );
10636     VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.pNext );
10637     VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.performanceCountersSampling );
10638       return seed;
10639     }
10640   };
10641 
10642   template <> struct hash<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV>
10643   {
operator ()std::hash10644     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV const & queueFamilyCheckpointProperties2NV) const VULKAN_HPP_NOEXCEPT
10645     {
10646       std::size_t seed = 0;
10647     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.sType );
10648     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.pNext );
10649     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.checkpointExecutionStageMask );
10650       return seed;
10651     }
10652   };
10653 
10654   template <> struct hash<VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV>
10655   {
operator ()std::hash10656     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV const & queueFamilyCheckpointPropertiesNV) const VULKAN_HPP_NOEXCEPT
10657     {
10658       std::size_t seed = 0;
10659     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.sType );
10660     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.pNext );
10661     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.checkpointExecutionStageMask );
10662       return seed;
10663     }
10664   };
10665 
10666   template <> struct hash<VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR>
10667   {
operator ()std::hash10668     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityPropertiesKHR const & queueFamilyGlobalPriorityPropertiesKHR) const VULKAN_HPP_NOEXCEPT
10669     {
10670       std::size_t seed = 0;
10671     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityPropertiesKHR.sType );
10672     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityPropertiesKHR.pNext );
10673     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityPropertiesKHR.priorityCount );
10674     for ( size_t i = 0; i < VK_MAX_GLOBAL_PRIORITY_SIZE_KHR; ++i )
10675     {
10676       VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityPropertiesKHR.priorities[i] );
10677     }
10678       return seed;
10679     }
10680   };
10681 
10682   template <> struct hash<VULKAN_HPP_NAMESPACE::QueueFamilyProperties>
10683   {
operator ()std::hash10684     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueueFamilyProperties const & queueFamilyProperties) const VULKAN_HPP_NOEXCEPT
10685     {
10686       std::size_t seed = 0;
10687     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.queueFlags );
10688     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.queueCount );
10689     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.timestampValidBits );
10690     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.minImageTransferGranularity );
10691       return seed;
10692     }
10693   };
10694 
10695   template <> struct hash<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
10696   {
operator ()std::hash10697     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 const & queueFamilyProperties2) const VULKAN_HPP_NOEXCEPT
10698     {
10699       std::size_t seed = 0;
10700     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.sType );
10701     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.pNext );
10702     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.queueFamilyProperties );
10703       return seed;
10704     }
10705   };
10706 
10707   template <> struct hash<VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR>
10708   {
operator ()std::hash10709     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR const & queueFamilyQueryResultStatusPropertiesKHR) const VULKAN_HPP_NOEXCEPT
10710     {
10711       std::size_t seed = 0;
10712     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusPropertiesKHR.sType );
10713     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusPropertiesKHR.pNext );
10714     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusPropertiesKHR.queryResultStatusSupport );
10715       return seed;
10716     }
10717   };
10718 
10719   template <> struct hash<VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR>
10720   {
operator ()std::hash10721     std::size_t operator()(VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR const & queueFamilyVideoPropertiesKHR) const VULKAN_HPP_NOEXCEPT
10722     {
10723       std::size_t seed = 0;
10724     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyVideoPropertiesKHR.sType );
10725     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyVideoPropertiesKHR.pNext );
10726     VULKAN_HPP_HASH_COMBINE( seed, queueFamilyVideoPropertiesKHR.videoCodecOperations );
10727       return seed;
10728     }
10729   };
10730 
10731   template <> struct hash<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR>
10732   {
operator ()std::hash10733     std::size_t operator()(VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR const & rayTracingShaderGroupCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
10734     {
10735       std::size_t seed = 0;
10736     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.sType );
10737     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.pNext );
10738     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.type );
10739     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.generalShader );
10740     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.closestHitShader );
10741     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.anyHitShader );
10742     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.intersectionShader );
10743     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.pShaderGroupCaptureReplayHandle );
10744       return seed;
10745     }
10746   };
10747 
10748   template <> struct hash<VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR>
10749   {
operator ()std::hash10750     std::size_t operator()(VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR const & rayTracingPipelineInterfaceCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
10751     {
10752       std::size_t seed = 0;
10753     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.sType );
10754     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.pNext );
10755     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.maxPipelineRayPayloadSize );
10756     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.maxPipelineRayHitAttributeSize );
10757       return seed;
10758     }
10759   };
10760 
10761   template <> struct hash<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR>
10762   {
operator ()std::hash10763     std::size_t operator()(VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const & rayTracingPipelineCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
10764     {
10765       std::size_t seed = 0;
10766     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.sType );
10767     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pNext );
10768     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.flags );
10769     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.stageCount );
10770     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pStages );
10771     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.groupCount );
10772     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pGroups );
10773     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.maxPipelineRayRecursionDepth );
10774     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pLibraryInfo );
10775     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pLibraryInterface );
10776     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pDynamicState );
10777     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.layout );
10778     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.basePipelineHandle );
10779     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.basePipelineIndex );
10780       return seed;
10781     }
10782   };
10783 
10784   template <> struct hash<VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV>
10785   {
operator ()std::hash10786     std::size_t operator()(VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV const & rayTracingShaderGroupCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10787     {
10788       std::size_t seed = 0;
10789     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.sType );
10790     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.pNext );
10791     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.type );
10792     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.generalShader );
10793     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.closestHitShader );
10794     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.anyHitShader );
10795     VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.intersectionShader );
10796       return seed;
10797     }
10798   };
10799 
10800   template <> struct hash<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV>
10801   {
operator ()std::hash10802     std::size_t operator()(VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const & rayTracingPipelineCreateInfoNV) const VULKAN_HPP_NOEXCEPT
10803     {
10804       std::size_t seed = 0;
10805     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.sType );
10806     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pNext );
10807     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.flags );
10808     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.stageCount );
10809     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pStages );
10810     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.groupCount );
10811     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pGroups );
10812     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.maxRecursionDepth );
10813     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.layout );
10814     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.basePipelineHandle );
10815     VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.basePipelineIndex );
10816       return seed;
10817     }
10818   };
10819 
10820   template <> struct hash<VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE>
10821   {
operator ()std::hash10822     std::size_t operator()(VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE const & refreshCycleDurationGOOGLE) const VULKAN_HPP_NOEXCEPT
10823     {
10824       std::size_t seed = 0;
10825     VULKAN_HPP_HASH_COMBINE( seed, refreshCycleDurationGOOGLE.refreshDuration );
10826       return seed;
10827     }
10828   };
10829 
10830   template <> struct hash<VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT>
10831   {
operator ()std::hash10832     std::size_t operator()(VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT const & releaseSwapchainImagesInfoEXT) const VULKAN_HPP_NOEXCEPT
10833     {
10834       std::size_t seed = 0;
10835     VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoEXT.sType );
10836     VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoEXT.pNext );
10837     VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoEXT.swapchain );
10838     VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoEXT.imageIndexCount );
10839     VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoEXT.pImageIndices );
10840       return seed;
10841     }
10842   };
10843 
10844   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo>
10845   {
operator ()std::hash10846     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo const & renderPassAttachmentBeginInfo) const VULKAN_HPP_NOEXCEPT
10847     {
10848       std::size_t seed = 0;
10849     VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.sType );
10850     VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.pNext );
10851     VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.attachmentCount );
10852     VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.pAttachments );
10853       return seed;
10854     }
10855   };
10856 
10857   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassBeginInfo>
10858   {
operator ()std::hash10859     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassBeginInfo const & renderPassBeginInfo) const VULKAN_HPP_NOEXCEPT
10860     {
10861       std::size_t seed = 0;
10862     VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.sType );
10863     VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.pNext );
10864     VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.renderPass );
10865     VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.framebuffer );
10866     VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.renderArea );
10867     VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.clearValueCount );
10868     VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.pClearValues );
10869       return seed;
10870     }
10871   };
10872 
10873   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassDescription>
10874   {
operator ()std::hash10875     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassDescription const & subpassDescription) const VULKAN_HPP_NOEXCEPT
10876     {
10877       std::size_t seed = 0;
10878     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.flags );
10879     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pipelineBindPoint );
10880     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.inputAttachmentCount );
10881     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pInputAttachments );
10882     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.colorAttachmentCount );
10883     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pColorAttachments );
10884     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pResolveAttachments );
10885     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pDepthStencilAttachment );
10886     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.preserveAttachmentCount );
10887     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pPreserveAttachments );
10888       return seed;
10889     }
10890   };
10891 
10892   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassDependency>
10893   {
operator ()std::hash10894     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassDependency const & subpassDependency) const VULKAN_HPP_NOEXCEPT
10895     {
10896       std::size_t seed = 0;
10897     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcSubpass );
10898     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstSubpass );
10899     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcStageMask );
10900     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstStageMask );
10901     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcAccessMask );
10902     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstAccessMask );
10903     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dependencyFlags );
10904       return seed;
10905     }
10906   };
10907 
10908   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo>
10909   {
operator ()std::hash10910     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & renderPassCreateInfo) const VULKAN_HPP_NOEXCEPT
10911     {
10912       std::size_t seed = 0;
10913     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.sType );
10914     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pNext );
10915     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.flags );
10916     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.attachmentCount );
10917     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pAttachments );
10918     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.subpassCount );
10919     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pSubpasses );
10920     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.dependencyCount );
10921     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pDependencies );
10922       return seed;
10923     }
10924   };
10925 
10926   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassDescription2>
10927   {
operator ()std::hash10928     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassDescription2 const & subpassDescription2) const VULKAN_HPP_NOEXCEPT
10929     {
10930       std::size_t seed = 0;
10931     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.sType );
10932     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pNext );
10933     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.flags );
10934     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pipelineBindPoint );
10935     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.viewMask );
10936     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.inputAttachmentCount );
10937     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pInputAttachments );
10938     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.colorAttachmentCount );
10939     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pColorAttachments );
10940     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pResolveAttachments );
10941     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pDepthStencilAttachment );
10942     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.preserveAttachmentCount );
10943     VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pPreserveAttachments );
10944       return seed;
10945     }
10946   };
10947 
10948   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassDependency2>
10949   {
operator ()std::hash10950     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassDependency2 const & subpassDependency2) const VULKAN_HPP_NOEXCEPT
10951     {
10952       std::size_t seed = 0;
10953     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.sType );
10954     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.pNext );
10955     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcSubpass );
10956     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstSubpass );
10957     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcStageMask );
10958     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstStageMask );
10959     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcAccessMask );
10960     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstAccessMask );
10961     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dependencyFlags );
10962     VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.viewOffset );
10963       return seed;
10964     }
10965   };
10966 
10967   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2>
10968   {
operator ()std::hash10969     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & renderPassCreateInfo2) const VULKAN_HPP_NOEXCEPT
10970     {
10971       std::size_t seed = 0;
10972     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.sType );
10973     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pNext );
10974     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.flags );
10975     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.attachmentCount );
10976     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pAttachments );
10977     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.subpassCount );
10978     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pSubpasses );
10979     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.dependencyCount );
10980     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pDependencies );
10981     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.correlatedViewMaskCount );
10982     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pCorrelatedViewMasks );
10983       return seed;
10984     }
10985   };
10986 
10987   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT>
10988   {
operator ()std::hash10989     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT const & renderPassCreationControlEXT) const VULKAN_HPP_NOEXCEPT
10990     {
10991       std::size_t seed = 0;
10992     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationControlEXT.sType );
10993     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationControlEXT.pNext );
10994     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationControlEXT.disallowMerging );
10995       return seed;
10996     }
10997   };
10998 
10999   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT>
11000   {
operator ()std::hash11001     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT const & renderPassCreationFeedbackInfoEXT) const VULKAN_HPP_NOEXCEPT
11002     {
11003       std::size_t seed = 0;
11004     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationFeedbackInfoEXT.postMergeSubpassCount );
11005       return seed;
11006     }
11007   };
11008 
11009   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT>
11010   {
operator ()std::hash11011     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT const & renderPassCreationFeedbackCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
11012     {
11013       std::size_t seed = 0;
11014     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationFeedbackCreateInfoEXT.sType );
11015     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationFeedbackCreateInfoEXT.pNext );
11016     VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationFeedbackCreateInfoEXT.pRenderPassFeedback );
11017       return seed;
11018     }
11019   };
11020 
11021   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT>
11022   {
operator ()std::hash11023     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT const & renderPassFragmentDensityMapCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
11024     {
11025       std::size_t seed = 0;
11026     VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.sType );
11027     VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.pNext );
11028     VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.fragmentDensityMapAttachment );
11029       return seed;
11030     }
11031   };
11032 
11033   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo>
11034   {
operator ()std::hash11035     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo const & renderPassInputAttachmentAspectCreateInfo) const VULKAN_HPP_NOEXCEPT
11036     {
11037       std::size_t seed = 0;
11038     VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.sType );
11039     VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.pNext );
11040     VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.aspectReferenceCount );
11041     VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.pAspectReferences );
11042       return seed;
11043     }
11044   };
11045 
11046   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo>
11047   {
operator ()std::hash11048     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo const & renderPassMultiviewCreateInfo) const VULKAN_HPP_NOEXCEPT
11049     {
11050       std::size_t seed = 0;
11051     VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.sType );
11052     VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pNext );
11053     VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.subpassCount );
11054     VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pViewMasks );
11055     VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.dependencyCount );
11056     VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pViewOffsets );
11057     VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.correlationMaskCount );
11058     VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pCorrelationMasks );
11059       return seed;
11060     }
11061   };
11062 
11063   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT>
11064   {
operator ()std::hash11065     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT const & subpassSampleLocationsEXT) const VULKAN_HPP_NOEXCEPT
11066     {
11067       std::size_t seed = 0;
11068     VULKAN_HPP_HASH_COMBINE( seed, subpassSampleLocationsEXT.subpassIndex );
11069     VULKAN_HPP_HASH_COMBINE( seed, subpassSampleLocationsEXT.sampleLocationsInfo );
11070       return seed;
11071     }
11072   };
11073 
11074   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT>
11075   {
operator ()std::hash11076     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT const & renderPassSampleLocationsBeginInfoEXT) const VULKAN_HPP_NOEXCEPT
11077     {
11078       std::size_t seed = 0;
11079     VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.sType );
11080     VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pNext );
11081     VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.attachmentInitialSampleLocationsCount );
11082     VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pAttachmentInitialSampleLocations );
11083     VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.postSubpassSampleLocationsCount );
11084     VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pPostSubpassSampleLocations );
11085       return seed;
11086     }
11087   };
11088 
11089   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT>
11090   {
operator ()std::hash11091     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT const & renderPassSubpassFeedbackInfoEXT) const VULKAN_HPP_NOEXCEPT
11092     {
11093       std::size_t seed = 0;
11094     VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackInfoEXT.subpassMergeStatus );
11095     for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i )
11096     {
11097       VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackInfoEXT.description[i] );
11098     }
11099     VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackInfoEXT.postMergeIndex );
11100       return seed;
11101     }
11102   };
11103 
11104   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT>
11105   {
operator ()std::hash11106     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT const & renderPassSubpassFeedbackCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
11107     {
11108       std::size_t seed = 0;
11109     VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackCreateInfoEXT.sType );
11110     VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackCreateInfoEXT.pNext );
11111     VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackCreateInfoEXT.pSubpassFeedback );
11112       return seed;
11113     }
11114   };
11115 
11116   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM>
11117   {
operator ()std::hash11118     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM const & renderPassTransformBeginInfoQCOM) const VULKAN_HPP_NOEXCEPT
11119     {
11120       std::size_t seed = 0;
11121     VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.sType );
11122     VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.pNext );
11123     VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.transform );
11124       return seed;
11125     }
11126   };
11127 
11128   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT>
11129   {
operator ()std::hash11130     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT const & renderingFragmentDensityMapAttachmentInfoEXT) const VULKAN_HPP_NOEXCEPT
11131     {
11132       std::size_t seed = 0;
11133     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.sType );
11134     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.pNext );
11135     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.imageView );
11136     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.imageLayout );
11137       return seed;
11138     }
11139   };
11140 
11141   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR>
11142   {
operator ()std::hash11143     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR const & renderingFragmentShadingRateAttachmentInfoKHR) const VULKAN_HPP_NOEXCEPT
11144     {
11145       std::size_t seed = 0;
11146     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.sType );
11147     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.pNext );
11148     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.imageView );
11149     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.imageLayout );
11150     VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.shadingRateAttachmentTexelSize );
11151       return seed;
11152     }
11153   };
11154 
11155   template <> struct hash<VULKAN_HPP_NAMESPACE::RenderingInfo>
11156   {
operator ()std::hash11157     std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderingInfo const & renderingInfo) const VULKAN_HPP_NOEXCEPT
11158     {
11159       std::size_t seed = 0;
11160     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.sType );
11161     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pNext );
11162     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.flags );
11163     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.renderArea );
11164     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.layerCount );
11165     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.viewMask );
11166     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.colorAttachmentCount );
11167     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pColorAttachments );
11168     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pDepthAttachment );
11169     VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pStencilAttachment );
11170       return seed;
11171     }
11172   };
11173 
11174   template <> struct hash<VULKAN_HPP_NAMESPACE::ResolveImageInfo2>
11175   {
operator ()std::hash11176     std::size_t operator()(VULKAN_HPP_NAMESPACE::ResolveImageInfo2 const & resolveImageInfo2) const VULKAN_HPP_NOEXCEPT
11177     {
11178       std::size_t seed = 0;
11179     VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.sType );
11180     VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.pNext );
11181     VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.srcImage );
11182     VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.srcImageLayout );
11183     VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.dstImage );
11184     VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.dstImageLayout );
11185     VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.regionCount );
11186     VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.pRegions );
11187       return seed;
11188     }
11189   };
11190 
11191   template <> struct hash<VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT>
11192   {
operator ()std::hash11193     std::size_t operator()(VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT const & samplerBorderColorComponentMappingCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
11194     {
11195       std::size_t seed = 0;
11196     VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.sType );
11197     VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.pNext );
11198     VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.components );
11199     VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.srgb );
11200       return seed;
11201     }
11202   };
11203 
11204   template <> struct hash<VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT>
11205   {
operator ()std::hash11206     std::size_t operator()(VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT const & samplerCaptureDescriptorDataInfoEXT) const VULKAN_HPP_NOEXCEPT
11207     {
11208       std::size_t seed = 0;
11209     VULKAN_HPP_HASH_COMBINE( seed, samplerCaptureDescriptorDataInfoEXT.sType );
11210     VULKAN_HPP_HASH_COMBINE( seed, samplerCaptureDescriptorDataInfoEXT.pNext );
11211     VULKAN_HPP_HASH_COMBINE( seed, samplerCaptureDescriptorDataInfoEXT.sampler );
11212       return seed;
11213     }
11214   };
11215 
11216   template <> struct hash<VULKAN_HPP_NAMESPACE::SamplerCreateInfo>
11217   {
operator ()std::hash11218     std::size_t operator()(VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & samplerCreateInfo) const VULKAN_HPP_NOEXCEPT
11219     {
11220       std::size_t seed = 0;
11221     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.sType );
11222     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.pNext );
11223     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.flags );
11224     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.magFilter );
11225     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.minFilter );
11226     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.mipmapMode );
11227     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeU );
11228     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeV );
11229     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeW );
11230     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.mipLodBias );
11231     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.anisotropyEnable );
11232     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.maxAnisotropy );
11233     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.compareEnable );
11234     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.compareOp );
11235     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.minLod );
11236     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.maxLod );
11237     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.borderColor );
11238     VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.unnormalizedCoordinates );
11239       return seed;
11240     }
11241   };
11242 
11243   template <> struct hash<VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo>
11244   {
operator ()std::hash11245     std::size_t operator()(VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo const & samplerReductionModeCreateInfo) const VULKAN_HPP_NOEXCEPT
11246     {
11247       std::size_t seed = 0;
11248     VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.sType );
11249     VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.pNext );
11250     VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.reductionMode );
11251       return seed;
11252     }
11253   };
11254 
11255   template <> struct hash<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo>
11256   {
operator ()std::hash11257     std::size_t operator()(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & samplerYcbcrConversionCreateInfo) const VULKAN_HPP_NOEXCEPT
11258     {
11259       std::size_t seed = 0;
11260     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.sType );
11261     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.pNext );
11262     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.format );
11263     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.ycbcrModel );
11264     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.ycbcrRange );
11265     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.components );
11266     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.xChromaOffset );
11267     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.yChromaOffset );
11268     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.chromaFilter );
11269     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.forceExplicitReconstruction );
11270       return seed;
11271     }
11272   };
11273 
11274   template <> struct hash<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties>
11275   {
operator ()std::hash11276     std::size_t operator()(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties const & samplerYcbcrConversionImageFormatProperties) const VULKAN_HPP_NOEXCEPT
11277     {
11278       std::size_t seed = 0;
11279     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.sType );
11280     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.pNext );
11281     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.combinedImageSamplerDescriptorCount );
11282       return seed;
11283     }
11284   };
11285 
11286   template <> struct hash<VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo>
11287   {
operator ()std::hash11288     std::size_t operator()(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo const & samplerYcbcrConversionInfo) const VULKAN_HPP_NOEXCEPT
11289     {
11290       std::size_t seed = 0;
11291     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.sType );
11292     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.pNext );
11293     VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.conversion );
11294       return seed;
11295     }
11296   };
11297 
11298   #if defined( VK_USE_PLATFORM_SCREEN_QNX )
11299 template <> struct hash<VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX>
11300   {
operator ()std::hash11301     std::size_t operator()(VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const & screenSurfaceCreateInfoQNX) const VULKAN_HPP_NOEXCEPT
11302     {
11303       std::size_t seed = 0;
11304     VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.sType );
11305     VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.pNext );
11306     VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.flags );
11307     VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.context );
11308     VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.window );
11309       return seed;
11310     }
11311   };
11312 #endif /*VK_USE_PLATFORM_SCREEN_QNX*/
11313 
11314   template <> struct hash<VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo>
11315   {
operator ()std::hash11316     std::size_t operator()(VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & semaphoreCreateInfo) const VULKAN_HPP_NOEXCEPT
11317     {
11318       std::size_t seed = 0;
11319     VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.sType );
11320     VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.pNext );
11321     VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.flags );
11322       return seed;
11323     }
11324   };
11325 
11326   template <> struct hash<VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR>
11327   {
operator ()std::hash11328     std::size_t operator()(VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR const & semaphoreGetFdInfoKHR) const VULKAN_HPP_NOEXCEPT
11329     {
11330       std::size_t seed = 0;
11331     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.sType );
11332     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.pNext );
11333     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.semaphore );
11334     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.handleType );
11335       return seed;
11336     }
11337   };
11338 
11339   #if defined( VK_USE_PLATFORM_WIN32_KHR )
11340 template <> struct hash<VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR>
11341   {
operator ()std::hash11342     std::size_t operator()(VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR const & semaphoreGetWin32HandleInfoKHR) const VULKAN_HPP_NOEXCEPT
11343     {
11344       std::size_t seed = 0;
11345     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.sType );
11346     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.pNext );
11347     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.semaphore );
11348     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.handleType );
11349       return seed;
11350     }
11351   };
11352 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
11353 
11354   #if defined( VK_USE_PLATFORM_FUCHSIA )
11355 template <> struct hash<VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA>
11356   {
operator ()std::hash11357     std::size_t operator()(VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA const & semaphoreGetZirconHandleInfoFUCHSIA) const VULKAN_HPP_NOEXCEPT
11358     {
11359       std::size_t seed = 0;
11360     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.sType );
11361     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.pNext );
11362     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.semaphore );
11363     VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.handleType );
11364       return seed;
11365     }
11366   };
11367 #endif /*VK_USE_PLATFORM_FUCHSIA*/
11368 
11369   template <> struct hash<VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo>
11370   {
operator ()std::hash11371     std::size_t operator()(VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo const & semaphoreSignalInfo) const VULKAN_HPP_NOEXCEPT
11372     {
11373       std::size_t seed = 0;
11374     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.sType );
11375     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.pNext );
11376     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.semaphore );
11377     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.value );
11378       return seed;
11379     }
11380   };
11381 
11382   template <> struct hash<VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo>
11383   {
operator ()std::hash11384     std::size_t operator()(VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const & semaphoreSubmitInfo) const VULKAN_HPP_NOEXCEPT
11385     {
11386       std::size_t seed = 0;
11387     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.sType );
11388     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.pNext );
11389     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.semaphore );
11390     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.value );
11391     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.stageMask );
11392     VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.deviceIndex );
11393       return seed;
11394     }
11395   };
11396 
11397   template <> struct hash<VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo>
11398   {
operator ()std::hash11399     std::size_t operator()(VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const & semaphoreTypeCreateInfo) const VULKAN_HPP_NOEXCEPT
11400     {
11401       std::size_t seed = 0;
11402     VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.sType );
11403     VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.pNext );
11404     VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.semaphoreType );
11405     VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.initialValue );
11406       return seed;
11407     }
11408   };
11409 
11410   template <> struct hash<VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo>
11411   {
operator ()std::hash11412     std::size_t operator()(VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo const & semaphoreWaitInfo) const VULKAN_HPP_NOEXCEPT
11413     {
11414       std::size_t seed = 0;
11415     VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.sType );
11416     VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pNext );
11417     VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.flags );
11418     VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.semaphoreCount );
11419     VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pSemaphores );
11420     VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pValues );
11421       return seed;
11422     }
11423   };
11424 
11425   template <> struct hash<VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV>
11426   {
operator ()std::hash11427     std::size_t operator()(VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV const & setStateFlagsIndirectCommandNV) const VULKAN_HPP_NOEXCEPT
11428     {
11429       std::size_t seed = 0;
11430     VULKAN_HPP_HASH_COMBINE( seed, setStateFlagsIndirectCommandNV.data );
11431       return seed;
11432     }
11433   };
11434 
11435   template <> struct hash<VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo>
11436   {
operator ()std::hash11437     std::size_t operator()(VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & shaderModuleCreateInfo) const VULKAN_HPP_NOEXCEPT
11438     {
11439       std::size_t seed = 0;
11440     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.sType );
11441     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.pNext );
11442     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.flags );
11443     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.codeSize );
11444     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.pCode );
11445       return seed;
11446     }
11447   };
11448 
11449   template <> struct hash<VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT>
11450   {
operator ()std::hash11451     std::size_t operator()(VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT const & shaderModuleIdentifierEXT) const VULKAN_HPP_NOEXCEPT
11452     {
11453       std::size_t seed = 0;
11454     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleIdentifierEXT.sType );
11455     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleIdentifierEXT.pNext );
11456     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleIdentifierEXT.identifierSize );
11457     for ( size_t i = 0; i < VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT; ++i )
11458     {
11459       VULKAN_HPP_HASH_COMBINE( seed, shaderModuleIdentifierEXT.identifier[i] );
11460     }
11461       return seed;
11462     }
11463   };
11464 
11465   template <> struct hash<VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT>
11466   {
operator ()std::hash11467     std::size_t operator()(VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT const & shaderModuleValidationCacheCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
11468     {
11469       std::size_t seed = 0;
11470     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.sType );
11471     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.pNext );
11472     VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.validationCache );
11473       return seed;
11474     }
11475   };
11476 
11477   template <> struct hash<VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD>
11478   {
operator ()std::hash11479     std::size_t operator()(VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const & shaderResourceUsageAMD) const VULKAN_HPP_NOEXCEPT
11480     {
11481       std::size_t seed = 0;
11482     VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.numUsedVgprs );
11483     VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.numUsedSgprs );
11484     VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.ldsSizePerLocalWorkGroup );
11485     VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.ldsUsageSizeInBytes );
11486     VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.scratchMemUsageInBytes );
11487       return seed;
11488     }
11489   };
11490 
11491   template <> struct hash<VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD>
11492   {
operator ()std::hash11493     std::size_t operator()(VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD const & shaderStatisticsInfoAMD) const VULKAN_HPP_NOEXCEPT
11494     {
11495       std::size_t seed = 0;
11496     VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.shaderStageMask );
11497     VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.resourceUsage );
11498     VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numPhysicalVgprs );
11499     VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numPhysicalSgprs );
11500     VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numAvailableVgprs );
11501     VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numAvailableSgprs );
11502     for ( size_t i = 0; i < 3; ++i )
11503     {
11504       VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.computeWorkGroupSize[i] );
11505     }
11506       return seed;
11507     }
11508   };
11509 
11510   template <> struct hash<VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR>
11511   {
operator ()std::hash11512     std::size_t operator()(VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR const & sharedPresentSurfaceCapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
11513     {
11514       std::size_t seed = 0;
11515     VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.sType );
11516     VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.pNext );
11517     VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.sharedPresentSupportedUsageFlags );
11518       return seed;
11519     }
11520   };
11521 
11522   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties>
11523   {
operator ()std::hash11524     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const & sparseImageFormatProperties) const VULKAN_HPP_NOEXCEPT
11525     {
11526       std::size_t seed = 0;
11527     VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.aspectMask );
11528     VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.imageGranularity );
11529     VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.flags );
11530       return seed;
11531     }
11532   };
11533 
11534   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
11535   {
operator ()std::hash11536     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 const & sparseImageFormatProperties2) const VULKAN_HPP_NOEXCEPT
11537     {
11538       std::size_t seed = 0;
11539     VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.sType );
11540     VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.pNext );
11541     VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.properties );
11542       return seed;
11543     }
11544   };
11545 
11546   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements>
11547   {
operator ()std::hash11548     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const & sparseImageMemoryRequirements) const VULKAN_HPP_NOEXCEPT
11549     {
11550       std::size_t seed = 0;
11551     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.formatProperties );
11552     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailFirstLod );
11553     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailSize );
11554     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailOffset );
11555     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailStride );
11556       return seed;
11557     }
11558   };
11559 
11560   template <> struct hash<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
11561   {
operator ()std::hash11562     std::size_t operator()(VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 const & sparseImageMemoryRequirements2) const VULKAN_HPP_NOEXCEPT
11563     {
11564       std::size_t seed = 0;
11565     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.sType );
11566     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.pNext );
11567     VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.memoryRequirements );
11568       return seed;
11569     }
11570   };
11571 
11572   #if defined( VK_USE_PLATFORM_GGP )
11573 template <> struct hash<VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP>
11574   {
operator ()std::hash11575     std::size_t operator()(VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const & streamDescriptorSurfaceCreateInfoGGP) const VULKAN_HPP_NOEXCEPT
11576     {
11577       std::size_t seed = 0;
11578     VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.sType );
11579     VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.pNext );
11580     VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.flags );
11581     VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.streamDescriptor );
11582       return seed;
11583     }
11584   };
11585 #endif /*VK_USE_PLATFORM_GGP*/
11586 
11587   template <> struct hash<VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR>
11588   {
operator ()std::hash11589     std::size_t operator()(VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR const & stridedDeviceAddressRegionKHR) const VULKAN_HPP_NOEXCEPT
11590     {
11591       std::size_t seed = 0;
11592     VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.deviceAddress );
11593     VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.stride );
11594     VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.size );
11595       return seed;
11596     }
11597   };
11598 
11599   template <> struct hash<VULKAN_HPP_NAMESPACE::SubmitInfo>
11600   {
operator ()std::hash11601     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubmitInfo const & submitInfo) const VULKAN_HPP_NOEXCEPT
11602     {
11603       std::size_t seed = 0;
11604     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.sType );
11605     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pNext );
11606     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.waitSemaphoreCount );
11607     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pWaitSemaphores );
11608     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pWaitDstStageMask );
11609     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.commandBufferCount );
11610     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pCommandBuffers );
11611     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.signalSemaphoreCount );
11612     VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pSignalSemaphores );
11613       return seed;
11614     }
11615   };
11616 
11617   template <> struct hash<VULKAN_HPP_NAMESPACE::SubmitInfo2>
11618   {
operator ()std::hash11619     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubmitInfo2 const & submitInfo2) const VULKAN_HPP_NOEXCEPT
11620     {
11621       std::size_t seed = 0;
11622     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.sType );
11623     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pNext );
11624     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.flags );
11625     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.waitSemaphoreInfoCount );
11626     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pWaitSemaphoreInfos );
11627     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.commandBufferInfoCount );
11628     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pCommandBufferInfos );
11629     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.signalSemaphoreInfoCount );
11630     VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pSignalSemaphoreInfos );
11631       return seed;
11632     }
11633   };
11634 
11635   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassBeginInfo>
11636   {
operator ()std::hash11637     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassBeginInfo const & subpassBeginInfo) const VULKAN_HPP_NOEXCEPT
11638     {
11639       std::size_t seed = 0;
11640     VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.sType );
11641     VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.pNext );
11642     VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.contents );
11643       return seed;
11644     }
11645   };
11646 
11647   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve>
11648   {
operator ()std::hash11649     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve const & subpassDescriptionDepthStencilResolve) const VULKAN_HPP_NOEXCEPT
11650     {
11651       std::size_t seed = 0;
11652     VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.sType );
11653     VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.pNext );
11654     VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.depthResolveMode );
11655     VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.stencilResolveMode );
11656     VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.pDepthStencilResolveAttachment );
11657       return seed;
11658     }
11659   };
11660 
11661   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassEndInfo>
11662   {
operator ()std::hash11663     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassEndInfo const & subpassEndInfo) const VULKAN_HPP_NOEXCEPT
11664     {
11665       std::size_t seed = 0;
11666     VULKAN_HPP_HASH_COMBINE( seed, subpassEndInfo.sType );
11667     VULKAN_HPP_HASH_COMBINE( seed, subpassEndInfo.pNext );
11668       return seed;
11669     }
11670   };
11671 
11672   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM>
11673   {
operator ()std::hash11674     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassFragmentDensityMapOffsetEndInfoQCOM const & subpassFragmentDensityMapOffsetEndInfoQCOM) const VULKAN_HPP_NOEXCEPT
11675     {
11676       std::size_t seed = 0;
11677     VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.sType );
11678     VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.pNext );
11679     VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.fragmentDensityOffsetCount );
11680     VULKAN_HPP_HASH_COMBINE( seed, subpassFragmentDensityMapOffsetEndInfoQCOM.pFragmentDensityOffsets );
11681       return seed;
11682     }
11683   };
11684 
11685   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT>
11686   {
operator ()std::hash11687     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT const & subpassResolvePerformanceQueryEXT) const VULKAN_HPP_NOEXCEPT
11688     {
11689       std::size_t seed = 0;
11690     VULKAN_HPP_HASH_COMBINE( seed, subpassResolvePerformanceQueryEXT.sType );
11691     VULKAN_HPP_HASH_COMBINE( seed, subpassResolvePerformanceQueryEXT.pNext );
11692     VULKAN_HPP_HASH_COMBINE( seed, subpassResolvePerformanceQueryEXT.optimal );
11693       return seed;
11694     }
11695   };
11696 
11697   template <> struct hash<VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI>
11698   {
operator ()std::hash11699     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI const & subpassShadingPipelineCreateInfoHUAWEI) const VULKAN_HPP_NOEXCEPT
11700     {
11701       std::size_t seed = 0;
11702     VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.sType );
11703     VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.pNext );
11704     VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.renderPass );
11705     VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.subpass );
11706       return seed;
11707     }
11708   };
11709 
11710   template <> struct hash<VULKAN_HPP_NAMESPACE::SubresourceLayout2EXT>
11711   {
operator ()std::hash11712     std::size_t operator()(VULKAN_HPP_NAMESPACE::SubresourceLayout2EXT const & subresourceLayout2EXT) const VULKAN_HPP_NOEXCEPT
11713     {
11714       std::size_t seed = 0;
11715     VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout2EXT.sType );
11716     VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout2EXT.pNext );
11717     VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout2EXT.subresourceLayout );
11718       return seed;
11719     }
11720   };
11721 
11722   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT>
11723   {
operator ()std::hash11724     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT const & surfaceCapabilities2EXT) const VULKAN_HPP_NOEXCEPT
11725     {
11726       std::size_t seed = 0;
11727     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.sType );
11728     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.pNext );
11729     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.minImageCount );
11730     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageCount );
11731     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.currentExtent );
11732     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.minImageExtent );
11733     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageExtent );
11734     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageArrayLayers );
11735     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedTransforms );
11736     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.currentTransform );
11737     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedCompositeAlpha );
11738     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedUsageFlags );
11739     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedSurfaceCounters );
11740       return seed;
11741     }
11742   };
11743 
11744   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR>
11745   {
operator ()std::hash11746     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const & surfaceCapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
11747     {
11748       std::size_t seed = 0;
11749     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.minImageCount );
11750     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageCount );
11751     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.currentExtent );
11752     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.minImageExtent );
11753     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageExtent );
11754     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageArrayLayers );
11755     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedTransforms );
11756     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.currentTransform );
11757     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedCompositeAlpha );
11758     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedUsageFlags );
11759       return seed;
11760     }
11761   };
11762 
11763   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR>
11764   {
operator ()std::hash11765     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR const & surfaceCapabilities2KHR) const VULKAN_HPP_NOEXCEPT
11766     {
11767       std::size_t seed = 0;
11768     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.sType );
11769     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.pNext );
11770     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.surfaceCapabilities );
11771       return seed;
11772     }
11773   };
11774 
11775   #if defined( VK_USE_PLATFORM_WIN32_KHR )
11776 template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT>
11777   {
operator ()std::hash11778     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT const & surfaceCapabilitiesFullScreenExclusiveEXT) const VULKAN_HPP_NOEXCEPT
11779     {
11780       std::size_t seed = 0;
11781     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.sType );
11782     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.pNext );
11783     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.fullScreenExclusiveSupported );
11784       return seed;
11785     }
11786   };
11787 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
11788 
11789   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV>
11790   {
operator ()std::hash11791     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV const & surfaceCapabilitiesPresentBarrierNV) const VULKAN_HPP_NOEXCEPT
11792     {
11793       std::size_t seed = 0;
11794     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentBarrierNV.sType );
11795     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentBarrierNV.pNext );
11796     VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentBarrierNV.presentBarrierSupported );
11797       return seed;
11798     }
11799   };
11800 
11801   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>
11802   {
operator ()std::hash11803     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const & surfaceFormatKHR) const VULKAN_HPP_NOEXCEPT
11804     {
11805       std::size_t seed = 0;
11806     VULKAN_HPP_HASH_COMBINE( seed, surfaceFormatKHR.format );
11807     VULKAN_HPP_HASH_COMBINE( seed, surfaceFormatKHR.colorSpace );
11808       return seed;
11809     }
11810   };
11811 
11812   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>
11813   {
operator ()std::hash11814     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR const & surfaceFormat2KHR) const VULKAN_HPP_NOEXCEPT
11815     {
11816       std::size_t seed = 0;
11817     VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.sType );
11818     VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.pNext );
11819     VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.surfaceFormat );
11820       return seed;
11821     }
11822   };
11823 
11824   #if defined( VK_USE_PLATFORM_WIN32_KHR )
11825 template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT>
11826   {
operator ()std::hash11827     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT const & surfaceFullScreenExclusiveInfoEXT) const VULKAN_HPP_NOEXCEPT
11828     {
11829       std::size_t seed = 0;
11830     VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.sType );
11831     VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.pNext );
11832     VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.fullScreenExclusive );
11833       return seed;
11834     }
11835   };
11836 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
11837 
11838   #if defined( VK_USE_PLATFORM_WIN32_KHR )
11839 template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT>
11840   {
operator ()std::hash11841     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT const & surfaceFullScreenExclusiveWin32InfoEXT) const VULKAN_HPP_NOEXCEPT
11842     {
11843       std::size_t seed = 0;
11844     VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.sType );
11845     VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.pNext );
11846     VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.hmonitor );
11847       return seed;
11848     }
11849   };
11850 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
11851 
11852   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT>
11853   {
operator ()std::hash11854     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityEXT const & surfacePresentModeCompatibilityEXT) const VULKAN_HPP_NOEXCEPT
11855     {
11856       std::size_t seed = 0;
11857     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeCompatibilityEXT.sType );
11858     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeCompatibilityEXT.pNext );
11859     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeCompatibilityEXT.presentModeCount );
11860     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeCompatibilityEXT.pPresentModes );
11861       return seed;
11862     }
11863   };
11864 
11865   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT>
11866   {
operator ()std::hash11867     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfacePresentModeEXT const & surfacePresentModeEXT) const VULKAN_HPP_NOEXCEPT
11868     {
11869       std::size_t seed = 0;
11870     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeEXT.sType );
11871     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeEXT.pNext );
11872     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeEXT.presentMode );
11873       return seed;
11874     }
11875   };
11876 
11877   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT>
11878   {
operator ()std::hash11879     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesEXT const & surfacePresentScalingCapabilitiesEXT) const VULKAN_HPP_NOEXCEPT
11880     {
11881       std::size_t seed = 0;
11882     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesEXT.sType );
11883     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesEXT.pNext );
11884     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesEXT.supportedPresentScaling );
11885     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesEXT.supportedPresentGravityX );
11886     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesEXT.supportedPresentGravityY );
11887     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesEXT.minScaledImageExtent );
11888     VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesEXT.maxScaledImageExtent );
11889       return seed;
11890     }
11891   };
11892 
11893   template <> struct hash<VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR>
11894   {
operator ()std::hash11895     std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR const & surfaceProtectedCapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
11896     {
11897       std::size_t seed = 0;
11898     VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.sType );
11899     VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.pNext );
11900     VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.supportsProtected );
11901       return seed;
11902     }
11903   };
11904 
11905   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT>
11906   {
operator ()std::hash11907     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT const & swapchainCounterCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
11908     {
11909       std::size_t seed = 0;
11910     VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.sType );
11911     VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.pNext );
11912     VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.surfaceCounters );
11913       return seed;
11914     }
11915   };
11916 
11917   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR>
11918   {
operator ()std::hash11919     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & swapchainCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
11920     {
11921       std::size_t seed = 0;
11922     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.sType );
11923     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.pNext );
11924     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.flags );
11925     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.surface );
11926     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.minImageCount );
11927     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageFormat );
11928     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageColorSpace );
11929     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageExtent );
11930     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageArrayLayers );
11931     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageUsage );
11932     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageSharingMode );
11933     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.queueFamilyIndexCount );
11934     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.pQueueFamilyIndices );
11935     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.preTransform );
11936     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.compositeAlpha );
11937     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.presentMode );
11938     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.clipped );
11939     VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.oldSwapchain );
11940       return seed;
11941     }
11942   };
11943 
11944   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD>
11945   {
operator ()std::hash11946     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD const & swapchainDisplayNativeHdrCreateInfoAMD) const VULKAN_HPP_NOEXCEPT
11947     {
11948       std::size_t seed = 0;
11949     VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.sType );
11950     VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.pNext );
11951     VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.localDimmingEnable );
11952       return seed;
11953     }
11954   };
11955 
11956   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV>
11957   {
operator ()std::hash11958     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV const & swapchainPresentBarrierCreateInfoNV) const VULKAN_HPP_NOEXCEPT
11959     {
11960       std::size_t seed = 0;
11961     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentBarrierCreateInfoNV.sType );
11962     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentBarrierCreateInfoNV.pNext );
11963     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentBarrierCreateInfoNV.presentBarrierEnable );
11964       return seed;
11965     }
11966   };
11967 
11968   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT>
11969   {
operator ()std::hash11970     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoEXT const & swapchainPresentFenceInfoEXT) const VULKAN_HPP_NOEXCEPT
11971     {
11972       std::size_t seed = 0;
11973     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentFenceInfoEXT.sType );
11974     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentFenceInfoEXT.pNext );
11975     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentFenceInfoEXT.swapchainCount );
11976     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentFenceInfoEXT.pFences );
11977       return seed;
11978     }
11979   };
11980 
11981   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT>
11982   {
operator ()std::hash11983     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoEXT const & swapchainPresentModeInfoEXT) const VULKAN_HPP_NOEXCEPT
11984     {
11985       std::size_t seed = 0;
11986     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModeInfoEXT.sType );
11987     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModeInfoEXT.pNext );
11988     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModeInfoEXT.swapchainCount );
11989     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModeInfoEXT.pPresentModes );
11990       return seed;
11991     }
11992   };
11993 
11994   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT>
11995   {
operator ()std::hash11996     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoEXT const & swapchainPresentModesCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
11997     {
11998       std::size_t seed = 0;
11999     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModesCreateInfoEXT.sType );
12000     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModesCreateInfoEXT.pNext );
12001     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModesCreateInfoEXT.presentModeCount );
12002     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModesCreateInfoEXT.pPresentModes );
12003       return seed;
12004     }
12005   };
12006 
12007   template <> struct hash<VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT>
12008   {
operator ()std::hash12009     std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoEXT const & swapchainPresentScalingCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
12010     {
12011       std::size_t seed = 0;
12012     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoEXT.sType );
12013     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoEXT.pNext );
12014     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoEXT.scalingBehavior );
12015     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoEXT.presentGravityX );
12016     VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoEXT.presentGravityY );
12017       return seed;
12018     }
12019   };
12020 
12021   template <> struct hash<VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD>
12022   {
operator ()std::hash12023     std::size_t operator()(VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD const & textureLODGatherFormatPropertiesAMD) const VULKAN_HPP_NOEXCEPT
12024     {
12025       std::size_t seed = 0;
12026     VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.sType );
12027     VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.pNext );
12028     VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.supportsTextureGatherLODBiasAMD );
12029       return seed;
12030     }
12031   };
12032 
12033   template <> struct hash<VULKAN_HPP_NAMESPACE::TilePropertiesQCOM>
12034   {
operator ()std::hash12035     std::size_t operator()(VULKAN_HPP_NAMESPACE::TilePropertiesQCOM const & tilePropertiesQCOM) const VULKAN_HPP_NOEXCEPT
12036     {
12037       std::size_t seed = 0;
12038     VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.sType );
12039     VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.pNext );
12040     VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.tileSize );
12041     VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.apronSize );
12042     VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.origin );
12043       return seed;
12044     }
12045   };
12046 
12047   template <> struct hash<VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo>
12048   {
operator ()std::hash12049     std::size_t operator()(VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo const & timelineSemaphoreSubmitInfo) const VULKAN_HPP_NOEXCEPT
12050     {
12051       std::size_t seed = 0;
12052     VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.sType );
12053     VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pNext );
12054     VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.waitSemaphoreValueCount );
12055     VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pWaitSemaphoreValues );
12056     VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.signalSemaphoreValueCount );
12057     VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pSignalSemaphoreValues );
12058       return seed;
12059     }
12060   };
12061 
12062   template <> struct hash<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR>
12063   {
operator ()std::hash12064     std::size_t operator()(VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR const & traceRaysIndirectCommand2KHR) const VULKAN_HPP_NOEXCEPT
12065     {
12066       std::size_t seed = 0;
12067     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.raygenShaderRecordAddress );
12068     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.raygenShaderRecordSize );
12069     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.missShaderBindingTableAddress );
12070     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.missShaderBindingTableSize );
12071     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.missShaderBindingTableStride );
12072     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.hitShaderBindingTableAddress );
12073     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.hitShaderBindingTableSize );
12074     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.hitShaderBindingTableStride );
12075     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.callableShaderBindingTableAddress );
12076     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.callableShaderBindingTableSize );
12077     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.callableShaderBindingTableStride );
12078     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.width );
12079     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.height );
12080     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.depth );
12081       return seed;
12082     }
12083   };
12084 
12085   template <> struct hash<VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR>
12086   {
operator ()std::hash12087     std::size_t operator()(VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR const & traceRaysIndirectCommandKHR) const VULKAN_HPP_NOEXCEPT
12088     {
12089       std::size_t seed = 0;
12090     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.width );
12091     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.height );
12092     VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.depth );
12093       return seed;
12094     }
12095   };
12096 
12097   template <> struct hash<VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT>
12098   {
operator ()std::hash12099     std::size_t operator()(VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & validationCacheCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
12100     {
12101       std::size_t seed = 0;
12102     VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.sType );
12103     VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.pNext );
12104     VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.flags );
12105     VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.initialDataSize );
12106     VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.pInitialData );
12107       return seed;
12108     }
12109   };
12110 
12111   template <> struct hash<VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT>
12112   {
operator ()std::hash12113     std::size_t operator()(VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT const & validationFeaturesEXT) const VULKAN_HPP_NOEXCEPT
12114     {
12115       std::size_t seed = 0;
12116     VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.sType );
12117     VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pNext );
12118     VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.enabledValidationFeatureCount );
12119     VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pEnabledValidationFeatures );
12120     VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.disabledValidationFeatureCount );
12121     VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pDisabledValidationFeatures );
12122       return seed;
12123     }
12124   };
12125 
12126   template <> struct hash<VULKAN_HPP_NAMESPACE::ValidationFlagsEXT>
12127   {
operator ()std::hash12128     std::size_t operator()(VULKAN_HPP_NAMESPACE::ValidationFlagsEXT const & validationFlagsEXT) const VULKAN_HPP_NOEXCEPT
12129     {
12130       std::size_t seed = 0;
12131     VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.sType );
12132     VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.pNext );
12133     VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.disabledValidationCheckCount );
12134     VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.pDisabledValidationChecks );
12135       return seed;
12136     }
12137   };
12138 
12139   template <> struct hash<VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT>
12140   {
operator ()std::hash12141     std::size_t operator()(VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT const & vertexInputAttributeDescription2EXT) const VULKAN_HPP_NOEXCEPT
12142     {
12143       std::size_t seed = 0;
12144     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.sType );
12145     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.pNext );
12146     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.location );
12147     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.binding );
12148     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.format );
12149     VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.offset );
12150       return seed;
12151     }
12152   };
12153 
12154   template <> struct hash<VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT>
12155   {
operator ()std::hash12156     std::size_t operator()(VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT const & vertexInputBindingDescription2EXT) const VULKAN_HPP_NOEXCEPT
12157     {
12158       std::size_t seed = 0;
12159     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.sType );
12160     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.pNext );
12161     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.binding );
12162     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.stride );
12163     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.inputRate );
12164     VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.divisor );
12165       return seed;
12166     }
12167   };
12168 
12169   #if defined( VK_USE_PLATFORM_VI_NN )
12170 template <> struct hash<VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN>
12171   {
operator ()std::hash12172     std::size_t operator()(VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const & viSurfaceCreateInfoNN) const VULKAN_HPP_NOEXCEPT
12173     {
12174       std::size_t seed = 0;
12175     VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.sType );
12176     VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.pNext );
12177     VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.flags );
12178     VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.window );
12179       return seed;
12180     }
12181   };
12182 #endif /*VK_USE_PLATFORM_VI_NN*/
12183 
12184   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR>
12185   {
operator ()std::hash12186     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const & videoPictureResourceInfoKHR) const VULKAN_HPP_NOEXCEPT
12187     {
12188       std::size_t seed = 0;
12189     VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.sType );
12190     VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.pNext );
12191     VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.codedOffset );
12192     VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.codedExtent );
12193     VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.baseArrayLayer );
12194     VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.imageViewBinding );
12195       return seed;
12196     }
12197   };
12198 
12199   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR>
12200   {
operator ()std::hash12201     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR const & videoReferenceSlotInfoKHR) const VULKAN_HPP_NOEXCEPT
12202     {
12203       std::size_t seed = 0;
12204     VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotInfoKHR.sType );
12205     VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotInfoKHR.pNext );
12206     VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotInfoKHR.slotIndex );
12207     VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotInfoKHR.pPictureResource );
12208       return seed;
12209     }
12210   };
12211 
12212   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR>
12213   {
operator ()std::hash12214     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR const & videoBeginCodingInfoKHR) const VULKAN_HPP_NOEXCEPT
12215     {
12216       std::size_t seed = 0;
12217     VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.sType );
12218     VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.pNext );
12219     VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.flags );
12220     VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.videoSession );
12221     VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.videoSessionParameters );
12222     VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.referenceSlotCount );
12223     VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.pReferenceSlots );
12224       return seed;
12225     }
12226   };
12227 
12228   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR>
12229   {
operator ()std::hash12230     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR const & videoCapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
12231     {
12232       std::size_t seed = 0;
12233     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.sType );
12234     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.pNext );
12235     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.flags );
12236     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minBitstreamBufferOffsetAlignment );
12237     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minBitstreamBufferSizeAlignment );
12238     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.pictureAccessGranularity );
12239     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minCodedExtent );
12240     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxCodedExtent );
12241     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxDpbSlots );
12242     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxActiveReferencePictures );
12243     VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.stdHeaderVersion );
12244       return seed;
12245     }
12246   };
12247 
12248   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR>
12249   {
operator ()std::hash12250     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR const & videoCodingControlInfoKHR) const VULKAN_HPP_NOEXCEPT
12251     {
12252       std::size_t seed = 0;
12253     VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.sType );
12254     VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.pNext );
12255     VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.flags );
12256       return seed;
12257     }
12258   };
12259 
12260   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR>
12261   {
operator ()std::hash12262     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR const & videoDecodeCapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
12263     {
12264       std::size_t seed = 0;
12265     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeCapabilitiesKHR.sType );
12266     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeCapabilitiesKHR.pNext );
12267     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeCapabilitiesKHR.flags );
12268       return seed;
12269     }
12270   };
12271 
12272   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR>
12273   {
operator ()std::hash12274     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR const & videoDecodeH264CapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
12275     {
12276       std::size_t seed = 0;
12277     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesKHR.sType );
12278     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesKHR.pNext );
12279     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesKHR.maxLevelIdc );
12280     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesKHR.fieldOffsetGranularity );
12281       return seed;
12282     }
12283   };
12284 
12285   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR>
12286   {
operator ()std::hash12287     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR const & videoDecodeH264DpbSlotInfoKHR) const VULKAN_HPP_NOEXCEPT
12288     {
12289       std::size_t seed = 0;
12290     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoKHR.sType );
12291     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoKHR.pNext );
12292     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoKHR.pStdReferenceInfo );
12293       return seed;
12294     }
12295   };
12296 
12297   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR>
12298   {
operator ()std::hash12299     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR const & videoDecodeH264PictureInfoKHR) const VULKAN_HPP_NOEXCEPT
12300     {
12301       std::size_t seed = 0;
12302     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.sType );
12303     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.pNext );
12304     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.pStdPictureInfo );
12305     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.sliceCount );
12306     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.pSliceOffsets );
12307       return seed;
12308     }
12309   };
12310 
12311   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR>
12312   {
operator ()std::hash12313     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR const & videoDecodeH264ProfileInfoKHR) const VULKAN_HPP_NOEXCEPT
12314     {
12315       std::size_t seed = 0;
12316     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileInfoKHR.sType );
12317     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileInfoKHR.pNext );
12318     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileInfoKHR.stdProfileIdc );
12319     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileInfoKHR.pictureLayout );
12320       return seed;
12321     }
12322   };
12323 
12324   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR>
12325   {
operator ()std::hash12326     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR const & videoDecodeH264SessionParametersAddInfoKHR) const VULKAN_HPP_NOEXCEPT
12327     {
12328       std::size_t seed = 0;
12329     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.sType );
12330     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.pNext );
12331     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.stdSPSCount );
12332     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.pStdSPSs );
12333     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.stdPPSCount );
12334     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.pStdPPSs );
12335       return seed;
12336     }
12337   };
12338 
12339   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR>
12340   {
operator ()std::hash12341     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR const & videoDecodeH264SessionParametersCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
12342     {
12343       std::size_t seed = 0;
12344     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.sType );
12345     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.pNext );
12346     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.maxStdSPSCount );
12347     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.maxStdPPSCount );
12348     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.pParametersAddInfo );
12349       return seed;
12350     }
12351   };
12352 
12353   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR>
12354   {
operator ()std::hash12355     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR const & videoDecodeH265CapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
12356     {
12357       std::size_t seed = 0;
12358     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesKHR.sType );
12359     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesKHR.pNext );
12360     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesKHR.maxLevelIdc );
12361       return seed;
12362     }
12363   };
12364 
12365   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR>
12366   {
operator ()std::hash12367     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR const & videoDecodeH265DpbSlotInfoKHR) const VULKAN_HPP_NOEXCEPT
12368     {
12369       std::size_t seed = 0;
12370     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoKHR.sType );
12371     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoKHR.pNext );
12372     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoKHR.pStdReferenceInfo );
12373       return seed;
12374     }
12375   };
12376 
12377   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR>
12378   {
operator ()std::hash12379     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR const & videoDecodeH265PictureInfoKHR) const VULKAN_HPP_NOEXCEPT
12380     {
12381       std::size_t seed = 0;
12382     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.sType );
12383     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.pNext );
12384     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.pStdPictureInfo );
12385     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.sliceSegmentCount );
12386     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.pSliceSegmentOffsets );
12387       return seed;
12388     }
12389   };
12390 
12391   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR>
12392   {
operator ()std::hash12393     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR const & videoDecodeH265ProfileInfoKHR) const VULKAN_HPP_NOEXCEPT
12394     {
12395       std::size_t seed = 0;
12396     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileInfoKHR.sType );
12397     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileInfoKHR.pNext );
12398     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileInfoKHR.stdProfileIdc );
12399       return seed;
12400     }
12401   };
12402 
12403   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR>
12404   {
operator ()std::hash12405     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR const & videoDecodeH265SessionParametersAddInfoKHR) const VULKAN_HPP_NOEXCEPT
12406     {
12407       std::size_t seed = 0;
12408     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.sType );
12409     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.pNext );
12410     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.stdVPSCount );
12411     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.pStdVPSs );
12412     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.stdSPSCount );
12413     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.pStdSPSs );
12414     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.stdPPSCount );
12415     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.pStdPPSs );
12416       return seed;
12417     }
12418   };
12419 
12420   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR>
12421   {
operator ()std::hash12422     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR const & videoDecodeH265SessionParametersCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
12423     {
12424       std::size_t seed = 0;
12425     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.sType );
12426     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.pNext );
12427     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.maxStdVPSCount );
12428     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.maxStdSPSCount );
12429     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.maxStdPPSCount );
12430     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.pParametersAddInfo );
12431       return seed;
12432     }
12433   };
12434 
12435   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR>
12436   {
operator ()std::hash12437     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR const & videoDecodeInfoKHR) const VULKAN_HPP_NOEXCEPT
12438     {
12439       std::size_t seed = 0;
12440     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.sType );
12441     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pNext );
12442     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.flags );
12443     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBuffer );
12444     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBufferOffset );
12445     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBufferRange );
12446     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.dstPictureResource );
12447     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pSetupReferenceSlot );
12448     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.referenceSlotCount );
12449     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pReferenceSlots );
12450       return seed;
12451     }
12452   };
12453 
12454   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR>
12455   {
operator ()std::hash12456     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR const & videoDecodeUsageInfoKHR) const VULKAN_HPP_NOEXCEPT
12457     {
12458       std::size_t seed = 0;
12459     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeUsageInfoKHR.sType );
12460     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeUsageInfoKHR.pNext );
12461     VULKAN_HPP_HASH_COMBINE( seed, videoDecodeUsageInfoKHR.videoUsageHints );
12462       return seed;
12463     }
12464   };
12465 
12466   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12467 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR>
12468   {
operator ()std::hash12469     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR const & videoEncodeCapabilitiesKHR) const VULKAN_HPP_NOEXCEPT
12470     {
12471       std::size_t seed = 0;
12472     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.sType );
12473     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.pNext );
12474     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.flags );
12475     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.rateControlModes );
12476     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.rateControlLayerCount );
12477     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.qualityLevelCount );
12478     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.inputImageDataFillAlignment );
12479       return seed;
12480     }
12481   };
12482 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12483 
12484   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12485 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT>
12486   {
operator ()std::hash12487     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesEXT const & videoEncodeH264CapabilitiesEXT) const VULKAN_HPP_NOEXCEPT
12488     {
12489       std::size_t seed = 0;
12490     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.sType );
12491     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.pNext );
12492     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.flags );
12493     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.inputModeFlags );
12494     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.outputModeFlags );
12495     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxPPictureL0ReferenceCount );
12496     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxBPictureL0ReferenceCount );
12497     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxL1ReferenceCount );
12498     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.motionVectorsOverPicBoundariesFlag );
12499     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxBytesPerPicDenom );
12500     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.maxBitsPerMbDenom );
12501     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.log2MaxMvLengthHorizontal );
12502     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesEXT.log2MaxMvLengthVertical );
12503       return seed;
12504     }
12505   };
12506 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12507 
12508   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12509 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT>
12510   {
operator ()std::hash12511     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoEXT const & videoEncodeH264DpbSlotInfoEXT) const VULKAN_HPP_NOEXCEPT
12512     {
12513       std::size_t seed = 0;
12514     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoEXT.sType );
12515     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoEXT.pNext );
12516     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoEXT.slotIndex );
12517     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoEXT.pStdReferenceInfo );
12518       return seed;
12519     }
12520   };
12521 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12522 
12523   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12524 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersInfoEXT>
12525   {
operator ()std::hash12526     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264EmitPictureParametersInfoEXT const & videoEncodeH264EmitPictureParametersInfoEXT) const VULKAN_HPP_NOEXCEPT
12527     {
12528       std::size_t seed = 0;
12529     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersInfoEXT.sType );
12530     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersInfoEXT.pNext );
12531     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersInfoEXT.spsId );
12532     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersInfoEXT.emitSpsEnable );
12533     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersInfoEXT.ppsIdEntryCount );
12534     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264EmitPictureParametersInfoEXT.ppsIdEntries );
12535       return seed;
12536     }
12537   };
12538 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12539 
12540   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12541 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT>
12542   {
operator ()std::hash12543     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeEXT const & videoEncodeH264FrameSizeEXT) const VULKAN_HPP_NOEXCEPT
12544     {
12545       std::size_t seed = 0;
12546     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeEXT.frameISize );
12547     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeEXT.framePSize );
12548     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeEXT.frameBSize );
12549       return seed;
12550     }
12551   };
12552 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12553 
12554   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12555 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264ReferenceListsInfoEXT>
12556   {
operator ()std::hash12557     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264ReferenceListsInfoEXT const & videoEncodeH264ReferenceListsInfoEXT) const VULKAN_HPP_NOEXCEPT
12558     {
12559       std::size_t seed = 0;
12560     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ReferenceListsInfoEXT.sType );
12561     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ReferenceListsInfoEXT.pNext );
12562     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ReferenceListsInfoEXT.referenceList0EntryCount );
12563     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ReferenceListsInfoEXT.pReferenceList0Entries );
12564     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ReferenceListsInfoEXT.referenceList1EntryCount );
12565     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ReferenceListsInfoEXT.pReferenceList1Entries );
12566     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ReferenceListsInfoEXT.pMemMgmtCtrlOperations );
12567       return seed;
12568     }
12569   };
12570 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12571 
12572   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12573 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoEXT>
12574   {
operator ()std::hash12575     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoEXT const & videoEncodeH264NaluSliceInfoEXT) const VULKAN_HPP_NOEXCEPT
12576     {
12577       std::size_t seed = 0;
12578     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoEXT.sType );
12579     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoEXT.pNext );
12580     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoEXT.mbCount );
12581     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoEXT.pReferenceFinalLists );
12582     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoEXT.pSliceHeaderStd );
12583       return seed;
12584     }
12585   };
12586 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12587 
12588   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12589 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoEXT>
12590   {
operator ()std::hash12591     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoEXT const & videoEncodeH264ProfileInfoEXT) const VULKAN_HPP_NOEXCEPT
12592     {
12593       std::size_t seed = 0;
12594     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileInfoEXT.sType );
12595     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileInfoEXT.pNext );
12596     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileInfoEXT.stdProfileIdc );
12597       return seed;
12598     }
12599   };
12600 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12601 
12602   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12603 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT>
12604   {
operator ()std::hash12605     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264QpEXT const & videoEncodeH264QpEXT) const VULKAN_HPP_NOEXCEPT
12606     {
12607       std::size_t seed = 0;
12608     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpEXT.qpI );
12609     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpEXT.qpP );
12610     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpEXT.qpB );
12611       return seed;
12612     }
12613   };
12614 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12615 
12616   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12617 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT>
12618   {
operator ()std::hash12619     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoEXT const & videoEncodeH264RateControlInfoEXT) const VULKAN_HPP_NOEXCEPT
12620     {
12621       std::size_t seed = 0;
12622     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.sType );
12623     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.pNext );
12624     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.gopFrameCount );
12625     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.idrPeriod );
12626     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.consecutiveBFrameCount );
12627     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.rateControlStructure );
12628     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoEXT.temporalLayerCount );
12629       return seed;
12630     }
12631   };
12632 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12633 
12634   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12635 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT>
12636   {
operator ()std::hash12637     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoEXT const & videoEncodeH264RateControlLayerInfoEXT) const VULKAN_HPP_NOEXCEPT
12638     {
12639       std::size_t seed = 0;
12640     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.sType );
12641     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.pNext );
12642     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.temporalLayerId );
12643     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.useInitialRcQp );
12644     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.initialRcQp );
12645     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.useMinQp );
12646     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.minQp );
12647     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.useMaxQp );
12648     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.maxQp );
12649     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.useMaxFrameSize );
12650     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoEXT.maxFrameSize );
12651       return seed;
12652     }
12653   };
12654 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12655 
12656   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12657 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT>
12658   {
operator ()std::hash12659     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoEXT const & videoEncodeH264SessionParametersAddInfoEXT) const VULKAN_HPP_NOEXCEPT
12660     {
12661       std::size_t seed = 0;
12662     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.sType );
12663     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.pNext );
12664     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.stdSPSCount );
12665     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.pStdSPSs );
12666     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.stdPPSCount );
12667     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoEXT.pStdPPSs );
12668       return seed;
12669     }
12670   };
12671 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12672 
12673   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12674 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT>
12675   {
operator ()std::hash12676     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoEXT const & videoEncodeH264SessionParametersCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
12677     {
12678       std::size_t seed = 0;
12679     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.sType );
12680     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.pNext );
12681     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.maxStdSPSCount );
12682     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.maxStdPPSCount );
12683     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoEXT.pParametersAddInfo );
12684       return seed;
12685     }
12686   };
12687 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12688 
12689   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12690 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT>
12691   {
operator ()std::hash12692     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH264VclFrameInfoEXT const & videoEncodeH264VclFrameInfoEXT) const VULKAN_HPP_NOEXCEPT
12693     {
12694       std::size_t seed = 0;
12695     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.sType );
12696     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pNext );
12697     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pReferenceFinalLists );
12698     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.naluSliceEntryCount );
12699     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pNaluSliceEntries );
12700     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264VclFrameInfoEXT.pCurrentPictureInfo );
12701       return seed;
12702     }
12703   };
12704 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12705 
12706   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12707 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT>
12708   {
operator ()std::hash12709     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesEXT const & videoEncodeH265CapabilitiesEXT) const VULKAN_HPP_NOEXCEPT
12710     {
12711       std::size_t seed = 0;
12712     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.sType );
12713     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.pNext );
12714     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.flags );
12715     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.inputModeFlags );
12716     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.outputModeFlags );
12717     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.ctbSizes );
12718     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.transformBlockSizes );
12719     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxPPictureL0ReferenceCount );
12720     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxBPictureL0ReferenceCount );
12721     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxL1ReferenceCount );
12722     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxSubLayersCount );
12723     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.minLog2MinLumaCodingBlockSizeMinus3 );
12724     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxLog2MinLumaCodingBlockSizeMinus3 );
12725     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.minLog2MinLumaTransformBlockSizeMinus2 );
12726     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxLog2MinLumaTransformBlockSizeMinus2 );
12727     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.minMaxTransformHierarchyDepthInter );
12728     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxMaxTransformHierarchyDepthInter );
12729     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.minMaxTransformHierarchyDepthIntra );
12730     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxMaxTransformHierarchyDepthIntra );
12731     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxDiffCuQpDeltaDepth );
12732     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.minMaxNumMergeCand );
12733     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesEXT.maxMaxNumMergeCand );
12734       return seed;
12735     }
12736   };
12737 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12738 
12739   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12740 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT>
12741   {
operator ()std::hash12742     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoEXT const & videoEncodeH265DpbSlotInfoEXT) const VULKAN_HPP_NOEXCEPT
12743     {
12744       std::size_t seed = 0;
12745     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoEXT.sType );
12746     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoEXT.pNext );
12747     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoEXT.slotIndex );
12748     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoEXT.pStdReferenceInfo );
12749       return seed;
12750     }
12751   };
12752 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12753 
12754   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12755 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersInfoEXT>
12756   {
operator ()std::hash12757     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265EmitPictureParametersInfoEXT const & videoEncodeH265EmitPictureParametersInfoEXT) const VULKAN_HPP_NOEXCEPT
12758     {
12759       std::size_t seed = 0;
12760     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersInfoEXT.sType );
12761     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersInfoEXT.pNext );
12762     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersInfoEXT.vpsId );
12763     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersInfoEXT.spsId );
12764     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersInfoEXT.emitVpsEnable );
12765     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersInfoEXT.emitSpsEnable );
12766     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersInfoEXT.ppsIdEntryCount );
12767     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265EmitPictureParametersInfoEXT.ppsIdEntries );
12768       return seed;
12769     }
12770   };
12771 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12772 
12773   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12774 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT>
12775   {
operator ()std::hash12776     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeEXT const & videoEncodeH265FrameSizeEXT) const VULKAN_HPP_NOEXCEPT
12777     {
12778       std::size_t seed = 0;
12779     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeEXT.frameISize );
12780     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeEXT.framePSize );
12781     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeEXT.frameBSize );
12782       return seed;
12783     }
12784   };
12785 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12786 
12787   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12788 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsInfoEXT>
12789   {
operator ()std::hash12790     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265ReferenceListsInfoEXT const & videoEncodeH265ReferenceListsInfoEXT) const VULKAN_HPP_NOEXCEPT
12791     {
12792       std::size_t seed = 0;
12793     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsInfoEXT.sType );
12794     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsInfoEXT.pNext );
12795     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsInfoEXT.referenceList0EntryCount );
12796     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsInfoEXT.pReferenceList0Entries );
12797     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsInfoEXT.referenceList1EntryCount );
12798     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsInfoEXT.pReferenceList1Entries );
12799     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ReferenceListsInfoEXT.pReferenceModifications );
12800       return seed;
12801     }
12802   };
12803 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12804 
12805   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12806 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoEXT>
12807   {
operator ()std::hash12808     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoEXT const & videoEncodeH265NaluSliceSegmentInfoEXT) const VULKAN_HPP_NOEXCEPT
12809     {
12810       std::size_t seed = 0;
12811     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoEXT.sType );
12812     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoEXT.pNext );
12813     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoEXT.ctbCount );
12814     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoEXT.pReferenceFinalLists );
12815     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoEXT.pSliceSegmentHeaderStd );
12816       return seed;
12817     }
12818   };
12819 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12820 
12821   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12822 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoEXT>
12823   {
operator ()std::hash12824     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoEXT const & videoEncodeH265ProfileInfoEXT) const VULKAN_HPP_NOEXCEPT
12825     {
12826       std::size_t seed = 0;
12827     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileInfoEXT.sType );
12828     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileInfoEXT.pNext );
12829     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileInfoEXT.stdProfileIdc );
12830       return seed;
12831     }
12832   };
12833 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12834 
12835   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12836 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT>
12837   {
operator ()std::hash12838     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265QpEXT const & videoEncodeH265QpEXT) const VULKAN_HPP_NOEXCEPT
12839     {
12840       std::size_t seed = 0;
12841     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpEXT.qpI );
12842     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpEXT.qpP );
12843     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpEXT.qpB );
12844       return seed;
12845     }
12846   };
12847 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12848 
12849   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12850 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT>
12851   {
operator ()std::hash12852     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoEXT const & videoEncodeH265RateControlInfoEXT) const VULKAN_HPP_NOEXCEPT
12853     {
12854       std::size_t seed = 0;
12855     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.sType );
12856     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.pNext );
12857     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.gopFrameCount );
12858     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.idrPeriod );
12859     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.consecutiveBFrameCount );
12860     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.rateControlStructure );
12861     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoEXT.subLayerCount );
12862       return seed;
12863     }
12864   };
12865 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12866 
12867   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12868 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT>
12869   {
operator ()std::hash12870     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoEXT const & videoEncodeH265RateControlLayerInfoEXT) const VULKAN_HPP_NOEXCEPT
12871     {
12872       std::size_t seed = 0;
12873     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.sType );
12874     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.pNext );
12875     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.temporalId );
12876     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.useInitialRcQp );
12877     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.initialRcQp );
12878     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.useMinQp );
12879     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.minQp );
12880     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.useMaxQp );
12881     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.maxQp );
12882     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.useMaxFrameSize );
12883     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoEXT.maxFrameSize );
12884       return seed;
12885     }
12886   };
12887 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12888 
12889   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12890 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT>
12891   {
operator ()std::hash12892     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoEXT const & videoEncodeH265SessionParametersAddInfoEXT) const VULKAN_HPP_NOEXCEPT
12893     {
12894       std::size_t seed = 0;
12895     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.sType );
12896     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.pNext );
12897     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.stdVPSCount );
12898     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.pStdVPSs );
12899     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.stdSPSCount );
12900     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.pStdSPSs );
12901     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.stdPPSCount );
12902     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoEXT.pStdPPSs );
12903       return seed;
12904     }
12905   };
12906 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12907 
12908   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12909 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT>
12910   {
operator ()std::hash12911     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoEXT const & videoEncodeH265SessionParametersCreateInfoEXT) const VULKAN_HPP_NOEXCEPT
12912     {
12913       std::size_t seed = 0;
12914     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.sType );
12915     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.pNext );
12916     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.maxStdVPSCount );
12917     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.maxStdSPSCount );
12918     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.maxStdPPSCount );
12919     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoEXT.pParametersAddInfo );
12920       return seed;
12921     }
12922   };
12923 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12924 
12925   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12926 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT>
12927   {
operator ()std::hash12928     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeH265VclFrameInfoEXT const & videoEncodeH265VclFrameInfoEXT) const VULKAN_HPP_NOEXCEPT
12929     {
12930       std::size_t seed = 0;
12931     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.sType );
12932     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.pNext );
12933     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.pReferenceFinalLists );
12934     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.naluSliceSegmentEntryCount );
12935     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.pNaluSliceSegmentEntries );
12936     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265VclFrameInfoEXT.pCurrentPictureInfo );
12937       return seed;
12938     }
12939   };
12940 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12941 
12942   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12943 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR>
12944   {
operator ()std::hash12945     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR const & videoEncodeInfoKHR) const VULKAN_HPP_NOEXCEPT
12946     {
12947       std::size_t seed = 0;
12948     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.sType );
12949     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pNext );
12950     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.flags );
12951     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.qualityLevel );
12952     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBitstreamBuffer );
12953     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBitstreamBufferOffset );
12954     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBitstreamBufferMaxRange );
12955     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.srcPictureResource );
12956     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pSetupReferenceSlot );
12957     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.referenceSlotCount );
12958     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pReferenceSlots );
12959     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.precedingExternallyEncodedBytes );
12960       return seed;
12961     }
12962   };
12963 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12964 
12965   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12966 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR>
12967   {
operator ()std::hash12968     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR const & videoEncodeRateControlLayerInfoKHR) const VULKAN_HPP_NOEXCEPT
12969     {
12970       std::size_t seed = 0;
12971     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.sType );
12972     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.pNext );
12973     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.averageBitrate );
12974     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.maxBitrate );
12975     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.frameRateNumerator );
12976     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.frameRateDenominator );
12977     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.virtualBufferSizeInMs );
12978     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.initialVirtualBufferSizeInMs );
12979       return seed;
12980     }
12981   };
12982 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
12983 
12984   #if defined( VK_ENABLE_BETA_EXTENSIONS )
12985 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR>
12986   {
operator ()std::hash12987     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR const & videoEncodeRateControlInfoKHR) const VULKAN_HPP_NOEXCEPT
12988     {
12989       std::size_t seed = 0;
12990     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.sType );
12991     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.pNext );
12992     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.flags );
12993     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.rateControlMode );
12994     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.layerCount );
12995     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.pLayerConfigs );
12996       return seed;
12997     }
12998   };
12999 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
13000 
13001   #if defined( VK_ENABLE_BETA_EXTENSIONS )
13002 template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR>
13003   {
operator ()std::hash13004     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR const & videoEncodeUsageInfoKHR) const VULKAN_HPP_NOEXCEPT
13005     {
13006       std::size_t seed = 0;
13007     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.sType );
13008     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.pNext );
13009     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.videoUsageHints );
13010     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.videoContentHints );
13011     VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.tuningMode );
13012       return seed;
13013     }
13014   };
13015 #endif /*VK_ENABLE_BETA_EXTENSIONS*/
13016 
13017   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR>
13018   {
operator ()std::hash13019     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR const & videoEndCodingInfoKHR) const VULKAN_HPP_NOEXCEPT
13020     {
13021       std::size_t seed = 0;
13022     VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.sType );
13023     VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.pNext );
13024     VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.flags );
13025       return seed;
13026     }
13027   };
13028 
13029   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR>
13030   {
operator ()std::hash13031     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR const & videoFormatPropertiesKHR) const VULKAN_HPP_NOEXCEPT
13032     {
13033       std::size_t seed = 0;
13034     VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.sType );
13035     VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.pNext );
13036     VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.format );
13037     VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.componentMapping );
13038     VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.imageCreateFlags );
13039     VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.imageType );
13040     VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.imageTiling );
13041     VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.imageUsageFlags );
13042       return seed;
13043     }
13044   };
13045 
13046   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR>
13047   {
operator ()std::hash13048     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR const & videoProfileInfoKHR) const VULKAN_HPP_NOEXCEPT
13049     {
13050       std::size_t seed = 0;
13051     VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.sType );
13052     VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.pNext );
13053     VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.videoCodecOperation );
13054     VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.chromaSubsampling );
13055     VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.lumaBitDepth );
13056     VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.chromaBitDepth );
13057       return seed;
13058     }
13059   };
13060 
13061   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR>
13062   {
operator ()std::hash13063     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR const & videoProfileListInfoKHR) const VULKAN_HPP_NOEXCEPT
13064     {
13065       std::size_t seed = 0;
13066     VULKAN_HPP_HASH_COMBINE( seed, videoProfileListInfoKHR.sType );
13067     VULKAN_HPP_HASH_COMBINE( seed, videoProfileListInfoKHR.pNext );
13068     VULKAN_HPP_HASH_COMBINE( seed, videoProfileListInfoKHR.profileCount );
13069     VULKAN_HPP_HASH_COMBINE( seed, videoProfileListInfoKHR.pProfiles );
13070       return seed;
13071     }
13072   };
13073 
13074   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR>
13075   {
operator ()std::hash13076     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & videoSessionCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
13077     {
13078       std::size_t seed = 0;
13079     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.sType );
13080     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pNext );
13081     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.queueFamilyIndex );
13082     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.flags );
13083     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pVideoProfile );
13084     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pictureFormat );
13085     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxCodedExtent );
13086     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.referencePictureFormat );
13087     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxDpbSlots );
13088     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxActiveReferencePictures );
13089     VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pStdHeaderVersion );
13090       return seed;
13091     }
13092   };
13093 
13094   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR>
13095   {
operator ()std::hash13096     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR const & videoSessionMemoryRequirementsKHR) const VULKAN_HPP_NOEXCEPT
13097     {
13098       std::size_t seed = 0;
13099     VULKAN_HPP_HASH_COMBINE( seed, videoSessionMemoryRequirementsKHR.sType );
13100     VULKAN_HPP_HASH_COMBINE( seed, videoSessionMemoryRequirementsKHR.pNext );
13101     VULKAN_HPP_HASH_COMBINE( seed, videoSessionMemoryRequirementsKHR.memoryBindIndex );
13102     VULKAN_HPP_HASH_COMBINE( seed, videoSessionMemoryRequirementsKHR.memoryRequirements );
13103       return seed;
13104     }
13105   };
13106 
13107   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR>
13108   {
operator ()std::hash13109     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & videoSessionParametersCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
13110     {
13111       std::size_t seed = 0;
13112     VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.sType );
13113     VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.pNext );
13114     VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.flags );
13115     VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.videoSessionParametersTemplate );
13116     VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.videoSession );
13117       return seed;
13118     }
13119   };
13120 
13121   template <> struct hash<VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR>
13122   {
operator ()std::hash13123     std::size_t operator()(VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR const & videoSessionParametersUpdateInfoKHR) const VULKAN_HPP_NOEXCEPT
13124     {
13125       std::size_t seed = 0;
13126     VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.sType );
13127     VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.pNext );
13128     VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.updateSequenceCount );
13129       return seed;
13130     }
13131   };
13132 
13133   #if defined( VK_USE_PLATFORM_WAYLAND_KHR )
13134 template <> struct hash<VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR>
13135   {
operator ()std::hash13136     std::size_t operator()(VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const & waylandSurfaceCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
13137     {
13138       std::size_t seed = 0;
13139     VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.sType );
13140     VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.pNext );
13141     VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.flags );
13142     VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.display );
13143     VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.surface );
13144       return seed;
13145     }
13146   };
13147 #endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
13148 
13149   #if defined( VK_USE_PLATFORM_WIN32_KHR )
13150 template <> struct hash<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR>
13151   {
operator ()std::hash13152     std::size_t operator()(VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR const & win32KeyedMutexAcquireReleaseInfoKHR) const VULKAN_HPP_NOEXCEPT
13153     {
13154       std::size_t seed = 0;
13155     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.sType );
13156     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pNext );
13157     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.acquireCount );
13158     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireSyncs );
13159     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireKeys );
13160     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireTimeouts );
13161     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.releaseCount );
13162     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pReleaseSyncs );
13163     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pReleaseKeys );
13164       return seed;
13165     }
13166   };
13167 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
13168 
13169   #if defined( VK_USE_PLATFORM_WIN32_KHR )
13170 template <> struct hash<VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV>
13171   {
operator ()std::hash13172     std::size_t operator()(VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV const & win32KeyedMutexAcquireReleaseInfoNV) const VULKAN_HPP_NOEXCEPT
13173     {
13174       std::size_t seed = 0;
13175     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.sType );
13176     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pNext );
13177     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.acquireCount );
13178     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireSyncs );
13179     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireKeys );
13180     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireTimeoutMilliseconds );
13181     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.releaseCount );
13182     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pReleaseSyncs );
13183     VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pReleaseKeys );
13184       return seed;
13185     }
13186   };
13187 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
13188 
13189   #if defined( VK_USE_PLATFORM_WIN32_KHR )
13190 template <> struct hash<VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR>
13191   {
operator ()std::hash13192     std::size_t operator()(VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const & win32SurfaceCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
13193     {
13194       std::size_t seed = 0;
13195     VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.sType );
13196     VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.pNext );
13197     VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.flags );
13198     VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.hinstance );
13199     VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.hwnd );
13200       return seed;
13201     }
13202   };
13203 #endif /*VK_USE_PLATFORM_WIN32_KHR*/
13204 
13205   template <> struct hash<VULKAN_HPP_NAMESPACE::WriteDescriptorSet>
13206   {
operator ()std::hash13207     std::size_t operator()(VULKAN_HPP_NAMESPACE::WriteDescriptorSet const & writeDescriptorSet) const VULKAN_HPP_NOEXCEPT
13208     {
13209       std::size_t seed = 0;
13210     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.sType );
13211     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pNext );
13212     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstSet );
13213     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstBinding );
13214     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstArrayElement );
13215     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.descriptorCount );
13216     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.descriptorType );
13217     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pImageInfo );
13218     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pBufferInfo );
13219     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pTexelBufferView );
13220       return seed;
13221     }
13222   };
13223 
13224   template <> struct hash<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR>
13225   {
operator ()std::hash13226     std::size_t operator()(VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR const & writeDescriptorSetAccelerationStructureKHR) const VULKAN_HPP_NOEXCEPT
13227     {
13228       std::size_t seed = 0;
13229     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.sType );
13230     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.pNext );
13231     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.accelerationStructureCount );
13232     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.pAccelerationStructures );
13233       return seed;
13234     }
13235   };
13236 
13237   template <> struct hash<VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV>
13238   {
operator ()std::hash13239     std::size_t operator()(VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV const & writeDescriptorSetAccelerationStructureNV) const VULKAN_HPP_NOEXCEPT
13240     {
13241       std::size_t seed = 0;
13242     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.sType );
13243     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.pNext );
13244     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.accelerationStructureCount );
13245     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.pAccelerationStructures );
13246       return seed;
13247     }
13248   };
13249 
13250   template <> struct hash<VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock>
13251   {
operator ()std::hash13252     std::size_t operator()(VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock const & writeDescriptorSetInlineUniformBlock) const VULKAN_HPP_NOEXCEPT
13253     {
13254       std::size_t seed = 0;
13255     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.sType );
13256     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.pNext );
13257     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.dataSize );
13258     VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.pData );
13259       return seed;
13260     }
13261   };
13262 
13263   #if defined( VK_USE_PLATFORM_XCB_KHR )
13264 template <> struct hash<VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR>
13265   {
operator ()std::hash13266     std::size_t operator()(VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const & xcbSurfaceCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
13267     {
13268       std::size_t seed = 0;
13269     VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.sType );
13270     VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.pNext );
13271     VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.flags );
13272     VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.connection );
13273     VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.window );
13274       return seed;
13275     }
13276   };
13277 #endif /*VK_USE_PLATFORM_XCB_KHR*/
13278 
13279   #if defined( VK_USE_PLATFORM_XLIB_KHR )
13280 template <> struct hash<VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR>
13281   {
operator ()std::hash13282     std::size_t operator()(VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const & xlibSurfaceCreateInfoKHR) const VULKAN_HPP_NOEXCEPT
13283     {
13284       std::size_t seed = 0;
13285     VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.sType );
13286     VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.pNext );
13287     VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.flags );
13288     VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.dpy );
13289     VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.window );
13290       return seed;
13291     }
13292   };
13293 #endif /*VK_USE_PLATFORM_XLIB_KHR*/
13294 
13295 #endif    // 14 <= VULKAN_HPP_CPP_VERSION
13296 
13297 } // namespace std
13298 #endif
13299