• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015-2021 The Khronos Group Inc.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR MIT
4 //
5 
6 // This header is generated from the Khronos Vulkan XML API Registry.
7 
8 #ifndef VULKAN_RAII_HPP
9 #define VULKAN_RAII_HPP
10 
11 #include <vulkan/vulkan.hpp>
12 
13 #if !defined( VULKAN_HPP_RAII_NAMESPACE )
14 #  define VULKAN_HPP_RAII_NAMESPACE raii
15 #endif
16 
17 namespace VULKAN_HPP_NAMESPACE
18 {
19   namespace VULKAN_HPP_RAII_NAMESPACE
20   {
21 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) && !defined( VULKAN_HPP_NO_EXCEPTIONS )
22 
23     template <class T, class U = T>
exchange(T & obj,U && newValue)24     VULKAN_HPP_CONSTEXPR_14 VULKAN_HPP_INLINE T exchange( T & obj, U && newValue )
25     {
26 #  if ( 14 <= VULKAN_HPP_CPP_VERSION )
27       return std::exchange<T>( obj, std::forward<U>( newValue ) );
28 #  else
29       T oldValue = std::move( obj );
30       obj        = std::forward<U>( newValue );
31       return oldValue;
32 #  endif
33     }
34 
35     class ContextDispatcher : public DispatchLoaderBase
36     {
37     public:
ContextDispatcher(PFN_vkGetInstanceProcAddr getProcAddr)38       ContextDispatcher( PFN_vkGetInstanceProcAddr getProcAddr )
39         : vkGetInstanceProcAddr( getProcAddr )
40         //=== VK_VERSION_1_0 ===
41         , vkCreateInstance( PFN_vkCreateInstance( getProcAddr( NULL, "vkCreateInstance" ) ) )
42         , vkEnumerateInstanceExtensionProperties( PFN_vkEnumerateInstanceExtensionProperties(
43             getProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ) )
44         , vkEnumerateInstanceLayerProperties(
45             PFN_vkEnumerateInstanceLayerProperties( getProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ) )
46         //=== VK_VERSION_1_1 ===
47         , vkEnumerateInstanceVersion(
48             PFN_vkEnumerateInstanceVersion( getProcAddr( NULL, "vkEnumerateInstanceVersion" ) ) )
49       {}
50 
51     public:
52       PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0;
53 
54       //=== VK_VERSION_1_0 ===
55       PFN_vkCreateInstance                       vkCreateInstance                       = 0;
56       PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0;
57       PFN_vkEnumerateInstanceLayerProperties     vkEnumerateInstanceLayerProperties     = 0;
58 
59       //=== VK_VERSION_1_1 ===
60       PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0;
61     };
62 
63     class InstanceDispatcher : public DispatchLoaderBase
64     {
65     public:
InstanceDispatcher(PFN_vkGetInstanceProcAddr getProcAddr)66       InstanceDispatcher( PFN_vkGetInstanceProcAddr getProcAddr ) : vkGetInstanceProcAddr( getProcAddr ) {}
67 
InstanceDispatcher(std::nullptr_t)68       InstanceDispatcher( std::nullptr_t ) : DispatchLoaderBase( nullptr ) {}
69 
init(VkInstance instance)70       void init( VkInstance instance )
71       {
72         //=== VK_VERSION_1_0 ===
73         vkDestroyInstance = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) );
74         vkEnumeratePhysicalDevices =
75           PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) );
76         vkGetPhysicalDeviceFeatures =
77           PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) );
78         vkGetPhysicalDeviceFormatProperties = PFN_vkGetPhysicalDeviceFormatProperties(
79           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) );
80         vkGetPhysicalDeviceImageFormatProperties = PFN_vkGetPhysicalDeviceImageFormatProperties(
81           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) );
82         vkGetPhysicalDeviceProperties =
83           PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) );
84         vkGetPhysicalDeviceQueueFamilyProperties = PFN_vkGetPhysicalDeviceQueueFamilyProperties(
85           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) );
86         vkGetPhysicalDeviceMemoryProperties = PFN_vkGetPhysicalDeviceMemoryProperties(
87           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) );
88         vkGetInstanceProcAddr = PFN_vkGetInstanceProcAddr( vkGetInstanceProcAddr( instance, "vkGetInstanceProcAddr" ) );
89         vkCreateDevice        = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) );
90         vkEnumerateDeviceExtensionProperties = PFN_vkEnumerateDeviceExtensionProperties(
91           vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) );
92         vkEnumerateDeviceLayerProperties =
93           PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) );
94         vkGetPhysicalDeviceSparseImageFormatProperties = PFN_vkGetPhysicalDeviceSparseImageFormatProperties(
95           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) );
96 
97         //=== VK_VERSION_1_1 ===
98         vkEnumeratePhysicalDeviceGroups =
99           PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) );
100         vkGetPhysicalDeviceFeatures2 =
101           PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) );
102         vkGetPhysicalDeviceProperties2 =
103           PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) );
104         vkGetPhysicalDeviceFormatProperties2 = PFN_vkGetPhysicalDeviceFormatProperties2(
105           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) );
106         vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkGetPhysicalDeviceImageFormatProperties2(
107           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) );
108         vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkGetPhysicalDeviceQueueFamilyProperties2(
109           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) );
110         vkGetPhysicalDeviceMemoryProperties2 = PFN_vkGetPhysicalDeviceMemoryProperties2(
111           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) );
112         vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2(
113           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) );
114         vkGetPhysicalDeviceExternalBufferProperties = PFN_vkGetPhysicalDeviceExternalBufferProperties(
115           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) );
116         vkGetPhysicalDeviceExternalFenceProperties = PFN_vkGetPhysicalDeviceExternalFenceProperties(
117           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) );
118         vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkGetPhysicalDeviceExternalSemaphoreProperties(
119           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) );
120 
121         //=== VK_EXT_acquire_drm_display ===
122         vkAcquireDrmDisplayEXT =
123           PFN_vkAcquireDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" ) );
124         vkGetDrmDisplayEXT = PFN_vkGetDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" ) );
125 
126 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
127         //=== VK_EXT_acquire_xlib_display ===
128         vkAcquireXlibDisplayEXT =
129           PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) );
130         vkGetRandROutputDisplayEXT =
131           PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) );
132 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
133 
134         //=== VK_EXT_calibrated_timestamps ===
135         vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
136           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) );
137 
138         //=== VK_EXT_debug_report ===
139         vkCreateDebugReportCallbackEXT =
140           PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) );
141         vkDestroyDebugReportCallbackEXT =
142           PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) );
143         vkDebugReportMessageEXT =
144           PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) );
145 
146         //=== VK_EXT_debug_utils ===
147         vkCreateDebugUtilsMessengerEXT =
148           PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) );
149         vkDestroyDebugUtilsMessengerEXT =
150           PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) );
151         vkSubmitDebugUtilsMessageEXT =
152           PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) );
153 
154         //=== VK_EXT_direct_mode_display ===
155         vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) );
156 
157 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
158         //=== VK_EXT_directfb_surface ===
159         vkCreateDirectFBSurfaceEXT =
160           PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) );
161         vkGetPhysicalDeviceDirectFBPresentationSupportEXT = PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
162           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) );
163 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
164 
165         //=== VK_EXT_display_surface_counter ===
166         vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
167           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) );
168 
169 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
170         //=== VK_EXT_full_screen_exclusive ===
171         vkGetPhysicalDeviceSurfacePresentModes2EXT = PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT(
172           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) );
173 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
174 
175         //=== VK_EXT_headless_surface ===
176         vkCreateHeadlessSurfaceEXT =
177           PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) );
178 
179 #  if defined( VK_USE_PLATFORM_METAL_EXT )
180         //=== VK_EXT_metal_surface ===
181         vkCreateMetalSurfaceEXT =
182           PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) );
183 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
184 
185         //=== VK_EXT_sample_locations ===
186         vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT(
187           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) );
188 
189         //=== VK_EXT_tooling_info ===
190         vkGetPhysicalDeviceToolPropertiesEXT = PFN_vkGetPhysicalDeviceToolPropertiesEXT(
191           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) );
192 
193 #  if defined( VK_USE_PLATFORM_FUCHSIA )
194         //=== VK_FUCHSIA_imagepipe_surface ===
195         vkCreateImagePipeSurfaceFUCHSIA =
196           PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) );
197 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
198 
199 #  if defined( VK_USE_PLATFORM_GGP )
200         //=== VK_GGP_stream_descriptor_surface ===
201         vkCreateStreamDescriptorSurfaceGGP = PFN_vkCreateStreamDescriptorSurfaceGGP(
202           vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) );
203 #  endif /*VK_USE_PLATFORM_GGP*/
204 
205 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
206         //=== VK_KHR_android_surface ===
207         vkCreateAndroidSurfaceKHR =
208           PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) );
209 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
210 
211         //=== VK_KHR_device_group ===
212         vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR(
213           vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) );
214 
215         //=== VK_KHR_device_group_creation ===
216         vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR(
217           vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) );
218         if ( !vkEnumeratePhysicalDeviceGroups )
219           vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR;
220 
221         //=== VK_KHR_display ===
222         vkGetPhysicalDeviceDisplayPropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPropertiesKHR(
223           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) );
224         vkGetPhysicalDeviceDisplayPlanePropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
225           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) );
226         vkGetDisplayPlaneSupportedDisplaysKHR = PFN_vkGetDisplayPlaneSupportedDisplaysKHR(
227           vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) );
228         vkGetDisplayModePropertiesKHR =
229           PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) );
230         vkCreateDisplayModeKHR =
231           PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) );
232         vkGetDisplayPlaneCapabilitiesKHR =
233           PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) );
234         vkCreateDisplayPlaneSurfaceKHR =
235           PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) );
236 
237         //=== VK_KHR_external_fence_capabilities ===
238         vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR(
239           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) );
240         if ( !vkGetPhysicalDeviceExternalFenceProperties )
241           vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR;
242 
243         //=== VK_KHR_external_memory_capabilities ===
244         vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
245           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) );
246         if ( !vkGetPhysicalDeviceExternalBufferProperties )
247           vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR;
248 
249         //=== VK_KHR_external_semaphore_capabilities ===
250         vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
251           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) );
252         if ( !vkGetPhysicalDeviceExternalSemaphoreProperties )
253           vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
254 
255         //=== VK_KHR_fragment_shading_rate ===
256         vkGetPhysicalDeviceFragmentShadingRatesKHR = PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR(
257           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) );
258 
259         //=== VK_KHR_get_display_properties2 ===
260         vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkGetPhysicalDeviceDisplayProperties2KHR(
261           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) );
262         vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
263           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) );
264         vkGetDisplayModeProperties2KHR =
265           PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) );
266         vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR(
267           vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) );
268 
269         //=== VK_KHR_get_physical_device_properties2 ===
270         vkGetPhysicalDeviceFeatures2KHR =
271           PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) );
272         if ( !vkGetPhysicalDeviceFeatures2 )
273           vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR;
274         vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR(
275           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) );
276         if ( !vkGetPhysicalDeviceProperties2 )
277           vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR;
278         vkGetPhysicalDeviceFormatProperties2KHR = PFN_vkGetPhysicalDeviceFormatProperties2KHR(
279           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) );
280         if ( !vkGetPhysicalDeviceFormatProperties2 )
281           vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR;
282         vkGetPhysicalDeviceImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceImageFormatProperties2KHR(
283           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) );
284         if ( !vkGetPhysicalDeviceImageFormatProperties2 )
285           vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR;
286         vkGetPhysicalDeviceQueueFamilyProperties2KHR = PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
287           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) );
288         if ( !vkGetPhysicalDeviceQueueFamilyProperties2 )
289           vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR;
290         vkGetPhysicalDeviceMemoryProperties2KHR = PFN_vkGetPhysicalDeviceMemoryProperties2KHR(
291           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) );
292         if ( !vkGetPhysicalDeviceMemoryProperties2 )
293           vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR;
294         vkGetPhysicalDeviceSparseImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
295           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) );
296         if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 )
297           vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
298 
299         //=== VK_KHR_get_surface_capabilities2 ===
300         vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
301           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) );
302         vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkGetPhysicalDeviceSurfaceFormats2KHR(
303           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) );
304 
305         //=== VK_KHR_performance_query ===
306         vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR =
307           PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
308             vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) );
309         vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR =
310           PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
311             vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) );
312 
313         //=== VK_KHR_surface ===
314         vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) );
315         vkGetPhysicalDeviceSurfaceSupportKHR = PFN_vkGetPhysicalDeviceSurfaceSupportKHR(
316           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) );
317         vkGetPhysicalDeviceSurfaceCapabilitiesKHR = PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
318           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) );
319         vkGetPhysicalDeviceSurfaceFormatsKHR = PFN_vkGetPhysicalDeviceSurfaceFormatsKHR(
320           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) );
321         vkGetPhysicalDeviceSurfacePresentModesKHR = PFN_vkGetPhysicalDeviceSurfacePresentModesKHR(
322           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) );
323 
324 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
325         //=== VK_KHR_video_queue ===
326         vkGetPhysicalDeviceVideoCapabilitiesKHR = PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR(
327           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoCapabilitiesKHR" ) );
328         vkGetPhysicalDeviceVideoFormatPropertiesKHR = PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR(
329           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoFormatPropertiesKHR" ) );
330 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
331 
332 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
333         //=== VK_KHR_wayland_surface ===
334         vkCreateWaylandSurfaceKHR =
335           PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) );
336         vkGetPhysicalDeviceWaylandPresentationSupportKHR = PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
337           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) );
338 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
339 
340 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
341         //=== VK_KHR_win32_surface ===
342         vkCreateWin32SurfaceKHR =
343           PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) );
344         vkGetPhysicalDeviceWin32PresentationSupportKHR = PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR(
345           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) );
346 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
347 
348 #  if defined( VK_USE_PLATFORM_XCB_KHR )
349         //=== VK_KHR_xcb_surface ===
350         vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) );
351         vkGetPhysicalDeviceXcbPresentationSupportKHR = PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR(
352           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) );
353 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
354 
355 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
356         //=== VK_KHR_xlib_surface ===
357         vkCreateXlibSurfaceKHR =
358           PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) );
359         vkGetPhysicalDeviceXlibPresentationSupportKHR = PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR(
360           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) );
361 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
362 
363 #  if defined( VK_USE_PLATFORM_IOS_MVK )
364         //=== VK_MVK_ios_surface ===
365         vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) );
366 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
367 
368 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
369         //=== VK_MVK_macos_surface ===
370         vkCreateMacOSSurfaceMVK =
371           PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) );
372 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
373 
374 #  if defined( VK_USE_PLATFORM_VI_NN )
375         //=== VK_NN_vi_surface ===
376         vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) );
377 #  endif /*VK_USE_PLATFORM_VI_NN*/
378 
379 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
380         //=== VK_NV_acquire_winrt_display ===
381         vkAcquireWinrtDisplayNV =
382           PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) );
383         vkGetWinrtDisplayNV = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) );
384 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
385 
386         //=== VK_NV_cooperative_matrix ===
387         vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
388           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) );
389 
390         //=== VK_NV_coverage_reduction_mode ===
391         vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV =
392           PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
393             vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) );
394 
395         //=== VK_NV_external_memory_capabilities ===
396         vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
397           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) );
398 
399 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
400         //=== VK_QNX_screen_surface ===
401         vkCreateScreenSurfaceQNX =
402           PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) );
403         vkGetPhysicalDeviceScreenPresentationSupportQNX = PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX(
404           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) );
405 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
406 
407         vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) );
408       }
409 
410     public:
411       //=== VK_VERSION_1_0 ===
412       PFN_vkDestroyInstance                              vkDestroyInstance                              = 0;
413       PFN_vkEnumeratePhysicalDevices                     vkEnumeratePhysicalDevices                     = 0;
414       PFN_vkGetPhysicalDeviceFeatures                    vkGetPhysicalDeviceFeatures                    = 0;
415       PFN_vkGetPhysicalDeviceFormatProperties            vkGetPhysicalDeviceFormatProperties            = 0;
416       PFN_vkGetPhysicalDeviceImageFormatProperties       vkGetPhysicalDeviceImageFormatProperties       = 0;
417       PFN_vkGetPhysicalDeviceProperties                  vkGetPhysicalDeviceProperties                  = 0;
418       PFN_vkGetPhysicalDeviceQueueFamilyProperties       vkGetPhysicalDeviceQueueFamilyProperties       = 0;
419       PFN_vkGetPhysicalDeviceMemoryProperties            vkGetPhysicalDeviceMemoryProperties            = 0;
420       PFN_vkGetInstanceProcAddr                          vkGetInstanceProcAddr                          = 0;
421       PFN_vkCreateDevice                                 vkCreateDevice                                 = 0;
422       PFN_vkEnumerateDeviceExtensionProperties           vkEnumerateDeviceExtensionProperties           = 0;
423       PFN_vkEnumerateDeviceLayerProperties               vkEnumerateDeviceLayerProperties               = 0;
424       PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0;
425 
426       //=== VK_VERSION_1_1 ===
427       PFN_vkEnumeratePhysicalDeviceGroups                 vkEnumeratePhysicalDeviceGroups                 = 0;
428       PFN_vkGetPhysicalDeviceFeatures2                    vkGetPhysicalDeviceFeatures2                    = 0;
429       PFN_vkGetPhysicalDeviceProperties2                  vkGetPhysicalDeviceProperties2                  = 0;
430       PFN_vkGetPhysicalDeviceFormatProperties2            vkGetPhysicalDeviceFormatProperties2            = 0;
431       PFN_vkGetPhysicalDeviceImageFormatProperties2       vkGetPhysicalDeviceImageFormatProperties2       = 0;
432       PFN_vkGetPhysicalDeviceQueueFamilyProperties2       vkGetPhysicalDeviceQueueFamilyProperties2       = 0;
433       PFN_vkGetPhysicalDeviceMemoryProperties2            vkGetPhysicalDeviceMemoryProperties2            = 0;
434       PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0;
435       PFN_vkGetPhysicalDeviceExternalBufferProperties     vkGetPhysicalDeviceExternalBufferProperties     = 0;
436       PFN_vkGetPhysicalDeviceExternalFenceProperties      vkGetPhysicalDeviceExternalFenceProperties      = 0;
437       PFN_vkGetPhysicalDeviceExternalSemaphoreProperties  vkGetPhysicalDeviceExternalSemaphoreProperties  = 0;
438 
439       //=== VK_EXT_acquire_drm_display ===
440       PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT = 0;
441       PFN_vkGetDrmDisplayEXT     vkGetDrmDisplayEXT     = 0;
442 
443 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
444       //=== VK_EXT_acquire_xlib_display ===
445       PFN_vkAcquireXlibDisplayEXT    vkAcquireXlibDisplayEXT    = 0;
446       PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0;
447 #  else
448       PFN_dummy vkAcquireXlibDisplayEXT_placeholder                           = 0;
449       PFN_dummy vkGetRandROutputDisplayEXT_placeholder                        = 0;
450 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
451 
452       //=== VK_EXT_calibrated_timestamps ===
453       PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0;
454 
455       //=== VK_EXT_debug_report ===
456       PFN_vkCreateDebugReportCallbackEXT  vkCreateDebugReportCallbackEXT  = 0;
457       PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0;
458       PFN_vkDebugReportMessageEXT         vkDebugReportMessageEXT         = 0;
459 
460       //=== VK_EXT_debug_utils ===
461       PFN_vkCreateDebugUtilsMessengerEXT  vkCreateDebugUtilsMessengerEXT  = 0;
462       PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0;
463       PFN_vkSubmitDebugUtilsMessageEXT    vkSubmitDebugUtilsMessageEXT    = 0;
464 
465       //=== VK_EXT_direct_mode_display ===
466       PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0;
467 
468 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
469       //=== VK_EXT_directfb_surface ===
470       PFN_vkCreateDirectFBSurfaceEXT                        vkCreateDirectFBSurfaceEXT                        = 0;
471       PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0;
472 #  else
473       PFN_dummy vkCreateDirectFBSurfaceEXT_placeholder                        = 0;
474       PFN_dummy vkGetPhysicalDeviceDirectFBPresentationSupportEXT_placeholder = 0;
475 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
476 
477       //=== VK_EXT_display_surface_counter ===
478       PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0;
479 
480 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
481       //=== VK_EXT_full_screen_exclusive ===
482       PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0;
483 #  else
484       PFN_dummy vkGetPhysicalDeviceSurfacePresentModes2EXT_placeholder        = 0;
485 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
486 
487       //=== VK_EXT_headless_surface ===
488       PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0;
489 
490 #  if defined( VK_USE_PLATFORM_METAL_EXT )
491       //=== VK_EXT_metal_surface ===
492       PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0;
493 #  else
494       PFN_dummy vkCreateMetalSurfaceEXT_placeholder                           = 0;
495 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
496 
497       //=== VK_EXT_sample_locations ===
498       PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
499 
500       //=== VK_EXT_tooling_info ===
501       PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT = 0;
502 
503 #  if defined( VK_USE_PLATFORM_FUCHSIA )
504       //=== VK_FUCHSIA_imagepipe_surface ===
505       PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0;
506 #  else
507       PFN_dummy vkCreateImagePipeSurfaceFUCHSIA_placeholder                   = 0;
508 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
509 
510 #  if defined( VK_USE_PLATFORM_GGP )
511       //=== VK_GGP_stream_descriptor_surface ===
512       PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0;
513 #  else
514       PFN_dummy vkCreateStreamDescriptorSurfaceGGP_placeholder                = 0;
515 #  endif /*VK_USE_PLATFORM_GGP*/
516 
517 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
518       //=== VK_KHR_android_surface ===
519       PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0;
520 #  else
521       PFN_dummy vkCreateAndroidSurfaceKHR_placeholder                         = 0;
522 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
523 
524       //=== VK_KHR_device_group ===
525       PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0;
526 
527       //=== VK_KHR_device_group_creation ===
528       PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0;
529 
530       //=== VK_KHR_display ===
531       PFN_vkGetPhysicalDeviceDisplayPropertiesKHR      vkGetPhysicalDeviceDisplayPropertiesKHR      = 0;
532       PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0;
533       PFN_vkGetDisplayPlaneSupportedDisplaysKHR        vkGetDisplayPlaneSupportedDisplaysKHR        = 0;
534       PFN_vkGetDisplayModePropertiesKHR                vkGetDisplayModePropertiesKHR                = 0;
535       PFN_vkCreateDisplayModeKHR                       vkCreateDisplayModeKHR                       = 0;
536       PFN_vkGetDisplayPlaneCapabilitiesKHR             vkGetDisplayPlaneCapabilitiesKHR             = 0;
537       PFN_vkCreateDisplayPlaneSurfaceKHR               vkCreateDisplayPlaneSurfaceKHR               = 0;
538 
539       //=== VK_KHR_external_fence_capabilities ===
540       PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0;
541 
542       //=== VK_KHR_external_memory_capabilities ===
543       PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0;
544 
545       //=== VK_KHR_external_semaphore_capabilities ===
546       PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0;
547 
548       //=== VK_KHR_fragment_shading_rate ===
549       PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR = 0;
550 
551       //=== VK_KHR_get_display_properties2 ===
552       PFN_vkGetPhysicalDeviceDisplayProperties2KHR      vkGetPhysicalDeviceDisplayProperties2KHR      = 0;
553       PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0;
554       PFN_vkGetDisplayModeProperties2KHR                vkGetDisplayModeProperties2KHR                = 0;
555       PFN_vkGetDisplayPlaneCapabilities2KHR             vkGetDisplayPlaneCapabilities2KHR             = 0;
556 
557       //=== VK_KHR_get_physical_device_properties2 ===
558       PFN_vkGetPhysicalDeviceFeatures2KHR                    vkGetPhysicalDeviceFeatures2KHR                    = 0;
559       PFN_vkGetPhysicalDeviceProperties2KHR                  vkGetPhysicalDeviceProperties2KHR                  = 0;
560       PFN_vkGetPhysicalDeviceFormatProperties2KHR            vkGetPhysicalDeviceFormatProperties2KHR            = 0;
561       PFN_vkGetPhysicalDeviceImageFormatProperties2KHR       vkGetPhysicalDeviceImageFormatProperties2KHR       = 0;
562       PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR       vkGetPhysicalDeviceQueueFamilyProperties2KHR       = 0;
563       PFN_vkGetPhysicalDeviceMemoryProperties2KHR            vkGetPhysicalDeviceMemoryProperties2KHR            = 0;
564       PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0;
565 
566       //=== VK_KHR_get_surface_capabilities2 ===
567       PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0;
568       PFN_vkGetPhysicalDeviceSurfaceFormats2KHR      vkGetPhysicalDeviceSurfaceFormats2KHR      = 0;
569 
570       //=== VK_KHR_performance_query ===
571       PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
572         vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0;
573       PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
574         vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 0;
575 
576       //=== VK_KHR_surface ===
577       PFN_vkDestroySurfaceKHR                       vkDestroySurfaceKHR                       = 0;
578       PFN_vkGetPhysicalDeviceSurfaceSupportKHR      vkGetPhysicalDeviceSurfaceSupportKHR      = 0;
579       PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0;
580       PFN_vkGetPhysicalDeviceSurfaceFormatsKHR      vkGetPhysicalDeviceSurfaceFormatsKHR      = 0;
581       PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0;
582 
583 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
584       //=== VK_KHR_video_queue ===
585       PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR     vkGetPhysicalDeviceVideoCapabilitiesKHR     = 0;
586       PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR = 0;
587 #  else
588       PFN_dummy vkGetPhysicalDeviceVideoCapabilitiesKHR_placeholder           = 0;
589       PFN_dummy vkGetPhysicalDeviceVideoFormatPropertiesKHR_placeholder       = 0;
590 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
591 
592 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
593       //=== VK_KHR_wayland_surface ===
594       PFN_vkCreateWaylandSurfaceKHR                        vkCreateWaylandSurfaceKHR                        = 0;
595       PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0;
596 #  else
597       PFN_dummy vkCreateWaylandSurfaceKHR_placeholder                         = 0;
598       PFN_dummy vkGetPhysicalDeviceWaylandPresentationSupportKHR_placeholder  = 0;
599 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
600 
601 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
602       //=== VK_KHR_win32_surface ===
603       PFN_vkCreateWin32SurfaceKHR                        vkCreateWin32SurfaceKHR                        = 0;
604       PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0;
605 #  else
606       PFN_dummy vkCreateWin32SurfaceKHR_placeholder                           = 0;
607       PFN_dummy vkGetPhysicalDeviceWin32PresentationSupportKHR_placeholder    = 0;
608 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
609 
610 #  if defined( VK_USE_PLATFORM_XCB_KHR )
611       //=== VK_KHR_xcb_surface ===
612       PFN_vkCreateXcbSurfaceKHR                        vkCreateXcbSurfaceKHR                        = 0;
613       PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0;
614 #  else
615       PFN_dummy vkCreateXcbSurfaceKHR_placeholder                             = 0;
616       PFN_dummy vkGetPhysicalDeviceXcbPresentationSupportKHR_placeholder      = 0;
617 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
618 
619 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
620       //=== VK_KHR_xlib_surface ===
621       PFN_vkCreateXlibSurfaceKHR                        vkCreateXlibSurfaceKHR                        = 0;
622       PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0;
623 #  else
624       PFN_dummy vkCreateXlibSurfaceKHR_placeholder                            = 0;
625       PFN_dummy vkGetPhysicalDeviceXlibPresentationSupportKHR_placeholder     = 0;
626 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
627 
628 #  if defined( VK_USE_PLATFORM_IOS_MVK )
629       //=== VK_MVK_ios_surface ===
630       PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0;
631 #  else
632       PFN_dummy vkCreateIOSSurfaceMVK_placeholder                             = 0;
633 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
634 
635 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
636       //=== VK_MVK_macos_surface ===
637       PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0;
638 #  else
639       PFN_dummy vkCreateMacOSSurfaceMVK_placeholder                           = 0;
640 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
641 
642 #  if defined( VK_USE_PLATFORM_VI_NN )
643       //=== VK_NN_vi_surface ===
644       PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0;
645 #  else
646       PFN_dummy vkCreateViSurfaceNN_placeholder                               = 0;
647 #  endif /*VK_USE_PLATFORM_VI_NN*/
648 
649 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
650       //=== VK_NV_acquire_winrt_display ===
651       PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0;
652       PFN_vkGetWinrtDisplayNV     vkGetWinrtDisplayNV     = 0;
653 #  else
654       PFN_dummy vkAcquireWinrtDisplayNV_placeholder                           = 0;
655       PFN_dummy vkGetWinrtDisplayNV_placeholder                               = 0;
656 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
657 
658       //=== VK_NV_cooperative_matrix ===
659       PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0;
660 
661       //=== VK_NV_coverage_reduction_mode ===
662       PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
663         vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0;
664 
665       //=== VK_NV_external_memory_capabilities ===
666       PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0;
667 
668 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
669       //=== VK_QNX_screen_surface ===
670       PFN_vkCreateScreenSurfaceQNX                        vkCreateScreenSurfaceQNX                        = 0;
671       PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0;
672 #  else
673       PFN_dummy vkCreateScreenSurfaceQNX_placeholder                          = 0;
674       PFN_dummy vkGetPhysicalDeviceScreenPresentationSupportQNX_placeholder   = 0;
675 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
676 
677       PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0;
678     };
679 
680     class DeviceDispatcher : public DispatchLoaderBase
681     {
682     public:
DeviceDispatcher(PFN_vkGetDeviceProcAddr getProcAddr)683       DeviceDispatcher( PFN_vkGetDeviceProcAddr getProcAddr ) : vkGetDeviceProcAddr( getProcAddr ) {}
684 
DeviceDispatcher(std::nullptr_t)685       DeviceDispatcher( std::nullptr_t ) : DispatchLoaderBase( nullptr ) {}
686 
init(VkDevice device)687       void init( VkDevice device )
688       {
689         //=== VK_VERSION_1_0 ===
690         vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) );
691         vkDestroyDevice     = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) );
692         vkGetDeviceQueue    = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) );
693         vkQueueSubmit       = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) );
694         vkQueueWaitIdle     = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) );
695         vkDeviceWaitIdle    = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) );
696         vkAllocateMemory    = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) );
697         vkFreeMemory        = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) );
698         vkMapMemory         = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) );
699         vkUnmapMemory       = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) );
700         vkFlushMappedMemoryRanges =
701           PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) );
702         vkInvalidateMappedMemoryRanges =
703           PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) );
704         vkGetDeviceMemoryCommitment =
705           PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) );
706         vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) );
707         vkBindImageMemory  = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) );
708         vkGetBufferMemoryRequirements =
709           PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) );
710         vkGetImageMemoryRequirements =
711           PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) );
712         vkGetImageSparseMemoryRequirements =
713           PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) );
714         vkQueueBindSparse     = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) );
715         vkCreateFence         = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) );
716         vkDestroyFence        = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) );
717         vkResetFences         = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) );
718         vkGetFenceStatus      = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) );
719         vkWaitForFences       = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) );
720         vkCreateSemaphore     = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) );
721         vkDestroySemaphore    = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) );
722         vkCreateEvent         = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) );
723         vkDestroyEvent        = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) );
724         vkGetEventStatus      = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) );
725         vkSetEvent            = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) );
726         vkResetEvent          = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) );
727         vkCreateQueryPool     = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) );
728         vkDestroyQueryPool    = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) );
729         vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) );
730         vkCreateBuffer        = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) );
731         vkDestroyBuffer       = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) );
732         vkCreateBufferView    = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) );
733         vkDestroyBufferView   = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) );
734         vkCreateImage         = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) );
735         vkDestroyImage        = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) );
736         vkGetImageSubresourceLayout =
737           PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) );
738         vkCreateImageView      = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) );
739         vkDestroyImageView     = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) );
740         vkCreateShaderModule   = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) );
741         vkDestroyShaderModule  = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) );
742         vkCreatePipelineCache  = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) );
743         vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) );
744         vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) );
745         vkMergePipelineCaches  = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) );
746         vkCreateGraphicsPipelines =
747           PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) );
748         vkCreateComputePipelines =
749           PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) );
750         vkDestroyPipeline      = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) );
751         vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) );
752         vkDestroyPipelineLayout =
753           PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) );
754         vkCreateSampler  = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) );
755         vkDestroySampler = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) );
756         vkCreateDescriptorSetLayout =
757           PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) );
758         vkDestroyDescriptorSetLayout =
759           PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) );
760         vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) );
761         vkDestroyDescriptorPool =
762           PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) );
763         vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) );
764         vkAllocateDescriptorSets =
765           PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) );
766         vkFreeDescriptorSets   = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) );
767         vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) );
768         vkCreateFramebuffer    = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) );
769         vkDestroyFramebuffer   = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) );
770         vkCreateRenderPass     = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) );
771         vkDestroyRenderPass    = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) );
772         vkGetRenderAreaGranularity =
773           PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) );
774         vkCreateCommandPool  = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) );
775         vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) );
776         vkResetCommandPool   = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) );
777         vkAllocateCommandBuffers =
778           PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) );
779         vkFreeCommandBuffers   = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) );
780         vkBeginCommandBuffer   = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) );
781         vkEndCommandBuffer     = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) );
782         vkResetCommandBuffer   = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) );
783         vkCmdBindPipeline      = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) );
784         vkCmdSetViewport       = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) );
785         vkCmdSetScissor        = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) );
786         vkCmdSetLineWidth      = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) );
787         vkCmdSetDepthBias      = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) );
788         vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) );
789         vkCmdSetDepthBounds    = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) );
790         vkCmdSetStencilCompareMask =
791           PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) );
792         vkCmdSetStencilWriteMask =
793           PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) );
794         vkCmdSetStencilReference =
795           PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) );
796         vkCmdBindDescriptorSets =
797           PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) );
798         vkCmdBindIndexBuffer   = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) );
799         vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) );
800         vkCmdDraw              = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) );
801         vkCmdDrawIndexed       = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) );
802         vkCmdDrawIndirect      = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) );
803         vkCmdDrawIndexedIndirect =
804           PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) );
805         vkCmdDispatch          = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) );
806         vkCmdDispatchIndirect  = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) );
807         vkCmdCopyBuffer        = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) );
808         vkCmdCopyImage         = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) );
809         vkCmdBlitImage         = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) );
810         vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) );
811         vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) );
812         vkCmdUpdateBuffer      = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) );
813         vkCmdFillBuffer        = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) );
814         vkCmdClearColorImage   = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) );
815         vkCmdClearDepthStencilImage =
816           PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) );
817         vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) );
818         vkCmdResolveImage     = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) );
819         vkCmdSetEvent         = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) );
820         vkCmdResetEvent       = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) );
821         vkCmdWaitEvents       = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) );
822         vkCmdPipelineBarrier  = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) );
823         vkCmdBeginQuery       = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) );
824         vkCmdEndQuery         = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) );
825         vkCmdResetQueryPool   = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) );
826         vkCmdWriteTimestamp   = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) );
827         vkCmdCopyQueryPoolResults =
828           PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) );
829         vkCmdPushConstants   = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) );
830         vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) );
831         vkCmdNextSubpass     = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) );
832         vkCmdEndRenderPass   = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) );
833         vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) );
834 
835         //=== VK_VERSION_1_1 ===
836         vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) );
837         vkBindImageMemory2  = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) );
838         vkGetDeviceGroupPeerMemoryFeatures =
839           PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) );
840         vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) );
841         vkCmdDispatchBase  = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) );
842         vkGetImageMemoryRequirements2 =
843           PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) );
844         vkGetBufferMemoryRequirements2 =
845           PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) );
846         vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2(
847           vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) );
848         vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) );
849         vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) );
850         vkCreateSamplerYcbcrConversion =
851           PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) );
852         vkDestroySamplerYcbcrConversion =
853           PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) );
854         vkCreateDescriptorUpdateTemplate =
855           PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) );
856         vkDestroyDescriptorUpdateTemplate =
857           PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) );
858         vkUpdateDescriptorSetWithTemplate =
859           PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) );
860         vkGetDescriptorSetLayoutSupport =
861           PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) );
862 
863         //=== VK_VERSION_1_2 ===
864         vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) );
865         vkCmdDrawIndexedIndirectCount =
866           PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) );
867         vkCreateRenderPass2   = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) );
868         vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) );
869         vkCmdNextSubpass2     = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) );
870         vkCmdEndRenderPass2   = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) );
871         vkResetQueryPool      = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) );
872         vkGetSemaphoreCounterValue =
873           PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) );
874         vkWaitSemaphores  = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) );
875         vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) );
876         vkGetBufferDeviceAddress =
877           PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) );
878         vkGetBufferOpaqueCaptureAddress =
879           PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) );
880         vkGetDeviceMemoryOpaqueCaptureAddress = PFN_vkGetDeviceMemoryOpaqueCaptureAddress(
881           vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) );
882 
883         //=== VK_AMD_buffer_marker ===
884         vkCmdWriteBufferMarkerAMD =
885           PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) );
886 
887         //=== VK_AMD_display_native_hdr ===
888         vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) );
889 
890         //=== VK_AMD_draw_indirect_count ===
891         vkCmdDrawIndirectCountAMD =
892           PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) );
893         if ( !vkCmdDrawIndirectCount )
894           vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD;
895         vkCmdDrawIndexedIndirectCountAMD =
896           PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) );
897         if ( !vkCmdDrawIndexedIndirectCount )
898           vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD;
899 
900         //=== VK_AMD_shader_info ===
901         vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) );
902 
903 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
904         //=== VK_ANDROID_external_memory_android_hardware_buffer ===
905         vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID(
906           vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) );
907         vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID(
908           vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) );
909 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
910 
911         //=== VK_EXT_buffer_device_address ===
912         vkGetBufferDeviceAddressEXT =
913           PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) );
914         if ( !vkGetBufferDeviceAddress )
915           vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT;
916 
917         //=== VK_EXT_calibrated_timestamps ===
918         vkGetCalibratedTimestampsEXT =
919           PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) );
920 
921         //=== VK_EXT_color_write_enable ===
922         vkCmdSetColorWriteEnableEXT =
923           PFN_vkCmdSetColorWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" ) );
924 
925         //=== VK_EXT_conditional_rendering ===
926         vkCmdBeginConditionalRenderingEXT =
927           PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) );
928         vkCmdEndConditionalRenderingEXT =
929           PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) );
930 
931         //=== VK_EXT_debug_marker ===
932         vkDebugMarkerSetObjectTagEXT =
933           PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) );
934         vkDebugMarkerSetObjectNameEXT =
935           PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) );
936         vkCmdDebugMarkerBeginEXT =
937           PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) );
938         vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) );
939         vkCmdDebugMarkerInsertEXT =
940           PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) );
941 
942         //=== VK_EXT_debug_utils ===
943         vkSetDebugUtilsObjectNameEXT =
944           PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) );
945         vkSetDebugUtilsObjectTagEXT =
946           PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) );
947         vkQueueBeginDebugUtilsLabelEXT =
948           PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) );
949         vkQueueEndDebugUtilsLabelEXT =
950           PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) );
951         vkQueueInsertDebugUtilsLabelEXT =
952           PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) );
953         vkCmdBeginDebugUtilsLabelEXT =
954           PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) );
955         vkCmdEndDebugUtilsLabelEXT =
956           PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) );
957         vkCmdInsertDebugUtilsLabelEXT =
958           PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) );
959 
960         //=== VK_EXT_discard_rectangles ===
961         vkCmdSetDiscardRectangleEXT =
962           PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) );
963 
964         //=== VK_EXT_display_control ===
965         vkDisplayPowerControlEXT =
966           PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) );
967         vkRegisterDeviceEventEXT =
968           PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) );
969         vkRegisterDisplayEventEXT =
970           PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) );
971         vkGetSwapchainCounterEXT =
972           PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) );
973 
974         //=== VK_EXT_extended_dynamic_state ===
975         vkCmdSetCullModeEXT  = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) );
976         vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) );
977         vkCmdSetPrimitiveTopologyEXT =
978           PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) );
979         vkCmdSetViewportWithCountEXT =
980           PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) );
981         vkCmdSetScissorWithCountEXT =
982           PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) );
983         vkCmdBindVertexBuffers2EXT =
984           PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) );
985         vkCmdSetDepthTestEnableEXT =
986           PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) );
987         vkCmdSetDepthWriteEnableEXT =
988           PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) );
989         vkCmdSetDepthCompareOpEXT =
990           PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) );
991         vkCmdSetDepthBoundsTestEnableEXT =
992           PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) );
993         vkCmdSetStencilTestEnableEXT =
994           PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) );
995         vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) );
996 
997         //=== VK_EXT_extended_dynamic_state2 ===
998         vkCmdSetPatchControlPointsEXT =
999           PFN_vkCmdSetPatchControlPointsEXT( vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" ) );
1000         vkCmdSetRasterizerDiscardEnableEXT =
1001           PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" ) );
1002         vkCmdSetDepthBiasEnableEXT =
1003           PFN_vkCmdSetDepthBiasEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" ) );
1004         vkCmdSetLogicOpEXT = PFN_vkCmdSetLogicOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" ) );
1005         vkCmdSetPrimitiveRestartEnableEXT =
1006           PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" ) );
1007 
1008         //=== VK_EXT_external_memory_host ===
1009         vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT(
1010           vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) );
1011 
1012 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1013         //=== VK_EXT_full_screen_exclusive ===
1014         vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT(
1015           vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) );
1016         vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT(
1017           vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) );
1018         vkGetDeviceGroupSurfacePresentModes2EXT = PFN_vkGetDeviceGroupSurfacePresentModes2EXT(
1019           vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) );
1020 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1021 
1022         //=== VK_EXT_hdr_metadata ===
1023         vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) );
1024 
1025         //=== VK_EXT_host_query_reset ===
1026         vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) );
1027         if ( !vkResetQueryPool )
1028           vkResetQueryPool = vkResetQueryPoolEXT;
1029 
1030         //=== VK_EXT_image_drm_format_modifier ===
1031         vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT(
1032           vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) );
1033 
1034         //=== VK_EXT_line_rasterization ===
1035         vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) );
1036 
1037         //=== VK_EXT_multi_draw ===
1038         vkCmdDrawMultiEXT = PFN_vkCmdDrawMultiEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" ) );
1039         vkCmdDrawMultiIndexedEXT =
1040           PFN_vkCmdDrawMultiIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" ) );
1041 
1042         //=== VK_EXT_pageable_device_local_memory ===
1043         vkSetDeviceMemoryPriorityEXT =
1044           PFN_vkSetDeviceMemoryPriorityEXT( vkGetDeviceProcAddr( device, "vkSetDeviceMemoryPriorityEXT" ) );
1045 
1046         //=== VK_EXT_private_data ===
1047         vkCreatePrivateDataSlotEXT =
1048           PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) );
1049         vkDestroyPrivateDataSlotEXT =
1050           PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) );
1051         vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) );
1052         vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) );
1053 
1054         //=== VK_EXT_sample_locations ===
1055         vkCmdSetSampleLocationsEXT =
1056           PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) );
1057 
1058         //=== VK_EXT_transform_feedback ===
1059         vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT(
1060           vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) );
1061         vkCmdBeginTransformFeedbackEXT =
1062           PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) );
1063         vkCmdEndTransformFeedbackEXT =
1064           PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) );
1065         vkCmdBeginQueryIndexedEXT =
1066           PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) );
1067         vkCmdEndQueryIndexedEXT =
1068           PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) );
1069         vkCmdDrawIndirectByteCountEXT =
1070           PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) );
1071 
1072         //=== VK_EXT_validation_cache ===
1073         vkCreateValidationCacheEXT =
1074           PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) );
1075         vkDestroyValidationCacheEXT =
1076           PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) );
1077         vkMergeValidationCachesEXT =
1078           PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) );
1079         vkGetValidationCacheDataEXT =
1080           PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) );
1081 
1082         //=== VK_EXT_vertex_input_dynamic_state ===
1083         vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" ) );
1084 
1085 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1086         //=== VK_FUCHSIA_buffer_collection ===
1087         vkCreateBufferCollectionFUCHSIA =
1088           PFN_vkCreateBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkCreateBufferCollectionFUCHSIA" ) );
1089         vkSetBufferCollectionImageConstraintsFUCHSIA = PFN_vkSetBufferCollectionImageConstraintsFUCHSIA(
1090           vkGetDeviceProcAddr( device, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) );
1091         vkSetBufferCollectionBufferConstraintsFUCHSIA = PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA(
1092           vkGetDeviceProcAddr( device, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) );
1093         vkDestroyBufferCollectionFUCHSIA =
1094           PFN_vkDestroyBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkDestroyBufferCollectionFUCHSIA" ) );
1095         vkGetBufferCollectionPropertiesFUCHSIA = PFN_vkGetBufferCollectionPropertiesFUCHSIA(
1096           vkGetDeviceProcAddr( device, "vkGetBufferCollectionPropertiesFUCHSIA" ) );
1097 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1098 
1099 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1100         //=== VK_FUCHSIA_external_memory ===
1101         vkGetMemoryZirconHandleFUCHSIA =
1102           PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandleFUCHSIA" ) );
1103         vkGetMemoryZirconHandlePropertiesFUCHSIA = PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA(
1104           vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) );
1105 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1106 
1107 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1108         //=== VK_FUCHSIA_external_semaphore ===
1109         vkImportSemaphoreZirconHandleFUCHSIA = PFN_vkImportSemaphoreZirconHandleFUCHSIA(
1110           vkGetDeviceProcAddr( device, "vkImportSemaphoreZirconHandleFUCHSIA" ) );
1111         vkGetSemaphoreZirconHandleFUCHSIA =
1112           PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetSemaphoreZirconHandleFUCHSIA" ) );
1113 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1114 
1115         //=== VK_GOOGLE_display_timing ===
1116         vkGetRefreshCycleDurationGOOGLE =
1117           PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) );
1118         vkGetPastPresentationTimingGOOGLE =
1119           PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) );
1120 
1121         //=== VK_HUAWEI_invocation_mask ===
1122         vkCmdBindInvocationMaskHUAWEI =
1123           PFN_vkCmdBindInvocationMaskHUAWEI( vkGetDeviceProcAddr( device, "vkCmdBindInvocationMaskHUAWEI" ) );
1124 
1125         //=== VK_HUAWEI_subpass_shading ===
1126         vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
1127           vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) );
1128         vkCmdSubpassShadingHUAWEI =
1129           PFN_vkCmdSubpassShadingHUAWEI( vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" ) );
1130 
1131         //=== VK_INTEL_performance_query ===
1132         vkInitializePerformanceApiINTEL =
1133           PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) );
1134         vkUninitializePerformanceApiINTEL =
1135           PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) );
1136         vkCmdSetPerformanceMarkerINTEL =
1137           PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) );
1138         vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkCmdSetPerformanceStreamMarkerINTEL(
1139           vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) );
1140         vkCmdSetPerformanceOverrideINTEL =
1141           PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) );
1142         vkAcquirePerformanceConfigurationINTEL = PFN_vkAcquirePerformanceConfigurationINTEL(
1143           vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) );
1144         vkReleasePerformanceConfigurationINTEL = PFN_vkReleasePerformanceConfigurationINTEL(
1145           vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) );
1146         vkQueueSetPerformanceConfigurationINTEL = PFN_vkQueueSetPerformanceConfigurationINTEL(
1147           vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) );
1148         vkGetPerformanceParameterINTEL =
1149           PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) );
1150 
1151         //=== VK_KHR_acceleration_structure ===
1152         vkCreateAccelerationStructureKHR =
1153           PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) );
1154         vkDestroyAccelerationStructureKHR =
1155           PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) );
1156         vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR(
1157           vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) );
1158         vkCmdBuildAccelerationStructuresIndirectKHR = PFN_vkCmdBuildAccelerationStructuresIndirectKHR(
1159           vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) );
1160         vkBuildAccelerationStructuresKHR =
1161           PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) );
1162         vkCopyAccelerationStructureKHR =
1163           PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) );
1164         vkCopyAccelerationStructureToMemoryKHR = PFN_vkCopyAccelerationStructureToMemoryKHR(
1165           vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) );
1166         vkCopyMemoryToAccelerationStructureKHR = PFN_vkCopyMemoryToAccelerationStructureKHR(
1167           vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) );
1168         vkWriteAccelerationStructuresPropertiesKHR = PFN_vkWriteAccelerationStructuresPropertiesKHR(
1169           vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) );
1170         vkCmdCopyAccelerationStructureKHR =
1171           PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) );
1172         vkCmdCopyAccelerationStructureToMemoryKHR = PFN_vkCmdCopyAccelerationStructureToMemoryKHR(
1173           vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) );
1174         vkCmdCopyMemoryToAccelerationStructureKHR = PFN_vkCmdCopyMemoryToAccelerationStructureKHR(
1175           vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) );
1176         vkGetAccelerationStructureDeviceAddressKHR = PFN_vkGetAccelerationStructureDeviceAddressKHR(
1177           vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) );
1178         vkCmdWriteAccelerationStructuresPropertiesKHR = PFN_vkCmdWriteAccelerationStructuresPropertiesKHR(
1179           vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) );
1180         vkGetDeviceAccelerationStructureCompatibilityKHR = PFN_vkGetDeviceAccelerationStructureCompatibilityKHR(
1181           vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) );
1182         vkGetAccelerationStructureBuildSizesKHR = PFN_vkGetAccelerationStructureBuildSizesKHR(
1183           vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) );
1184 
1185         //=== VK_KHR_bind_memory2 ===
1186         vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) );
1187         if ( !vkBindBufferMemory2 )
1188           vkBindBufferMemory2 = vkBindBufferMemory2KHR;
1189         vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) );
1190         if ( !vkBindImageMemory2 )
1191           vkBindImageMemory2 = vkBindImageMemory2KHR;
1192 
1193         //=== VK_KHR_buffer_device_address ===
1194         vkGetBufferDeviceAddressKHR =
1195           PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) );
1196         if ( !vkGetBufferDeviceAddress )
1197           vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR;
1198         vkGetBufferOpaqueCaptureAddressKHR =
1199           PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) );
1200         if ( !vkGetBufferOpaqueCaptureAddress )
1201           vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR;
1202         vkGetDeviceMemoryOpaqueCaptureAddressKHR = PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
1203           vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) );
1204         if ( !vkGetDeviceMemoryOpaqueCaptureAddress )
1205           vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR;
1206 
1207         //=== VK_KHR_copy_commands2 ===
1208         vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) );
1209         vkCmdCopyImage2KHR  = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) );
1210         vkCmdCopyBufferToImage2KHR =
1211           PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) );
1212         vkCmdCopyImageToBuffer2KHR =
1213           PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) );
1214         vkCmdBlitImage2KHR    = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) );
1215         vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) );
1216 
1217         //=== VK_KHR_create_renderpass2 ===
1218         vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) );
1219         if ( !vkCreateRenderPass2 )
1220           vkCreateRenderPass2 = vkCreateRenderPass2KHR;
1221         vkCmdBeginRenderPass2KHR =
1222           PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) );
1223         if ( !vkCmdBeginRenderPass2 )
1224           vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR;
1225         vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) );
1226         if ( !vkCmdNextSubpass2 )
1227           vkCmdNextSubpass2 = vkCmdNextSubpass2KHR;
1228         vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) );
1229         if ( !vkCmdEndRenderPass2 )
1230           vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR;
1231 
1232         //=== VK_KHR_deferred_host_operations ===
1233         vkCreateDeferredOperationKHR =
1234           PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) );
1235         vkDestroyDeferredOperationKHR =
1236           PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) );
1237         vkGetDeferredOperationMaxConcurrencyKHR = PFN_vkGetDeferredOperationMaxConcurrencyKHR(
1238           vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) );
1239         vkGetDeferredOperationResultKHR =
1240           PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) );
1241         vkDeferredOperationJoinKHR =
1242           PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) );
1243 
1244         //=== VK_KHR_descriptor_update_template ===
1245         vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR(
1246           vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) );
1247         if ( !vkCreateDescriptorUpdateTemplate )
1248           vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR;
1249         vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR(
1250           vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) );
1251         if ( !vkDestroyDescriptorUpdateTemplate )
1252           vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR;
1253         vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR(
1254           vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) );
1255         if ( !vkUpdateDescriptorSetWithTemplate )
1256           vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR;
1257         vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR(
1258           vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) );
1259 
1260         //=== VK_KHR_device_group ===
1261         vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR(
1262           vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) );
1263         if ( !vkGetDeviceGroupPeerMemoryFeatures )
1264           vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR;
1265         vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) );
1266         if ( !vkCmdSetDeviceMask )
1267           vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR;
1268         vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) );
1269         if ( !vkCmdDispatchBase )
1270           vkCmdDispatchBase = vkCmdDispatchBaseKHR;
1271         vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR(
1272           vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) );
1273         vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR(
1274           vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) );
1275         vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) );
1276 
1277         //=== VK_KHR_display_swapchain ===
1278         vkCreateSharedSwapchainsKHR =
1279           PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) );
1280 
1281         //=== VK_KHR_draw_indirect_count ===
1282         vkCmdDrawIndirectCountKHR =
1283           PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) );
1284         if ( !vkCmdDrawIndirectCount )
1285           vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR;
1286         vkCmdDrawIndexedIndirectCountKHR =
1287           PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) );
1288         if ( !vkCmdDrawIndexedIndirectCount )
1289           vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR;
1290 
1291         //=== VK_KHR_external_fence_fd ===
1292         vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) );
1293         vkGetFenceFdKHR    = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) );
1294 
1295 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1296         //=== VK_KHR_external_fence_win32 ===
1297         vkImportFenceWin32HandleKHR =
1298           PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) );
1299         vkGetFenceWin32HandleKHR =
1300           PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) );
1301 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1302 
1303         //=== VK_KHR_external_memory_fd ===
1304         vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) );
1305         vkGetMemoryFdPropertiesKHR =
1306           PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) );
1307 
1308 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1309         //=== VK_KHR_external_memory_win32 ===
1310         vkGetMemoryWin32HandleKHR =
1311           PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) );
1312         vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR(
1313           vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) );
1314 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1315 
1316         //=== VK_KHR_external_semaphore_fd ===
1317         vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) );
1318         vkGetSemaphoreFdKHR    = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) );
1319 
1320 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1321         //=== VK_KHR_external_semaphore_win32 ===
1322         vkImportSemaphoreWin32HandleKHR =
1323           PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) );
1324         vkGetSemaphoreWin32HandleKHR =
1325           PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) );
1326 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1327 
1328         //=== VK_KHR_fragment_shading_rate ===
1329         vkCmdSetFragmentShadingRateKHR =
1330           PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) );
1331 
1332         //=== VK_KHR_get_memory_requirements2 ===
1333         vkGetImageMemoryRequirements2KHR =
1334           PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) );
1335         if ( !vkGetImageMemoryRequirements2 )
1336           vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR;
1337         vkGetBufferMemoryRequirements2KHR =
1338           PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) );
1339         if ( !vkGetBufferMemoryRequirements2 )
1340           vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR;
1341         vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR(
1342           vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) );
1343         if ( !vkGetImageSparseMemoryRequirements2 )
1344           vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR;
1345 
1346         //=== VK_KHR_maintenance1 ===
1347         vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) );
1348         if ( !vkTrimCommandPool )
1349           vkTrimCommandPool = vkTrimCommandPoolKHR;
1350 
1351         //=== VK_KHR_maintenance3 ===
1352         vkGetDescriptorSetLayoutSupportKHR =
1353           PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) );
1354         if ( !vkGetDescriptorSetLayoutSupport )
1355           vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR;
1356 
1357         //=== VK_KHR_maintenance4 ===
1358         vkGetDeviceBufferMemoryRequirementsKHR = PFN_vkGetDeviceBufferMemoryRequirementsKHR(
1359           vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirementsKHR" ) );
1360         vkGetDeviceImageMemoryRequirementsKHR = PFN_vkGetDeviceImageMemoryRequirementsKHR(
1361           vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirementsKHR" ) );
1362         vkGetDeviceImageSparseMemoryRequirementsKHR = PFN_vkGetDeviceImageSparseMemoryRequirementsKHR(
1363           vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) );
1364 
1365         //=== VK_KHR_performance_query ===
1366         vkAcquireProfilingLockKHR =
1367           PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) );
1368         vkReleaseProfilingLockKHR =
1369           PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) );
1370 
1371         //=== VK_KHR_pipeline_executable_properties ===
1372         vkGetPipelineExecutablePropertiesKHR = PFN_vkGetPipelineExecutablePropertiesKHR(
1373           vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) );
1374         vkGetPipelineExecutableStatisticsKHR = PFN_vkGetPipelineExecutableStatisticsKHR(
1375           vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) );
1376         vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR(
1377           vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) );
1378 
1379         //=== VK_KHR_present_wait ===
1380         vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetDeviceProcAddr( device, "vkWaitForPresentKHR" ) );
1381 
1382         //=== VK_KHR_push_descriptor ===
1383         vkCmdPushDescriptorSetKHR =
1384           PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) );
1385 
1386         //=== VK_KHR_ray_tracing_pipeline ===
1387         vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) );
1388         vkCreateRayTracingPipelinesKHR =
1389           PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) );
1390         vkGetRayTracingShaderGroupHandlesKHR = PFN_vkGetRayTracingShaderGroupHandlesKHR(
1391           vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) );
1392         vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
1393           vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) );
1394         vkCmdTraceRaysIndirectKHR =
1395           PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) );
1396         vkGetRayTracingShaderGroupStackSizeKHR = PFN_vkGetRayTracingShaderGroupStackSizeKHR(
1397           vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) );
1398         vkCmdSetRayTracingPipelineStackSizeKHR = PFN_vkCmdSetRayTracingPipelineStackSizeKHR(
1399           vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) );
1400 
1401         //=== VK_KHR_sampler_ycbcr_conversion ===
1402         vkCreateSamplerYcbcrConversionKHR =
1403           PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) );
1404         if ( !vkCreateSamplerYcbcrConversion )
1405           vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR;
1406         vkDestroySamplerYcbcrConversionKHR =
1407           PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) );
1408         if ( !vkDestroySamplerYcbcrConversion )
1409           vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR;
1410 
1411         //=== VK_KHR_shared_presentable_image ===
1412         vkGetSwapchainStatusKHR =
1413           PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) );
1414 
1415         //=== VK_KHR_swapchain ===
1416         vkCreateSwapchainKHR  = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) );
1417         vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) );
1418         vkGetSwapchainImagesKHR =
1419           PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) );
1420         vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) );
1421         vkQueuePresentKHR     = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) );
1422 
1423         //=== VK_KHR_synchronization2 ===
1424         vkCmdSetEvent2KHR   = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) );
1425         vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) );
1426         vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) );
1427         vkCmdPipelineBarrier2KHR =
1428           PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) );
1429         vkCmdWriteTimestamp2KHR =
1430           PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) );
1431         vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) );
1432         vkCmdWriteBufferMarker2AMD =
1433           PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) );
1434         vkGetQueueCheckpointData2NV =
1435           PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) );
1436 
1437         //=== VK_KHR_timeline_semaphore ===
1438         vkGetSemaphoreCounterValueKHR =
1439           PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) );
1440         if ( !vkGetSemaphoreCounterValue )
1441           vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR;
1442         vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) );
1443         if ( !vkWaitSemaphores )
1444           vkWaitSemaphores = vkWaitSemaphoresKHR;
1445         vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) );
1446         if ( !vkSignalSemaphore )
1447           vkSignalSemaphore = vkSignalSemaphoreKHR;
1448 
1449 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1450         //=== VK_KHR_video_decode_queue ===
1451         vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdDecodeVideoKHR" ) );
1452 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1453 
1454 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1455         //=== VK_KHR_video_encode_queue ===
1456         vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) );
1457 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1458 
1459 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1460         //=== VK_KHR_video_queue ===
1461         vkCreateVideoSessionKHR =
1462           PFN_vkCreateVideoSessionKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionKHR" ) );
1463         vkDestroyVideoSessionKHR =
1464           PFN_vkDestroyVideoSessionKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionKHR" ) );
1465         vkGetVideoSessionMemoryRequirementsKHR = PFN_vkGetVideoSessionMemoryRequirementsKHR(
1466           vkGetDeviceProcAddr( device, "vkGetVideoSessionMemoryRequirementsKHR" ) );
1467         vkBindVideoSessionMemoryKHR =
1468           PFN_vkBindVideoSessionMemoryKHR( vkGetDeviceProcAddr( device, "vkBindVideoSessionMemoryKHR" ) );
1469         vkCreateVideoSessionParametersKHR =
1470           PFN_vkCreateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionParametersKHR" ) );
1471         vkUpdateVideoSessionParametersKHR =
1472           PFN_vkUpdateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkUpdateVideoSessionParametersKHR" ) );
1473         vkDestroyVideoSessionParametersKHR =
1474           PFN_vkDestroyVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionParametersKHR" ) );
1475         vkCmdBeginVideoCodingKHR =
1476           PFN_vkCmdBeginVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginVideoCodingKHR" ) );
1477         vkCmdEndVideoCodingKHR = PFN_vkCmdEndVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdEndVideoCodingKHR" ) );
1478         vkCmdControlVideoCodingKHR =
1479           PFN_vkCmdControlVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdControlVideoCodingKHR" ) );
1480 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1481 
1482         //=== VK_NVX_binary_import ===
1483         vkCreateCuModuleNVX    = PFN_vkCreateCuModuleNVX( vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" ) );
1484         vkCreateCuFunctionNVX  = PFN_vkCreateCuFunctionNVX( vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" ) );
1485         vkDestroyCuModuleNVX   = PFN_vkDestroyCuModuleNVX( vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" ) );
1486         vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" ) );
1487         vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" ) );
1488 
1489         //=== VK_NVX_image_view_handle ===
1490         vkGetImageViewHandleNVX =
1491           PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) );
1492         vkGetImageViewAddressNVX =
1493           PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) );
1494 
1495         //=== VK_NV_clip_space_w_scaling ===
1496         vkCmdSetViewportWScalingNV =
1497           PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) );
1498 
1499         //=== VK_NV_device_diagnostic_checkpoints ===
1500         vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) );
1501         vkGetQueueCheckpointDataNV =
1502           PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) );
1503 
1504         //=== VK_NV_device_generated_commands ===
1505         vkGetGeneratedCommandsMemoryRequirementsNV = PFN_vkGetGeneratedCommandsMemoryRequirementsNV(
1506           vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) );
1507         vkCmdPreprocessGeneratedCommandsNV =
1508           PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) );
1509         vkCmdExecuteGeneratedCommandsNV =
1510           PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) );
1511         vkCmdBindPipelineShaderGroupNV =
1512           PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) );
1513         vkCreateIndirectCommandsLayoutNV =
1514           PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) );
1515         vkDestroyIndirectCommandsLayoutNV =
1516           PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) );
1517 
1518         //=== VK_NV_external_memory_rdma ===
1519         vkGetMemoryRemoteAddressNV =
1520           PFN_vkGetMemoryRemoteAddressNV( vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" ) );
1521 
1522 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1523         //=== VK_NV_external_memory_win32 ===
1524         vkGetMemoryWin32HandleNV =
1525           PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) );
1526 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1527 
1528         //=== VK_NV_fragment_shading_rate_enums ===
1529         vkCmdSetFragmentShadingRateEnumNV =
1530           PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) );
1531 
1532         //=== VK_NV_mesh_shader ===
1533         vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) );
1534         vkCmdDrawMeshTasksIndirectNV =
1535           PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) );
1536         vkCmdDrawMeshTasksIndirectCountNV =
1537           PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) );
1538 
1539         //=== VK_NV_ray_tracing ===
1540         vkCreateAccelerationStructureNV =
1541           PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) );
1542         vkDestroyAccelerationStructureNV =
1543           PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) );
1544         vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV(
1545           vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) );
1546         vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV(
1547           vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) );
1548         vkCmdBuildAccelerationStructureNV =
1549           PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) );
1550         vkCmdCopyAccelerationStructureNV =
1551           PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) );
1552         vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) );
1553         vkCreateRayTracingPipelinesNV =
1554           PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) );
1555         vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV(
1556           vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) );
1557         if ( !vkGetRayTracingShaderGroupHandlesKHR )
1558           vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV;
1559         vkGetAccelerationStructureHandleNV =
1560           PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) );
1561         vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV(
1562           vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) );
1563         vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) );
1564 
1565         //=== VK_NV_scissor_exclusive ===
1566         vkCmdSetExclusiveScissorNV =
1567           PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) );
1568 
1569         //=== VK_NV_shading_rate_image ===
1570         vkCmdBindShadingRateImageNV =
1571           PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) );
1572         vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV(
1573           vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) );
1574         vkCmdSetCoarseSampleOrderNV =
1575           PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) );
1576       }
1577 
1578     public:
1579       //=== VK_VERSION_1_0 ===
1580       PFN_vkGetDeviceProcAddr                vkGetDeviceProcAddr                = 0;
1581       PFN_vkDestroyDevice                    vkDestroyDevice                    = 0;
1582       PFN_vkGetDeviceQueue                   vkGetDeviceQueue                   = 0;
1583       PFN_vkQueueSubmit                      vkQueueSubmit                      = 0;
1584       PFN_vkQueueWaitIdle                    vkQueueWaitIdle                    = 0;
1585       PFN_vkDeviceWaitIdle                   vkDeviceWaitIdle                   = 0;
1586       PFN_vkAllocateMemory                   vkAllocateMemory                   = 0;
1587       PFN_vkFreeMemory                       vkFreeMemory                       = 0;
1588       PFN_vkMapMemory                        vkMapMemory                        = 0;
1589       PFN_vkUnmapMemory                      vkUnmapMemory                      = 0;
1590       PFN_vkFlushMappedMemoryRanges          vkFlushMappedMemoryRanges          = 0;
1591       PFN_vkInvalidateMappedMemoryRanges     vkInvalidateMappedMemoryRanges     = 0;
1592       PFN_vkGetDeviceMemoryCommitment        vkGetDeviceMemoryCommitment        = 0;
1593       PFN_vkBindBufferMemory                 vkBindBufferMemory                 = 0;
1594       PFN_vkBindImageMemory                  vkBindImageMemory                  = 0;
1595       PFN_vkGetBufferMemoryRequirements      vkGetBufferMemoryRequirements      = 0;
1596       PFN_vkGetImageMemoryRequirements       vkGetImageMemoryRequirements       = 0;
1597       PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0;
1598       PFN_vkQueueBindSparse                  vkQueueBindSparse                  = 0;
1599       PFN_vkCreateFence                      vkCreateFence                      = 0;
1600       PFN_vkDestroyFence                     vkDestroyFence                     = 0;
1601       PFN_vkResetFences                      vkResetFences                      = 0;
1602       PFN_vkGetFenceStatus                   vkGetFenceStatus                   = 0;
1603       PFN_vkWaitForFences                    vkWaitForFences                    = 0;
1604       PFN_vkCreateSemaphore                  vkCreateSemaphore                  = 0;
1605       PFN_vkDestroySemaphore                 vkDestroySemaphore                 = 0;
1606       PFN_vkCreateEvent                      vkCreateEvent                      = 0;
1607       PFN_vkDestroyEvent                     vkDestroyEvent                     = 0;
1608       PFN_vkGetEventStatus                   vkGetEventStatus                   = 0;
1609       PFN_vkSetEvent                         vkSetEvent                         = 0;
1610       PFN_vkResetEvent                       vkResetEvent                       = 0;
1611       PFN_vkCreateQueryPool                  vkCreateQueryPool                  = 0;
1612       PFN_vkDestroyQueryPool                 vkDestroyQueryPool                 = 0;
1613       PFN_vkGetQueryPoolResults              vkGetQueryPoolResults              = 0;
1614       PFN_vkCreateBuffer                     vkCreateBuffer                     = 0;
1615       PFN_vkDestroyBuffer                    vkDestroyBuffer                    = 0;
1616       PFN_vkCreateBufferView                 vkCreateBufferView                 = 0;
1617       PFN_vkDestroyBufferView                vkDestroyBufferView                = 0;
1618       PFN_vkCreateImage                      vkCreateImage                      = 0;
1619       PFN_vkDestroyImage                     vkDestroyImage                     = 0;
1620       PFN_vkGetImageSubresourceLayout        vkGetImageSubresourceLayout        = 0;
1621       PFN_vkCreateImageView                  vkCreateImageView                  = 0;
1622       PFN_vkDestroyImageView                 vkDestroyImageView                 = 0;
1623       PFN_vkCreateShaderModule               vkCreateShaderModule               = 0;
1624       PFN_vkDestroyShaderModule              vkDestroyShaderModule              = 0;
1625       PFN_vkCreatePipelineCache              vkCreatePipelineCache              = 0;
1626       PFN_vkDestroyPipelineCache             vkDestroyPipelineCache             = 0;
1627       PFN_vkGetPipelineCacheData             vkGetPipelineCacheData             = 0;
1628       PFN_vkMergePipelineCaches              vkMergePipelineCaches              = 0;
1629       PFN_vkCreateGraphicsPipelines          vkCreateGraphicsPipelines          = 0;
1630       PFN_vkCreateComputePipelines           vkCreateComputePipelines           = 0;
1631       PFN_vkDestroyPipeline                  vkDestroyPipeline                  = 0;
1632       PFN_vkCreatePipelineLayout             vkCreatePipelineLayout             = 0;
1633       PFN_vkDestroyPipelineLayout            vkDestroyPipelineLayout            = 0;
1634       PFN_vkCreateSampler                    vkCreateSampler                    = 0;
1635       PFN_vkDestroySampler                   vkDestroySampler                   = 0;
1636       PFN_vkCreateDescriptorSetLayout        vkCreateDescriptorSetLayout        = 0;
1637       PFN_vkDestroyDescriptorSetLayout       vkDestroyDescriptorSetLayout       = 0;
1638       PFN_vkCreateDescriptorPool             vkCreateDescriptorPool             = 0;
1639       PFN_vkDestroyDescriptorPool            vkDestroyDescriptorPool            = 0;
1640       PFN_vkResetDescriptorPool              vkResetDescriptorPool              = 0;
1641       PFN_vkAllocateDescriptorSets           vkAllocateDescriptorSets           = 0;
1642       PFN_vkFreeDescriptorSets               vkFreeDescriptorSets               = 0;
1643       PFN_vkUpdateDescriptorSets             vkUpdateDescriptorSets             = 0;
1644       PFN_vkCreateFramebuffer                vkCreateFramebuffer                = 0;
1645       PFN_vkDestroyFramebuffer               vkDestroyFramebuffer               = 0;
1646       PFN_vkCreateRenderPass                 vkCreateRenderPass                 = 0;
1647       PFN_vkDestroyRenderPass                vkDestroyRenderPass                = 0;
1648       PFN_vkGetRenderAreaGranularity         vkGetRenderAreaGranularity         = 0;
1649       PFN_vkCreateCommandPool                vkCreateCommandPool                = 0;
1650       PFN_vkDestroyCommandPool               vkDestroyCommandPool               = 0;
1651       PFN_vkResetCommandPool                 vkResetCommandPool                 = 0;
1652       PFN_vkAllocateCommandBuffers           vkAllocateCommandBuffers           = 0;
1653       PFN_vkFreeCommandBuffers               vkFreeCommandBuffers               = 0;
1654       PFN_vkBeginCommandBuffer               vkBeginCommandBuffer               = 0;
1655       PFN_vkEndCommandBuffer                 vkEndCommandBuffer                 = 0;
1656       PFN_vkResetCommandBuffer               vkResetCommandBuffer               = 0;
1657       PFN_vkCmdBindPipeline                  vkCmdBindPipeline                  = 0;
1658       PFN_vkCmdSetViewport                   vkCmdSetViewport                   = 0;
1659       PFN_vkCmdSetScissor                    vkCmdSetScissor                    = 0;
1660       PFN_vkCmdSetLineWidth                  vkCmdSetLineWidth                  = 0;
1661       PFN_vkCmdSetDepthBias                  vkCmdSetDepthBias                  = 0;
1662       PFN_vkCmdSetBlendConstants             vkCmdSetBlendConstants             = 0;
1663       PFN_vkCmdSetDepthBounds                vkCmdSetDepthBounds                = 0;
1664       PFN_vkCmdSetStencilCompareMask         vkCmdSetStencilCompareMask         = 0;
1665       PFN_vkCmdSetStencilWriteMask           vkCmdSetStencilWriteMask           = 0;
1666       PFN_vkCmdSetStencilReference           vkCmdSetStencilReference           = 0;
1667       PFN_vkCmdBindDescriptorSets            vkCmdBindDescriptorSets            = 0;
1668       PFN_vkCmdBindIndexBuffer               vkCmdBindIndexBuffer               = 0;
1669       PFN_vkCmdBindVertexBuffers             vkCmdBindVertexBuffers             = 0;
1670       PFN_vkCmdDraw                          vkCmdDraw                          = 0;
1671       PFN_vkCmdDrawIndexed                   vkCmdDrawIndexed                   = 0;
1672       PFN_vkCmdDrawIndirect                  vkCmdDrawIndirect                  = 0;
1673       PFN_vkCmdDrawIndexedIndirect           vkCmdDrawIndexedIndirect           = 0;
1674       PFN_vkCmdDispatch                      vkCmdDispatch                      = 0;
1675       PFN_vkCmdDispatchIndirect              vkCmdDispatchIndirect              = 0;
1676       PFN_vkCmdCopyBuffer                    vkCmdCopyBuffer                    = 0;
1677       PFN_vkCmdCopyImage                     vkCmdCopyImage                     = 0;
1678       PFN_vkCmdBlitImage                     vkCmdBlitImage                     = 0;
1679       PFN_vkCmdCopyBufferToImage             vkCmdCopyBufferToImage             = 0;
1680       PFN_vkCmdCopyImageToBuffer             vkCmdCopyImageToBuffer             = 0;
1681       PFN_vkCmdUpdateBuffer                  vkCmdUpdateBuffer                  = 0;
1682       PFN_vkCmdFillBuffer                    vkCmdFillBuffer                    = 0;
1683       PFN_vkCmdClearColorImage               vkCmdClearColorImage               = 0;
1684       PFN_vkCmdClearDepthStencilImage        vkCmdClearDepthStencilImage        = 0;
1685       PFN_vkCmdClearAttachments              vkCmdClearAttachments              = 0;
1686       PFN_vkCmdResolveImage                  vkCmdResolveImage                  = 0;
1687       PFN_vkCmdSetEvent                      vkCmdSetEvent                      = 0;
1688       PFN_vkCmdResetEvent                    vkCmdResetEvent                    = 0;
1689       PFN_vkCmdWaitEvents                    vkCmdWaitEvents                    = 0;
1690       PFN_vkCmdPipelineBarrier               vkCmdPipelineBarrier               = 0;
1691       PFN_vkCmdBeginQuery                    vkCmdBeginQuery                    = 0;
1692       PFN_vkCmdEndQuery                      vkCmdEndQuery                      = 0;
1693       PFN_vkCmdResetQueryPool                vkCmdResetQueryPool                = 0;
1694       PFN_vkCmdWriteTimestamp                vkCmdWriteTimestamp                = 0;
1695       PFN_vkCmdCopyQueryPoolResults          vkCmdCopyQueryPoolResults          = 0;
1696       PFN_vkCmdPushConstants                 vkCmdPushConstants                 = 0;
1697       PFN_vkCmdBeginRenderPass               vkCmdBeginRenderPass               = 0;
1698       PFN_vkCmdNextSubpass                   vkCmdNextSubpass                   = 0;
1699       PFN_vkCmdEndRenderPass                 vkCmdEndRenderPass                 = 0;
1700       PFN_vkCmdExecuteCommands               vkCmdExecuteCommands               = 0;
1701 
1702       //=== VK_VERSION_1_1 ===
1703       PFN_vkBindBufferMemory2                 vkBindBufferMemory2                 = 0;
1704       PFN_vkBindImageMemory2                  vkBindImageMemory2                  = 0;
1705       PFN_vkGetDeviceGroupPeerMemoryFeatures  vkGetDeviceGroupPeerMemoryFeatures  = 0;
1706       PFN_vkCmdSetDeviceMask                  vkCmdSetDeviceMask                  = 0;
1707       PFN_vkCmdDispatchBase                   vkCmdDispatchBase                   = 0;
1708       PFN_vkGetImageMemoryRequirements2       vkGetImageMemoryRequirements2       = 0;
1709       PFN_vkGetBufferMemoryRequirements2      vkGetBufferMemoryRequirements2      = 0;
1710       PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0;
1711       PFN_vkTrimCommandPool                   vkTrimCommandPool                   = 0;
1712       PFN_vkGetDeviceQueue2                   vkGetDeviceQueue2                   = 0;
1713       PFN_vkCreateSamplerYcbcrConversion      vkCreateSamplerYcbcrConversion      = 0;
1714       PFN_vkDestroySamplerYcbcrConversion     vkDestroySamplerYcbcrConversion     = 0;
1715       PFN_vkCreateDescriptorUpdateTemplate    vkCreateDescriptorUpdateTemplate    = 0;
1716       PFN_vkDestroyDescriptorUpdateTemplate   vkDestroyDescriptorUpdateTemplate   = 0;
1717       PFN_vkUpdateDescriptorSetWithTemplate   vkUpdateDescriptorSetWithTemplate   = 0;
1718       PFN_vkGetDescriptorSetLayoutSupport     vkGetDescriptorSetLayoutSupport     = 0;
1719 
1720       //=== VK_VERSION_1_2 ===
1721       PFN_vkCmdDrawIndirectCount                vkCmdDrawIndirectCount                = 0;
1722       PFN_vkCmdDrawIndexedIndirectCount         vkCmdDrawIndexedIndirectCount         = 0;
1723       PFN_vkCreateRenderPass2                   vkCreateRenderPass2                   = 0;
1724       PFN_vkCmdBeginRenderPass2                 vkCmdBeginRenderPass2                 = 0;
1725       PFN_vkCmdNextSubpass2                     vkCmdNextSubpass2                     = 0;
1726       PFN_vkCmdEndRenderPass2                   vkCmdEndRenderPass2                   = 0;
1727       PFN_vkResetQueryPool                      vkResetQueryPool                      = 0;
1728       PFN_vkGetSemaphoreCounterValue            vkGetSemaphoreCounterValue            = 0;
1729       PFN_vkWaitSemaphores                      vkWaitSemaphores                      = 0;
1730       PFN_vkSignalSemaphore                     vkSignalSemaphore                     = 0;
1731       PFN_vkGetBufferDeviceAddress              vkGetBufferDeviceAddress              = 0;
1732       PFN_vkGetBufferOpaqueCaptureAddress       vkGetBufferOpaqueCaptureAddress       = 0;
1733       PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress = 0;
1734 
1735       //=== VK_AMD_buffer_marker ===
1736       PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0;
1737 
1738       //=== VK_AMD_display_native_hdr ===
1739       PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0;
1740 
1741       //=== VK_AMD_draw_indirect_count ===
1742       PFN_vkCmdDrawIndirectCountAMD        vkCmdDrawIndirectCountAMD        = 0;
1743       PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0;
1744 
1745       //=== VK_AMD_shader_info ===
1746       PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0;
1747 
1748 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
1749       //=== VK_ANDROID_external_memory_android_hardware_buffer ===
1750       PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0;
1751       PFN_vkGetMemoryAndroidHardwareBufferANDROID     vkGetMemoryAndroidHardwareBufferANDROID     = 0;
1752 #  else
1753       PFN_dummy vkGetAndroidHardwareBufferPropertiesANDROID_placeholder       = 0;
1754       PFN_dummy vkGetMemoryAndroidHardwareBufferANDROID_placeholder           = 0;
1755 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1756 
1757       //=== VK_EXT_buffer_device_address ===
1758       PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0;
1759 
1760       //=== VK_EXT_calibrated_timestamps ===
1761       PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0;
1762 
1763       //=== VK_EXT_color_write_enable ===
1764       PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT = 0;
1765 
1766       //=== VK_EXT_conditional_rendering ===
1767       PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0;
1768       PFN_vkCmdEndConditionalRenderingEXT   vkCmdEndConditionalRenderingEXT   = 0;
1769 
1770       //=== VK_EXT_debug_marker ===
1771       PFN_vkDebugMarkerSetObjectTagEXT  vkDebugMarkerSetObjectTagEXT  = 0;
1772       PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0;
1773       PFN_vkCmdDebugMarkerBeginEXT      vkCmdDebugMarkerBeginEXT      = 0;
1774       PFN_vkCmdDebugMarkerEndEXT        vkCmdDebugMarkerEndEXT        = 0;
1775       PFN_vkCmdDebugMarkerInsertEXT     vkCmdDebugMarkerInsertEXT     = 0;
1776 
1777       //=== VK_EXT_debug_utils ===
1778       PFN_vkSetDebugUtilsObjectNameEXT    vkSetDebugUtilsObjectNameEXT    = 0;
1779       PFN_vkSetDebugUtilsObjectTagEXT     vkSetDebugUtilsObjectTagEXT     = 0;
1780       PFN_vkQueueBeginDebugUtilsLabelEXT  vkQueueBeginDebugUtilsLabelEXT  = 0;
1781       PFN_vkQueueEndDebugUtilsLabelEXT    vkQueueEndDebugUtilsLabelEXT    = 0;
1782       PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0;
1783       PFN_vkCmdBeginDebugUtilsLabelEXT    vkCmdBeginDebugUtilsLabelEXT    = 0;
1784       PFN_vkCmdEndDebugUtilsLabelEXT      vkCmdEndDebugUtilsLabelEXT      = 0;
1785       PFN_vkCmdInsertDebugUtilsLabelEXT   vkCmdInsertDebugUtilsLabelEXT   = 0;
1786 
1787       //=== VK_EXT_discard_rectangles ===
1788       PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0;
1789 
1790       //=== VK_EXT_display_control ===
1791       PFN_vkDisplayPowerControlEXT  vkDisplayPowerControlEXT  = 0;
1792       PFN_vkRegisterDeviceEventEXT  vkRegisterDeviceEventEXT  = 0;
1793       PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0;
1794       PFN_vkGetSwapchainCounterEXT  vkGetSwapchainCounterEXT  = 0;
1795 
1796       //=== VK_EXT_extended_dynamic_state ===
1797       PFN_vkCmdSetCullModeEXT              vkCmdSetCullModeEXT              = 0;
1798       PFN_vkCmdSetFrontFaceEXT             vkCmdSetFrontFaceEXT             = 0;
1799       PFN_vkCmdSetPrimitiveTopologyEXT     vkCmdSetPrimitiveTopologyEXT     = 0;
1800       PFN_vkCmdSetViewportWithCountEXT     vkCmdSetViewportWithCountEXT     = 0;
1801       PFN_vkCmdSetScissorWithCountEXT      vkCmdSetScissorWithCountEXT      = 0;
1802       PFN_vkCmdBindVertexBuffers2EXT       vkCmdBindVertexBuffers2EXT       = 0;
1803       PFN_vkCmdSetDepthTestEnableEXT       vkCmdSetDepthTestEnableEXT       = 0;
1804       PFN_vkCmdSetDepthWriteEnableEXT      vkCmdSetDepthWriteEnableEXT      = 0;
1805       PFN_vkCmdSetDepthCompareOpEXT        vkCmdSetDepthCompareOpEXT        = 0;
1806       PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT = 0;
1807       PFN_vkCmdSetStencilTestEnableEXT     vkCmdSetStencilTestEnableEXT     = 0;
1808       PFN_vkCmdSetStencilOpEXT             vkCmdSetStencilOpEXT             = 0;
1809 
1810       //=== VK_EXT_extended_dynamic_state2 ===
1811       PFN_vkCmdSetPatchControlPointsEXT      vkCmdSetPatchControlPointsEXT      = 0;
1812       PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT = 0;
1813       PFN_vkCmdSetDepthBiasEnableEXT         vkCmdSetDepthBiasEnableEXT         = 0;
1814       PFN_vkCmdSetLogicOpEXT                 vkCmdSetLogicOpEXT                 = 0;
1815       PFN_vkCmdSetPrimitiveRestartEnableEXT  vkCmdSetPrimitiveRestartEnableEXT  = 0;
1816 
1817       //=== VK_EXT_external_memory_host ===
1818       PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0;
1819 
1820 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1821       //=== VK_EXT_full_screen_exclusive ===
1822       PFN_vkAcquireFullScreenExclusiveModeEXT     vkAcquireFullScreenExclusiveModeEXT     = 0;
1823       PFN_vkReleaseFullScreenExclusiveModeEXT     vkReleaseFullScreenExclusiveModeEXT     = 0;
1824       PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0;
1825 #  else
1826       PFN_dummy vkAcquireFullScreenExclusiveModeEXT_placeholder               = 0;
1827       PFN_dummy vkReleaseFullScreenExclusiveModeEXT_placeholder               = 0;
1828       PFN_dummy vkGetDeviceGroupSurfacePresentModes2EXT_placeholder           = 0;
1829 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1830 
1831       //=== VK_EXT_hdr_metadata ===
1832       PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0;
1833 
1834       //=== VK_EXT_host_query_reset ===
1835       PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0;
1836 
1837       //=== VK_EXT_image_drm_format_modifier ===
1838       PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0;
1839 
1840       //=== VK_EXT_line_rasterization ===
1841       PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0;
1842 
1843       //=== VK_EXT_multi_draw ===
1844       PFN_vkCmdDrawMultiEXT        vkCmdDrawMultiEXT        = 0;
1845       PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT = 0;
1846 
1847       //=== VK_EXT_pageable_device_local_memory ===
1848       PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT = 0;
1849 
1850       //=== VK_EXT_private_data ===
1851       PFN_vkCreatePrivateDataSlotEXT  vkCreatePrivateDataSlotEXT  = 0;
1852       PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT = 0;
1853       PFN_vkSetPrivateDataEXT         vkSetPrivateDataEXT         = 0;
1854       PFN_vkGetPrivateDataEXT         vkGetPrivateDataEXT         = 0;
1855 
1856       //=== VK_EXT_sample_locations ===
1857       PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0;
1858 
1859       //=== VK_EXT_transform_feedback ===
1860       PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0;
1861       PFN_vkCmdBeginTransformFeedbackEXT       vkCmdBeginTransformFeedbackEXT       = 0;
1862       PFN_vkCmdEndTransformFeedbackEXT         vkCmdEndTransformFeedbackEXT         = 0;
1863       PFN_vkCmdBeginQueryIndexedEXT            vkCmdBeginQueryIndexedEXT            = 0;
1864       PFN_vkCmdEndQueryIndexedEXT              vkCmdEndQueryIndexedEXT              = 0;
1865       PFN_vkCmdDrawIndirectByteCountEXT        vkCmdDrawIndirectByteCountEXT        = 0;
1866 
1867       //=== VK_EXT_validation_cache ===
1868       PFN_vkCreateValidationCacheEXT  vkCreateValidationCacheEXT  = 0;
1869       PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0;
1870       PFN_vkMergeValidationCachesEXT  vkMergeValidationCachesEXT  = 0;
1871       PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0;
1872 
1873       //=== VK_EXT_vertex_input_dynamic_state ===
1874       PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT = 0;
1875 
1876 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1877       //=== VK_FUCHSIA_buffer_collection ===
1878       PFN_vkCreateBufferCollectionFUCHSIA               vkCreateBufferCollectionFUCHSIA               = 0;
1879       PFN_vkSetBufferCollectionImageConstraintsFUCHSIA  vkSetBufferCollectionImageConstraintsFUCHSIA  = 0;
1880       PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA = 0;
1881       PFN_vkDestroyBufferCollectionFUCHSIA              vkDestroyBufferCollectionFUCHSIA              = 0;
1882       PFN_vkGetBufferCollectionPropertiesFUCHSIA        vkGetBufferCollectionPropertiesFUCHSIA        = 0;
1883 #  else
1884       PFN_dummy vkCreateBufferCollectionFUCHSIA_placeholder                   = 0;
1885       PFN_dummy vkSetBufferCollectionImageConstraintsFUCHSIA_placeholder      = 0;
1886       PFN_dummy vkSetBufferCollectionBufferConstraintsFUCHSIA_placeholder     = 0;
1887       PFN_dummy vkDestroyBufferCollectionFUCHSIA_placeholder                  = 0;
1888       PFN_dummy vkGetBufferCollectionPropertiesFUCHSIA_placeholder            = 0;
1889 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1890 
1891 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1892       //=== VK_FUCHSIA_external_memory ===
1893       PFN_vkGetMemoryZirconHandleFUCHSIA           vkGetMemoryZirconHandleFUCHSIA           = 0;
1894       PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA = 0;
1895 #  else
1896       PFN_dummy vkGetMemoryZirconHandleFUCHSIA_placeholder                    = 0;
1897       PFN_dummy vkGetMemoryZirconHandlePropertiesFUCHSIA_placeholder          = 0;
1898 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1899 
1900 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1901       //=== VK_FUCHSIA_external_semaphore ===
1902       PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA = 0;
1903       PFN_vkGetSemaphoreZirconHandleFUCHSIA    vkGetSemaphoreZirconHandleFUCHSIA    = 0;
1904 #  else
1905       PFN_dummy vkImportSemaphoreZirconHandleFUCHSIA_placeholder              = 0;
1906       PFN_dummy vkGetSemaphoreZirconHandleFUCHSIA_placeholder                 = 0;
1907 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1908 
1909       //=== VK_GOOGLE_display_timing ===
1910       PFN_vkGetRefreshCycleDurationGOOGLE   vkGetRefreshCycleDurationGOOGLE   = 0;
1911       PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0;
1912 
1913       //=== VK_HUAWEI_invocation_mask ===
1914       PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI = 0;
1915 
1916       //=== VK_HUAWEI_subpass_shading ===
1917       PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 0;
1918       PFN_vkCmdSubpassShadingHUAWEI                       vkCmdSubpassShadingHUAWEI                       = 0;
1919 
1920       //=== VK_INTEL_performance_query ===
1921       PFN_vkInitializePerformanceApiINTEL         vkInitializePerformanceApiINTEL         = 0;
1922       PFN_vkUninitializePerformanceApiINTEL       vkUninitializePerformanceApiINTEL       = 0;
1923       PFN_vkCmdSetPerformanceMarkerINTEL          vkCmdSetPerformanceMarkerINTEL          = 0;
1924       PFN_vkCmdSetPerformanceStreamMarkerINTEL    vkCmdSetPerformanceStreamMarkerINTEL    = 0;
1925       PFN_vkCmdSetPerformanceOverrideINTEL        vkCmdSetPerformanceOverrideINTEL        = 0;
1926       PFN_vkAcquirePerformanceConfigurationINTEL  vkAcquirePerformanceConfigurationINTEL  = 0;
1927       PFN_vkReleasePerformanceConfigurationINTEL  vkReleasePerformanceConfigurationINTEL  = 0;
1928       PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0;
1929       PFN_vkGetPerformanceParameterINTEL          vkGetPerformanceParameterINTEL          = 0;
1930 
1931       //=== VK_KHR_acceleration_structure ===
1932       PFN_vkCreateAccelerationStructureKHR                 vkCreateAccelerationStructureKHR                 = 0;
1933       PFN_vkDestroyAccelerationStructureKHR                vkDestroyAccelerationStructureKHR                = 0;
1934       PFN_vkCmdBuildAccelerationStructuresKHR              vkCmdBuildAccelerationStructuresKHR              = 0;
1935       PFN_vkCmdBuildAccelerationStructuresIndirectKHR      vkCmdBuildAccelerationStructuresIndirectKHR      = 0;
1936       PFN_vkBuildAccelerationStructuresKHR                 vkBuildAccelerationStructuresKHR                 = 0;
1937       PFN_vkCopyAccelerationStructureKHR                   vkCopyAccelerationStructureKHR                   = 0;
1938       PFN_vkCopyAccelerationStructureToMemoryKHR           vkCopyAccelerationStructureToMemoryKHR           = 0;
1939       PFN_vkCopyMemoryToAccelerationStructureKHR           vkCopyMemoryToAccelerationStructureKHR           = 0;
1940       PFN_vkWriteAccelerationStructuresPropertiesKHR       vkWriteAccelerationStructuresPropertiesKHR       = 0;
1941       PFN_vkCmdCopyAccelerationStructureKHR                vkCmdCopyAccelerationStructureKHR                = 0;
1942       PFN_vkCmdCopyAccelerationStructureToMemoryKHR        vkCmdCopyAccelerationStructureToMemoryKHR        = 0;
1943       PFN_vkCmdCopyMemoryToAccelerationStructureKHR        vkCmdCopyMemoryToAccelerationStructureKHR        = 0;
1944       PFN_vkGetAccelerationStructureDeviceAddressKHR       vkGetAccelerationStructureDeviceAddressKHR       = 0;
1945       PFN_vkCmdWriteAccelerationStructuresPropertiesKHR    vkCmdWriteAccelerationStructuresPropertiesKHR    = 0;
1946       PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0;
1947       PFN_vkGetAccelerationStructureBuildSizesKHR          vkGetAccelerationStructureBuildSizesKHR          = 0;
1948 
1949       //=== VK_KHR_bind_memory2 ===
1950       PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0;
1951       PFN_vkBindImageMemory2KHR  vkBindImageMemory2KHR  = 0;
1952 
1953       //=== VK_KHR_buffer_device_address ===
1954       PFN_vkGetBufferDeviceAddressKHR              vkGetBufferDeviceAddressKHR              = 0;
1955       PFN_vkGetBufferOpaqueCaptureAddressKHR       vkGetBufferOpaqueCaptureAddressKHR       = 0;
1956       PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0;
1957 
1958       //=== VK_KHR_copy_commands2 ===
1959       PFN_vkCmdCopyBuffer2KHR        vkCmdCopyBuffer2KHR        = 0;
1960       PFN_vkCmdCopyImage2KHR         vkCmdCopyImage2KHR         = 0;
1961       PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR = 0;
1962       PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR = 0;
1963       PFN_vkCmdBlitImage2KHR         vkCmdBlitImage2KHR         = 0;
1964       PFN_vkCmdResolveImage2KHR      vkCmdResolveImage2KHR      = 0;
1965 
1966       //=== VK_KHR_create_renderpass2 ===
1967       PFN_vkCreateRenderPass2KHR   vkCreateRenderPass2KHR   = 0;
1968       PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0;
1969       PFN_vkCmdNextSubpass2KHR     vkCmdNextSubpass2KHR     = 0;
1970       PFN_vkCmdEndRenderPass2KHR   vkCmdEndRenderPass2KHR   = 0;
1971 
1972       //=== VK_KHR_deferred_host_operations ===
1973       PFN_vkCreateDeferredOperationKHR            vkCreateDeferredOperationKHR            = 0;
1974       PFN_vkDestroyDeferredOperationKHR           vkDestroyDeferredOperationKHR           = 0;
1975       PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR = 0;
1976       PFN_vkGetDeferredOperationResultKHR         vkGetDeferredOperationResultKHR         = 0;
1977       PFN_vkDeferredOperationJoinKHR              vkDeferredOperationJoinKHR              = 0;
1978 
1979       //=== VK_KHR_descriptor_update_template ===
1980       PFN_vkCreateDescriptorUpdateTemplateKHR   vkCreateDescriptorUpdateTemplateKHR   = 0;
1981       PFN_vkDestroyDescriptorUpdateTemplateKHR  vkDestroyDescriptorUpdateTemplateKHR  = 0;
1982       PFN_vkUpdateDescriptorSetWithTemplateKHR  vkUpdateDescriptorSetWithTemplateKHR  = 0;
1983       PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0;
1984 
1985       //=== VK_KHR_device_group ===
1986       PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR  vkGetDeviceGroupPeerMemoryFeaturesKHR  = 0;
1987       PFN_vkCmdSetDeviceMaskKHR                  vkCmdSetDeviceMaskKHR                  = 0;
1988       PFN_vkCmdDispatchBaseKHR                   vkCmdDispatchBaseKHR                   = 0;
1989       PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0;
1990       PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0;
1991       PFN_vkAcquireNextImage2KHR                 vkAcquireNextImage2KHR                 = 0;
1992 
1993       //=== VK_KHR_display_swapchain ===
1994       PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0;
1995 
1996       //=== VK_KHR_draw_indirect_count ===
1997       PFN_vkCmdDrawIndirectCountKHR        vkCmdDrawIndirectCountKHR        = 0;
1998       PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0;
1999 
2000       //=== VK_KHR_external_fence_fd ===
2001       PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0;
2002       PFN_vkGetFenceFdKHR    vkGetFenceFdKHR    = 0;
2003 
2004 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2005       //=== VK_KHR_external_fence_win32 ===
2006       PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0;
2007       PFN_vkGetFenceWin32HandleKHR    vkGetFenceWin32HandleKHR    = 0;
2008 #  else
2009       PFN_dummy vkImportFenceWin32HandleKHR_placeholder                       = 0;
2010       PFN_dummy vkGetFenceWin32HandleKHR_placeholder                          = 0;
2011 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2012 
2013       //=== VK_KHR_external_memory_fd ===
2014       PFN_vkGetMemoryFdKHR           vkGetMemoryFdKHR           = 0;
2015       PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0;
2016 
2017 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2018       //=== VK_KHR_external_memory_win32 ===
2019       PFN_vkGetMemoryWin32HandleKHR           vkGetMemoryWin32HandleKHR           = 0;
2020       PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0;
2021 #  else
2022       PFN_dummy vkGetMemoryWin32HandleKHR_placeholder                         = 0;
2023       PFN_dummy vkGetMemoryWin32HandlePropertiesKHR_placeholder               = 0;
2024 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2025 
2026       //=== VK_KHR_external_semaphore_fd ===
2027       PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0;
2028       PFN_vkGetSemaphoreFdKHR    vkGetSemaphoreFdKHR    = 0;
2029 
2030 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2031       //=== VK_KHR_external_semaphore_win32 ===
2032       PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0;
2033       PFN_vkGetSemaphoreWin32HandleKHR    vkGetSemaphoreWin32HandleKHR    = 0;
2034 #  else
2035       PFN_dummy vkImportSemaphoreWin32HandleKHR_placeholder                   = 0;
2036       PFN_dummy vkGetSemaphoreWin32HandleKHR_placeholder                      = 0;
2037 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2038 
2039       //=== VK_KHR_fragment_shading_rate ===
2040       PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR = 0;
2041 
2042       //=== VK_KHR_get_memory_requirements2 ===
2043       PFN_vkGetImageMemoryRequirements2KHR       vkGetImageMemoryRequirements2KHR       = 0;
2044       PFN_vkGetBufferMemoryRequirements2KHR      vkGetBufferMemoryRequirements2KHR      = 0;
2045       PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0;
2046 
2047       //=== VK_KHR_maintenance1 ===
2048       PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0;
2049 
2050       //=== VK_KHR_maintenance3 ===
2051       PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0;
2052 
2053       //=== VK_KHR_maintenance4 ===
2054       PFN_vkGetDeviceBufferMemoryRequirementsKHR      vkGetDeviceBufferMemoryRequirementsKHR      = 0;
2055       PFN_vkGetDeviceImageMemoryRequirementsKHR       vkGetDeviceImageMemoryRequirementsKHR       = 0;
2056       PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR = 0;
2057 
2058       //=== VK_KHR_performance_query ===
2059       PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR = 0;
2060       PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR = 0;
2061 
2062       //=== VK_KHR_pipeline_executable_properties ===
2063       PFN_vkGetPipelineExecutablePropertiesKHR              vkGetPipelineExecutablePropertiesKHR              = 0;
2064       PFN_vkGetPipelineExecutableStatisticsKHR              vkGetPipelineExecutableStatisticsKHR              = 0;
2065       PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0;
2066 
2067       //=== VK_KHR_present_wait ===
2068       PFN_vkWaitForPresentKHR vkWaitForPresentKHR = 0;
2069 
2070       //=== VK_KHR_push_descriptor ===
2071       PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0;
2072 
2073       //=== VK_KHR_ray_tracing_pipeline ===
2074       PFN_vkCmdTraceRaysKHR                                 vkCmdTraceRaysKHR                                 = 0;
2075       PFN_vkCreateRayTracingPipelinesKHR                    vkCreateRayTracingPipelinesKHR                    = 0;
2076       PFN_vkGetRayTracingShaderGroupHandlesKHR              vkGetRayTracingShaderGroupHandlesKHR              = 0;
2077       PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0;
2078       PFN_vkCmdTraceRaysIndirectKHR                         vkCmdTraceRaysIndirectKHR                         = 0;
2079       PFN_vkGetRayTracingShaderGroupStackSizeKHR            vkGetRayTracingShaderGroupStackSizeKHR            = 0;
2080       PFN_vkCmdSetRayTracingPipelineStackSizeKHR            vkCmdSetRayTracingPipelineStackSizeKHR            = 0;
2081 
2082       //=== VK_KHR_sampler_ycbcr_conversion ===
2083       PFN_vkCreateSamplerYcbcrConversionKHR  vkCreateSamplerYcbcrConversionKHR  = 0;
2084       PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0;
2085 
2086       //=== VK_KHR_shared_presentable_image ===
2087       PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0;
2088 
2089       //=== VK_KHR_swapchain ===
2090       PFN_vkCreateSwapchainKHR    vkCreateSwapchainKHR    = 0;
2091       PFN_vkDestroySwapchainKHR   vkDestroySwapchainKHR   = 0;
2092       PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0;
2093       PFN_vkAcquireNextImageKHR   vkAcquireNextImageKHR   = 0;
2094       PFN_vkQueuePresentKHR       vkQueuePresentKHR       = 0;
2095 
2096       //=== VK_KHR_synchronization2 ===
2097       PFN_vkCmdSetEvent2KHR           vkCmdSetEvent2KHR           = 0;
2098       PFN_vkCmdResetEvent2KHR         vkCmdResetEvent2KHR         = 0;
2099       PFN_vkCmdWaitEvents2KHR         vkCmdWaitEvents2KHR         = 0;
2100       PFN_vkCmdPipelineBarrier2KHR    vkCmdPipelineBarrier2KHR    = 0;
2101       PFN_vkCmdWriteTimestamp2KHR     vkCmdWriteTimestamp2KHR     = 0;
2102       PFN_vkQueueSubmit2KHR           vkQueueSubmit2KHR           = 0;
2103       PFN_vkCmdWriteBufferMarker2AMD  vkCmdWriteBufferMarker2AMD  = 0;
2104       PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV = 0;
2105 
2106       //=== VK_KHR_timeline_semaphore ===
2107       PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR = 0;
2108       PFN_vkWaitSemaphoresKHR           vkWaitSemaphoresKHR           = 0;
2109       PFN_vkSignalSemaphoreKHR          vkSignalSemaphoreKHR          = 0;
2110 
2111 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
2112       //=== VK_KHR_video_decode_queue ===
2113       PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR = 0;
2114 #  else
2115       PFN_dummy vkCmdDecodeVideoKHR_placeholder                               = 0;
2116 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
2117 
2118 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
2119       //=== VK_KHR_video_encode_queue ===
2120       PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR = 0;
2121 #  else
2122       PFN_dummy vkCmdEncodeVideoKHR_placeholder                               = 0;
2123 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
2124 
2125 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
2126       //=== VK_KHR_video_queue ===
2127       PFN_vkCreateVideoSessionKHR                vkCreateVideoSessionKHR                = 0;
2128       PFN_vkDestroyVideoSessionKHR               vkDestroyVideoSessionKHR               = 0;
2129       PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR = 0;
2130       PFN_vkBindVideoSessionMemoryKHR            vkBindVideoSessionMemoryKHR            = 0;
2131       PFN_vkCreateVideoSessionParametersKHR      vkCreateVideoSessionParametersKHR      = 0;
2132       PFN_vkUpdateVideoSessionParametersKHR      vkUpdateVideoSessionParametersKHR      = 0;
2133       PFN_vkDestroyVideoSessionParametersKHR     vkDestroyVideoSessionParametersKHR     = 0;
2134       PFN_vkCmdBeginVideoCodingKHR               vkCmdBeginVideoCodingKHR               = 0;
2135       PFN_vkCmdEndVideoCodingKHR                 vkCmdEndVideoCodingKHR                 = 0;
2136       PFN_vkCmdControlVideoCodingKHR             vkCmdControlVideoCodingKHR             = 0;
2137 #  else
2138       PFN_dummy vkCreateVideoSessionKHR_placeholder                           = 0;
2139       PFN_dummy vkDestroyVideoSessionKHR_placeholder                          = 0;
2140       PFN_dummy vkGetVideoSessionMemoryRequirementsKHR_placeholder            = 0;
2141       PFN_dummy vkBindVideoSessionMemoryKHR_placeholder                       = 0;
2142       PFN_dummy vkCreateVideoSessionParametersKHR_placeholder                 = 0;
2143       PFN_dummy vkUpdateVideoSessionParametersKHR_placeholder                 = 0;
2144       PFN_dummy vkDestroyVideoSessionParametersKHR_placeholder                = 0;
2145       PFN_dummy vkCmdBeginVideoCodingKHR_placeholder                          = 0;
2146       PFN_dummy vkCmdEndVideoCodingKHR_placeholder                            = 0;
2147       PFN_dummy vkCmdControlVideoCodingKHR_placeholder                        = 0;
2148 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
2149 
2150       //=== VK_NVX_binary_import ===
2151       PFN_vkCreateCuModuleNVX    vkCreateCuModuleNVX    = 0;
2152       PFN_vkCreateCuFunctionNVX  vkCreateCuFunctionNVX  = 0;
2153       PFN_vkDestroyCuModuleNVX   vkDestroyCuModuleNVX   = 0;
2154       PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX = 0;
2155       PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX = 0;
2156 
2157       //=== VK_NVX_image_view_handle ===
2158       PFN_vkGetImageViewHandleNVX  vkGetImageViewHandleNVX  = 0;
2159       PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX = 0;
2160 
2161       //=== VK_NV_clip_space_w_scaling ===
2162       PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0;
2163 
2164       //=== VK_NV_device_diagnostic_checkpoints ===
2165       PFN_vkCmdSetCheckpointNV       vkCmdSetCheckpointNV       = 0;
2166       PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0;
2167 
2168       //=== VK_NV_device_generated_commands ===
2169       PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0;
2170       PFN_vkCmdPreprocessGeneratedCommandsNV         vkCmdPreprocessGeneratedCommandsNV         = 0;
2171       PFN_vkCmdExecuteGeneratedCommandsNV            vkCmdExecuteGeneratedCommandsNV            = 0;
2172       PFN_vkCmdBindPipelineShaderGroupNV             vkCmdBindPipelineShaderGroupNV             = 0;
2173       PFN_vkCreateIndirectCommandsLayoutNV           vkCreateIndirectCommandsLayoutNV           = 0;
2174       PFN_vkDestroyIndirectCommandsLayoutNV          vkDestroyIndirectCommandsLayoutNV          = 0;
2175 
2176       //=== VK_NV_external_memory_rdma ===
2177       PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV = 0;
2178 
2179 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2180       //=== VK_NV_external_memory_win32 ===
2181       PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0;
2182 #  else
2183       PFN_dummy vkGetMemoryWin32HandleNV_placeholder                          = 0;
2184 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2185 
2186       //=== VK_NV_fragment_shading_rate_enums ===
2187       PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV = 0;
2188 
2189       //=== VK_NV_mesh_shader ===
2190       PFN_vkCmdDrawMeshTasksNV              vkCmdDrawMeshTasksNV              = 0;
2191       PFN_vkCmdDrawMeshTasksIndirectNV      vkCmdDrawMeshTasksIndirectNV      = 0;
2192       PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0;
2193 
2194       //=== VK_NV_ray_tracing ===
2195       PFN_vkCreateAccelerationStructureNV                vkCreateAccelerationStructureNV                = 0;
2196       PFN_vkDestroyAccelerationStructureNV               vkDestroyAccelerationStructureNV               = 0;
2197       PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0;
2198       PFN_vkBindAccelerationStructureMemoryNV            vkBindAccelerationStructureMemoryNV            = 0;
2199       PFN_vkCmdBuildAccelerationStructureNV              vkCmdBuildAccelerationStructureNV              = 0;
2200       PFN_vkCmdCopyAccelerationStructureNV               vkCmdCopyAccelerationStructureNV               = 0;
2201       PFN_vkCmdTraceRaysNV                               vkCmdTraceRaysNV                               = 0;
2202       PFN_vkCreateRayTracingPipelinesNV                  vkCreateRayTracingPipelinesNV                  = 0;
2203       PFN_vkGetRayTracingShaderGroupHandlesNV            vkGetRayTracingShaderGroupHandlesNV            = 0;
2204       PFN_vkGetAccelerationStructureHandleNV             vkGetAccelerationStructureHandleNV             = 0;
2205       PFN_vkCmdWriteAccelerationStructuresPropertiesNV   vkCmdWriteAccelerationStructuresPropertiesNV   = 0;
2206       PFN_vkCompileDeferredNV                            vkCompileDeferredNV                            = 0;
2207 
2208       //=== VK_NV_scissor_exclusive ===
2209       PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0;
2210 
2211       //=== VK_NV_shading_rate_image ===
2212       PFN_vkCmdBindShadingRateImageNV          vkCmdBindShadingRateImageNV          = 0;
2213       PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0;
2214       PFN_vkCmdSetCoarseSampleOrderNV          vkCmdSetCoarseSampleOrderNV          = 0;
2215     };
2216 
2217     //====================
2218     //=== RAII HANDLES ===
2219     //====================
2220 
2221     class Context
2222     {
2223     public:
Context()2224       Context() : m_dispatcher( m_dynamicLoader.getProcAddress<PFN_vkGetInstanceProcAddr>( "vkGetInstanceProcAddr" ) )
2225       {}
2226 
2227       ~Context() = default;
2228 
2229       Context( Context const & ) = delete;
Context(Context && rhs)2230       Context( Context && rhs ) VULKAN_HPP_NOEXCEPT
2231         : m_dynamicLoader( std::move( rhs.m_dynamicLoader ) )
2232         , m_dispatcher( std::move( rhs.m_dispatcher ) )
2233       {}
2234       Context & operator=( Context const & ) = delete;
operator =(Context && rhs)2235       Context & operator                     =( Context && rhs ) VULKAN_HPP_NOEXCEPT
2236       {
2237         if ( this != &rhs )
2238         {
2239           m_dynamicLoader = std::move( rhs.m_dynamicLoader );
2240           m_dispatcher    = std::move( rhs.m_dispatcher );
2241         }
2242         return *this;
2243       }
2244 
2245       //=== VK_VERSION_1_0 ===
2246 
2247       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> enumerateInstanceExtensionProperties(
2248         Optional<const std::string> layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
2249 
2250       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> enumerateInstanceLayerProperties() const;
2251 
2252       //=== VK_VERSION_1_1 ===
2253 
2254       VULKAN_HPP_NODISCARD uint32_t enumerateInstanceVersion() const;
2255 
getDispatcher() const2256       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher const * getDispatcher() const
2257       {
2258         VULKAN_HPP_ASSERT( m_dispatcher.getVkHeaderVersion() == VK_HEADER_VERSION );
2259         return &m_dispatcher;
2260       }
2261 
2262     private:
2263       VULKAN_HPP_NAMESPACE::DynamicLoader                                m_dynamicLoader;
2264       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher m_dispatcher;
2265     };
2266 
2267     class Instance
2268     {
2269     public:
2270       using CType = VkInstance;
2271 
2272       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
2273         VULKAN_HPP_NAMESPACE::ObjectType::eInstance;
2274       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
2275         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eInstance;
2276 
2277     public:
Instance(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const & context,VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2278       Instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const &                context,
2279                 VULKAN_HPP_NAMESPACE::InstanceCreateInfo const &                                createInfo,
2280                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2281         : m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2282             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2283         , m_dispatcher( context.getDispatcher()->vkGetInstanceProcAddr )
2284       {
2285         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
2286           context.getDispatcher()->vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo *>( &createInfo ),
2287                                                      m_allocator,
2288                                                      reinterpret_cast<VkInstance *>( &m_instance ) ) );
2289         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
2290         {
2291           throwResultException( result, "vkCreateInstance" );
2292         }
2293         m_dispatcher.init( static_cast<VkInstance>( m_instance ) );
2294       }
2295 
Instance(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const & context,VkInstance instance,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2296       Instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const &                context,
2297                 VkInstance                                                                      instance,
2298                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2299         : m_instance( instance )
2300         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2301             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2302         , m_dispatcher( context.getDispatcher()->vkGetInstanceProcAddr )
2303       {
2304         m_dispatcher.init( static_cast<VkInstance>( m_instance ) );
2305       }
2306 
Instance(std::nullptr_t)2307       Instance( std::nullptr_t ) {}
2308 
~Instance()2309       ~Instance()
2310       {
2311         if ( m_instance )
2312         {
2313           getDispatcher()->vkDestroyInstance( static_cast<VkInstance>( m_instance ), m_allocator );
2314         }
2315       }
2316 
2317       Instance()                   = delete;
2318       Instance( Instance const & ) = delete;
Instance(Instance && rhs)2319       Instance( Instance && rhs ) VULKAN_HPP_NOEXCEPT
2320         : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) )
2321         , m_allocator( rhs.m_allocator )
2322         , m_dispatcher( rhs.m_dispatcher )
2323       {}
2324       Instance & operator=( Instance const & ) = delete;
operator =(Instance && rhs)2325       Instance & operator                      =( Instance && rhs ) VULKAN_HPP_NOEXCEPT
2326       {
2327         if ( this != &rhs )
2328         {
2329           if ( m_instance )
2330           {
2331             getDispatcher()->vkDestroyInstance( static_cast<VkInstance>( m_instance ), m_allocator );
2332           }
2333           m_instance   = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} );
2334           m_allocator  = rhs.m_allocator;
2335           m_dispatcher = rhs.m_dispatcher;
2336         }
2337         return *this;
2338       }
2339 
operator *() const2340       VULKAN_HPP_NAMESPACE::Instance const & operator*() const VULKAN_HPP_NOEXCEPT
2341       {
2342         return m_instance;
2343       }
2344 
getDispatcher() const2345       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
2346       {
2347         VULKAN_HPP_ASSERT( m_dispatcher.getVkHeaderVersion() == VK_HEADER_VERSION );
2348         return &m_dispatcher;
2349       }
2350 
2351       //=== VK_VERSION_1_0 ===
2352 
2353       VULKAN_HPP_NODISCARD PFN_vkVoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT;
2354 
2355       //=== VK_VERSION_1_1 ===
2356 
2357       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
2358                            enumeratePhysicalDeviceGroups() const;
2359 
2360       //=== VK_EXT_debug_report ===
2361 
2362       void debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT      flags,
2363                                   VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_,
2364                                   uint64_t                                       object,
2365                                   size_t                                         location,
2366                                   int32_t                                        messageCode,
2367                                   const std::string &                            layerPrefix,
2368                                   const std::string &                            message ) const VULKAN_HPP_NOEXCEPT;
2369 
2370       //=== VK_KHR_device_group_creation ===
2371 
2372       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
2373                            enumeratePhysicalDeviceGroupsKHR() const;
2374 
2375       //=== VK_EXT_debug_utils ===
2376 
2377       void submitDebugUtilsMessageEXT(
2378         VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT       messageSeverity,
2379         VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT              messageTypes,
2380         const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT;
2381 
2382     private:
2383       VULKAN_HPP_NAMESPACE::Instance                                      m_instance;
2384       const VkAllocationCallbacks *                                       m_allocator  = nullptr;
2385       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher m_dispatcher = nullptr;
2386     };
2387 
2388     class PhysicalDevice
2389     {
2390     public:
2391       using CType = VkPhysicalDevice;
2392 
2393       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
2394         VULKAN_HPP_NAMESPACE::ObjectType::ePhysicalDevice;
2395       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
2396         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePhysicalDevice;
2397 
2398     public:
PhysicalDevice(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkPhysicalDevice physicalDevice)2399       PhysicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,
2400                       VkPhysicalDevice                                                  physicalDevice )
2401         : m_physicalDevice( physicalDevice ), m_dispatcher( instance.getDispatcher() )
2402       {}
2403 
PhysicalDevice(VkPhysicalDevice physicalDevice,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher)2404       PhysicalDevice( VkPhysicalDevice                                                            physicalDevice,
2405                       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher )
2406         : m_physicalDevice( physicalDevice ), m_dispatcher( dispatcher )
2407       {}
PhysicalDevice(std::nullptr_t)2408       PhysicalDevice( std::nullptr_t ) {}
2409 
2410       PhysicalDevice()                         = delete;
2411       PhysicalDevice( PhysicalDevice const & ) = delete;
PhysicalDevice(PhysicalDevice && rhs)2412       PhysicalDevice( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT
2413         : m_physicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ) )
2414         , m_dispatcher( rhs.m_dispatcher )
2415       {}
2416       PhysicalDevice & operator=( PhysicalDevice const & ) = delete;
operator =(PhysicalDevice && rhs)2417       PhysicalDevice & operator                            =( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT
2418       {
2419         if ( this != &rhs )
2420         {
2421           m_physicalDevice = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} );
2422           m_dispatcher     = rhs.m_dispatcher;
2423         }
2424         return *this;
2425       }
2426 
operator *() const2427       VULKAN_HPP_NAMESPACE::PhysicalDevice const & operator*() const VULKAN_HPP_NOEXCEPT
2428       {
2429         return m_physicalDevice;
2430       }
2431 
getDispatcher() const2432       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
2433       {
2434         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
2435         return m_dispatcher;
2436       }
2437 
2438       //=== VK_VERSION_1_0 ===
2439 
2440       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures getFeatures() const VULKAN_HPP_NOEXCEPT;
2441 
2442       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties
2443                            getFormatProperties( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
2444 
2445       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties getImageFormatProperties(
2446         VULKAN_HPP_NAMESPACE::Format                 format,
2447         VULKAN_HPP_NAMESPACE::ImageType              type,
2448         VULKAN_HPP_NAMESPACE::ImageTiling            tiling,
2449         VULKAN_HPP_NAMESPACE::ImageUsageFlags        usage,
2450         VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
2451 
2452       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties getProperties() const VULKAN_HPP_NOEXCEPT;
2453 
2454       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties>
2455                            getQueueFamilyProperties() const VULKAN_HPP_NOEXCEPT;
2456 
2457       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties
2458                            getMemoryProperties() const VULKAN_HPP_NOEXCEPT;
2459 
2460       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> enumerateDeviceExtensionProperties(
2461         Optional<const std::string> layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
2462 
2463       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> enumerateDeviceLayerProperties() const;
2464 
2465       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties>
2466                            getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format              format,
2467                                                            VULKAN_HPP_NAMESPACE::ImageType           type,
2468                                                            VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,
2469                                                            VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage,
2470                                                            VULKAN_HPP_NAMESPACE::ImageTiling         tiling ) const VULKAN_HPP_NOEXCEPT;
2471 
2472       //=== VK_VERSION_1_1 ===
2473 
2474       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2() const VULKAN_HPP_NOEXCEPT;
2475 
2476       template <typename X, typename Y, typename... Z>
2477       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getFeatures2() const VULKAN_HPP_NOEXCEPT;
2478 
2479       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 getProperties2() const VULKAN_HPP_NOEXCEPT;
2480 
2481       template <typename X, typename Y, typename... Z>
2482       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getProperties2() const VULKAN_HPP_NOEXCEPT;
2483 
2484       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2
2485                            getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
2486 
2487       template <typename X, typename Y, typename... Z>
2488       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2489                            getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
2490 
2491       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties2
2492         getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
2493 
2494       template <typename X, typename Y, typename... Z>
2495       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2496         getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
2497 
2498       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
2499                            getQueueFamilyProperties2() const VULKAN_HPP_NOEXCEPT;
2500 
2501       template <typename StructureChain>
2502       VULKAN_HPP_NODISCARD std::vector<StructureChain> getQueueFamilyProperties2() const;
2503 
2504       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
2505                            getMemoryProperties2() const VULKAN_HPP_NOEXCEPT;
2506 
2507       template <typename X, typename Y, typename... Z>
2508       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getMemoryProperties2() const VULKAN_HPP_NOEXCEPT;
2509 
2510       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
2511                            getSparseImageFormatProperties2(
2512                              const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT;
2513 
2514       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferProperties(
2515         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT;
2516 
2517       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFenceProperties(
2518         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT;
2519 
2520       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphoreProperties(
2521         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const
2522         VULKAN_HPP_NOEXCEPT;
2523 
2524       //=== VK_KHR_surface ===
2525 
2526       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2527         getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2528 
2529       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR
2530                            getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2531 
2532       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>
2533                            getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2534 
2535       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
2536                            getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2537 
2538       //=== VK_KHR_swapchain ===
2539 
2540       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::Rect2D>
2541                            getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2542 
2543       //=== VK_KHR_display ===
2544 
2545       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR> getDisplayPropertiesKHR() const;
2546 
2547       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR>
2548                            getDisplayPlanePropertiesKHR() const;
2549 
2550 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
2551       //=== VK_KHR_xlib_surface ===
2552 
2553       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getXlibPresentationSupportKHR(
2554         uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT;
2555 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
2556 
2557 #  if defined( VK_USE_PLATFORM_XCB_KHR )
2558       //=== VK_KHR_xcb_surface ===
2559 
2560       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getXcbPresentationSupportKHR(
2561         uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT;
2562 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
2563 
2564 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
2565       //=== VK_KHR_wayland_surface ===
2566 
2567       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2568                            getWaylandPresentationSupportKHR( uint32_t            queueFamilyIndex,
2569                                                              struct wl_display & display ) const VULKAN_HPP_NOEXCEPT;
2570 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
2571 
2572 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2573       //=== VK_KHR_win32_surface ===
2574 
2575       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2576                            getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT;
2577 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2578 
2579 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
2580       //=== VK_KHR_video_queue ===
2581 
2582       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR
2583                            getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile ) const;
2584 
2585       template <typename X, typename Y, typename... Z>
2586       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2587                            getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile ) const;
2588 
2589       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR> getVideoFormatPropertiesKHR(
2590         const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const;
2591 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
2592 
2593       //=== VK_NV_external_memory_capabilities ===
2594 
2595       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV getExternalImageFormatPropertiesNV(
2596         VULKAN_HPP_NAMESPACE::Format                 format,
2597         VULKAN_HPP_NAMESPACE::ImageType              type,
2598         VULKAN_HPP_NAMESPACE::ImageTiling            tiling,
2599         VULKAN_HPP_NAMESPACE::ImageUsageFlags        usage,
2600         VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
2601         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType
2602           VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
2603 
2604       //=== VK_KHR_get_physical_device_properties2 ===
2605 
2606       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2KHR() const VULKAN_HPP_NOEXCEPT;
2607 
2608       template <typename X, typename Y, typename... Z>
2609       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getFeatures2KHR() const VULKAN_HPP_NOEXCEPT;
2610 
2611       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2
2612                            getProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2613 
2614       template <typename X, typename Y, typename... Z>
2615       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2616 
2617       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2
2618                            getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
2619 
2620       template <typename X, typename Y, typename... Z>
2621       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2622                            getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
2623 
2624       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties2 getImageFormatProperties2KHR(
2625         const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
2626 
2627       template <typename X, typename Y, typename... Z>
2628       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageFormatProperties2KHR(
2629         const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
2630 
2631       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
2632                            getQueueFamilyProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2633 
2634       template <typename StructureChain>
2635       VULKAN_HPP_NODISCARD std::vector<StructureChain> getQueueFamilyProperties2KHR() const;
2636 
2637       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
2638                            getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2639 
2640       template <typename X, typename Y, typename... Z>
2641       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2642 
2643       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
2644                            getSparseImageFormatProperties2KHR(
2645                              const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT;
2646 
2647       //=== VK_KHR_external_memory_capabilities ===
2648 
2649       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferPropertiesKHR(
2650         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT;
2651 
2652       //=== VK_KHR_external_semaphore_capabilities ===
2653 
2654       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphorePropertiesKHR(
2655         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const
2656         VULKAN_HPP_NOEXCEPT;
2657 
2658 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
2659       //=== VK_EXT_acquire_xlib_display ===
2660 
2661       void acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const;
2662 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
2663 
2664       //=== VK_EXT_display_surface_counter ===
2665 
2666       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT
2667                            getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2668 
2669       //=== VK_KHR_external_fence_capabilities ===
2670 
2671       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFencePropertiesKHR(
2672         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT;
2673 
2674       //=== VK_KHR_performance_query ===
2675 
2676       VULKAN_HPP_NODISCARD std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>>
2677                            enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const;
2678 
2679       VULKAN_HPP_NODISCARD uint32_t getQueueFamilyPerformanceQueryPassesKHR(
2680         const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const
2681         VULKAN_HPP_NOEXCEPT;
2682 
2683       //=== VK_KHR_get_surface_capabilities2 ===
2684 
2685       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR
2686         getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2687 
2688       template <typename X, typename Y, typename... Z>
2689       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2690         getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2691 
2692       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>
2693         getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2694 
2695       //=== VK_KHR_get_display_properties2 ===
2696 
2697       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR> getDisplayProperties2KHR() const;
2698 
2699       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR>
2700                            getDisplayPlaneProperties2KHR() const;
2701 
2702       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR
2703         getDisplayPlaneCapabilities2KHR( const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo ) const;
2704 
2705       //=== VK_EXT_sample_locations ===
2706 
2707       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT
2708         getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT;
2709 
2710       //=== VK_EXT_calibrated_timestamps ===
2711 
2712       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::TimeDomainEXT> getCalibrateableTimeDomainsEXT() const;
2713 
2714       //=== VK_KHR_fragment_shading_rate ===
2715 
2716       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR>
2717                            getFragmentShadingRatesKHR() const;
2718 
2719       //=== VK_EXT_tooling_info ===
2720 
2721       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT>
2722                            getToolPropertiesEXT() const;
2723 
2724       //=== VK_NV_cooperative_matrix ===
2725 
2726       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV>
2727                            getCooperativeMatrixPropertiesNV() const;
2728 
2729       //=== VK_NV_coverage_reduction_mode ===
2730 
2731       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV>
2732                            getSupportedFramebufferMixedSamplesCombinationsNV() const;
2733 
2734 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2735       //=== VK_EXT_full_screen_exclusive ===
2736 
2737       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
2738         getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2739 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2740 
2741       //=== VK_EXT_acquire_drm_display ===
2742 
2743       void acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const;
2744 
2745 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
2746       //=== VK_EXT_directfb_surface ===
2747 
2748       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2749         getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT;
2750 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
2751 
2752 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
2753       //=== VK_QNX_screen_surface ===
2754 
2755       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2756                            getScreenPresentationSupportQNX( uint32_t                queueFamilyIndex,
2757                                                             struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT;
2758 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
2759 
2760     private:
2761       VULKAN_HPP_NAMESPACE::PhysicalDevice                                        m_physicalDevice;
2762       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
2763     };
2764 
2765     class PhysicalDevices : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice>
2766     {
2767     public:
PhysicalDevices(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance)2768       PhysicalDevices( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance )
2769       {
2770         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher =
2771           instance.getDispatcher();
2772         std::vector<VkPhysicalDevice> physicalDevices;
2773         uint32_t                      physicalDeviceCount;
2774         VULKAN_HPP_NAMESPACE::Result  result;
2775         do
2776         {
2777           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkEnumeratePhysicalDevices(
2778             static_cast<VkInstance>( *instance ), &physicalDeviceCount, nullptr ) );
2779           if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceCount )
2780           {
2781             physicalDevices.resize( physicalDeviceCount );
2782             result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkEnumeratePhysicalDevices(
2783               static_cast<VkInstance>( *instance ), &physicalDeviceCount, physicalDevices.data() ) );
2784             VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() );
2785           }
2786         } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
2787         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
2788         {
2789           this->reserve( physicalDeviceCount );
2790           for ( auto const & physicalDevice : physicalDevices )
2791           {
2792             this->emplace_back( physicalDevice, dispatcher );
2793           }
2794         }
2795         else
2796         {
2797           throwResultException( result, "vkEnumeratePhysicalDevices" );
2798         }
2799       }
2800 
2801       PhysicalDevices()                          = delete;
2802       PhysicalDevices( PhysicalDevices const & ) = delete;
2803       PhysicalDevices( PhysicalDevices && rhs )  = default;
2804       PhysicalDevices & operator=( PhysicalDevices const & ) = delete;
2805       PhysicalDevices & operator=( PhysicalDevices && rhs ) = default;
2806     };
2807 
2808     class Device
2809     {
2810     public:
2811       using CType = VkDevice;
2812 
2813       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
2814         VULKAN_HPP_NAMESPACE::ObjectType::eDevice;
2815       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
2816         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDevice;
2817 
2818     public:
Device(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2819       Device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const &         physicalDevice,
2820               VULKAN_HPP_NAMESPACE::DeviceCreateInfo const &                                  createInfo,
2821               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2822         : m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2823             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2824         , m_dispatcher( physicalDevice.getDispatcher()->vkGetDeviceProcAddr )
2825       {
2826         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
2827           physicalDevice.getDispatcher()->vkCreateDevice( static_cast<VkPhysicalDevice>( *physicalDevice ),
2828                                                           reinterpret_cast<const VkDeviceCreateInfo *>( &createInfo ),
2829                                                           m_allocator,
2830                                                           reinterpret_cast<VkDevice *>( &m_device ) ) );
2831         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
2832         {
2833           throwResultException( result, "vkCreateDevice" );
2834         }
2835         m_dispatcher.init( static_cast<VkDevice>( m_device ) );
2836       }
2837 
Device(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VkDevice device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2838       Device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const &         physicalDevice,
2839               VkDevice                                                                        device,
2840               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2841         : m_device( device )
2842         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2843             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2844         , m_dispatcher( physicalDevice.getDispatcher()->vkGetDeviceProcAddr )
2845       {
2846         m_dispatcher.init( static_cast<VkDevice>( m_device ) );
2847       }
2848 
Device(std::nullptr_t)2849       Device( std::nullptr_t ) {}
2850 
~Device()2851       ~Device()
2852       {
2853         if ( m_device )
2854         {
2855           getDispatcher()->vkDestroyDevice( static_cast<VkDevice>( m_device ), m_allocator );
2856         }
2857       }
2858 
2859       Device()                 = delete;
2860       Device( Device const & ) = delete;
Device(Device && rhs)2861       Device( Device && rhs ) VULKAN_HPP_NOEXCEPT
2862         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
2863         , m_allocator( rhs.m_allocator )
2864         , m_dispatcher( rhs.m_dispatcher )
2865       {}
2866       Device & operator=( Device const & ) = delete;
operator =(Device && rhs)2867       Device & operator                    =( Device && rhs ) VULKAN_HPP_NOEXCEPT
2868       {
2869         if ( this != &rhs )
2870         {
2871           if ( m_device )
2872           {
2873             getDispatcher()->vkDestroyDevice( static_cast<VkDevice>( m_device ), m_allocator );
2874           }
2875           m_device     = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} );
2876           m_allocator  = rhs.m_allocator;
2877           m_dispatcher = rhs.m_dispatcher;
2878         }
2879         return *this;
2880       }
2881 
operator *() const2882       VULKAN_HPP_NAMESPACE::Device const & operator*() const VULKAN_HPP_NOEXCEPT
2883       {
2884         return m_device;
2885       }
2886 
getDispatcher() const2887       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
2888       {
2889         VULKAN_HPP_ASSERT( m_dispatcher.getVkHeaderVersion() == VK_HEADER_VERSION );
2890         return &m_dispatcher;
2891       }
2892 
2893       //=== VK_VERSION_1_0 ===
2894 
2895       VULKAN_HPP_NODISCARD PFN_vkVoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT;
2896 
2897       void waitIdle() const;
2898 
2899       void
2900         flushMappedMemoryRanges( ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const;
2901 
2902       void invalidateMappedMemoryRanges(
2903         ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const;
2904 
2905       void resetFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences ) const;
2906 
2907       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
2908                            waitForFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,
2909                                           VULKAN_HPP_NAMESPACE::Bool32                          waitAll,
2910                                           uint64_t                                              timeout ) const;
2911 
2912       void updateDescriptorSets(
2913         ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,
2914         ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const &  descriptorCopies ) const VULKAN_HPP_NOEXCEPT;
2915 
2916       //=== VK_VERSION_1_1 ===
2917 
2918       void bindBufferMemory2( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const;
2919 
2920       void bindImageMemory2( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const;
2921 
2922       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags getGroupPeerMemoryFeatures(
2923         uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT;
2924 
2925       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements2(
2926         const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2927 
2928       template <typename X, typename Y, typename... Z>
2929       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageMemoryRequirements2(
2930         const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2931 
2932       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements2(
2933         const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2934 
2935       template <typename X, typename Y, typename... Z>
2936       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getBufferMemoryRequirements2(
2937         const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2938 
2939       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
2940         getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const
2941         VULKAN_HPP_NOEXCEPT;
2942 
2943       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport getDescriptorSetLayoutSupport(
2944         const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
2945 
2946       template <typename X, typename Y, typename... Z>
2947       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getDescriptorSetLayoutSupport(
2948         const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
2949 
2950       //=== VK_VERSION_1_2 ===
2951 
2952       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
2953         waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const;
2954 
2955       void signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const;
2956 
2957       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
2958         getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2959 
2960       VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddress(
2961         const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2962 
2963       VULKAN_HPP_NODISCARD uint64_t getMemoryOpaqueCaptureAddress(
2964         const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2965 
2966       //=== VK_KHR_swapchain ===
2967 
2968       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR
2969                            getGroupPresentCapabilitiesKHR() const;
2970 
2971       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
2972                            getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2973 
2974       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
2975         acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo ) const;
2976 
2977       //=== VK_EXT_debug_marker ===
2978 
2979       void debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo ) const;
2980 
2981       void debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo ) const;
2982 
2983       //=== VK_NVX_image_view_handle ===
2984 
2985       VULKAN_HPP_NODISCARD uint32_t
2986         getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT;
2987 
2988       //=== VK_KHR_device_group ===
2989 
2990       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR(
2991         uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT;
2992 
2993 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2994       //=== VK_KHR_external_memory_win32 ===
2995 
2996       VULKAN_HPP_NODISCARD HANDLE
2997         getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
2998 
2999       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR
3000         getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
3001                                            HANDLE                                                 handle ) const;
3002 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3003 
3004       //=== VK_KHR_external_memory_fd ===
3005 
3006       VULKAN_HPP_NODISCARD int getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo ) const;
3007 
3008       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR
3009         getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd ) const;
3010 
3011 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
3012       //=== VK_KHR_external_semaphore_win32 ===
3013 
3014       void importSemaphoreWin32HandleKHR(
3015         const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
3016 
3017       VULKAN_HPP_NODISCARD HANDLE getSemaphoreWin32HandleKHR(
3018         const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
3019 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3020 
3021       //=== VK_KHR_external_semaphore_fd ===
3022 
3023       void importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
3024 
3025       VULKAN_HPP_NODISCARD int getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo ) const;
3026 
3027       //=== VK_KHR_descriptor_update_template ===
3028 
3029       void destroyDescriptorUpdateTemplateKHR(
3030         VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
3031         Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator
3032           VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
3033 
3034       //=== VK_EXT_display_control ===
3035 
3036       void displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR                  display,
3037                                    const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo ) const;
3038 
3039       //=== VK_EXT_hdr_metadata ===
3040 
3041       void setHdrMetadataEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const &   swapchains,
3042                               ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata ) const
3043         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3044 
3045 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
3046       //=== VK_KHR_external_fence_win32 ===
3047 
3048       void importFenceWin32HandleKHR(
3049         const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
3050 
3051       VULKAN_HPP_NODISCARD HANDLE
3052         getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
3053 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3054 
3055       //=== VK_KHR_external_fence_fd ===
3056 
3057       void importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo ) const;
3058 
3059       VULKAN_HPP_NODISCARD int getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo ) const;
3060 
3061       //=== VK_KHR_performance_query ===
3062 
3063       void acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info ) const;
3064 
3065       void releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT;
3066 
3067       //=== VK_EXT_debug_utils ===
3068 
3069       void setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo ) const;
3070 
3071       void setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo ) const;
3072 
3073 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
3074       //=== VK_ANDROID_external_memory_android_hardware_buffer ===
3075 
3076       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID
3077                            getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const;
3078 
3079       template <typename X, typename Y, typename... Z>
3080       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
3081                            getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const;
3082 
3083       VULKAN_HPP_NODISCARD struct AHardwareBuffer * getMemoryAndroidHardwareBufferANDROID(
3084         const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info ) const;
3085 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
3086 
3087       //=== VK_KHR_get_memory_requirements2 ===
3088 
3089       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements2KHR(
3090         const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3091 
3092       template <typename X, typename Y, typename... Z>
3093       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageMemoryRequirements2KHR(
3094         const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3095 
3096       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements2KHR(
3097         const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3098 
3099       template <typename X, typename Y, typename... Z>
3100       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getBufferMemoryRequirements2KHR(
3101         const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3102 
3103       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
3104                            getImageSparseMemoryRequirements2KHR(
3105                              const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3106 
3107       //=== VK_KHR_acceleration_structure ===
3108 
3109       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result buildAccelerationStructuresKHR(
3110         VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                                deferredOperation,
3111         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
3112         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const &
3113           pBuildRangeInfos ) const;
3114 
3115       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
3116                            copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                     deferredOperation,
3117                                                          const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const;
3118 
3119       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result copyAccelerationStructureToMemoryKHR(
3120         VULKAN_HPP_NAMESPACE::DeferredOperationKHR                             deferredOperation,
3121         const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const;
3122 
3123       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result copyMemoryToAccelerationStructureKHR(
3124         VULKAN_HPP_NAMESPACE::DeferredOperationKHR                             deferredOperation,
3125         const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const;
3126 
3127       template <typename T>
3128       VULKAN_HPP_NODISCARD std::vector<T> writeAccelerationStructuresPropertiesKHR(
3129         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
3130         VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
3131         size_t                                                                   dataSize,
3132         size_t                                                                   stride ) const;
3133 
3134       template <typename T>
3135       VULKAN_HPP_NODISCARD T writeAccelerationStructuresPropertyKHR(
3136         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
3137         VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
3138         size_t                                                                   stride ) const;
3139 
3140       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress getAccelerationStructureAddressKHR(
3141         const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
3142 
3143       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR
3144                            getAccelerationStructureCompatibilityKHR(
3145                              const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo ) const VULKAN_HPP_NOEXCEPT;
3146 
3147       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR
3148                            getAccelerationStructureBuildSizesKHR(
3149                              VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR                 buildType,
3150                              const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo,
3151                              ArrayProxy<const uint32_t> const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const
3152         VULKAN_HPP_NOEXCEPT;
3153 
3154       //=== VK_KHR_sampler_ycbcr_conversion ===
3155 
3156       void destroySamplerYcbcrConversionKHR(
3157         VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
3158         Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator
3159           VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
3160 
3161       //=== VK_KHR_bind_memory2 ===
3162 
3163       void bindBufferMemory2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const;
3164 
3165       void bindImageMemory2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const;
3166 
3167       //=== VK_NV_ray_tracing ===
3168 
3169       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV(
3170         const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
3171 
3172       template <typename X, typename Y, typename... Z>
3173       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getAccelerationStructureMemoryRequirementsNV(
3174         const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
3175 
3176       void bindAccelerationStructureMemoryNV(
3177         ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos ) const;
3178 
3179       //=== VK_KHR_maintenance3 ===
3180 
3181       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR(
3182         const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
3183 
3184       template <typename X, typename Y, typename... Z>
3185       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getDescriptorSetLayoutSupportKHR(
3186         const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
3187 
3188       //=== VK_EXT_external_memory_host ===
3189 
3190       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT
3191         getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
3192                                            const void *                                           pHostPointer ) const;
3193 
3194       //=== VK_EXT_calibrated_timestamps ===
3195 
3196       VULKAN_HPP_NODISCARD std::pair<std::vector<uint64_t>, uint64_t> getCalibratedTimestampsEXT(
3197         ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT> const & timestampInfos ) const;
3198 
3199       VULKAN_HPP_NODISCARD std::pair<uint64_t, uint64_t>
3200         getCalibratedTimestampEXT( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT & timestampInfo ) const;
3201 
3202       //=== VK_KHR_timeline_semaphore ===
3203 
3204       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
3205         waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const;
3206 
3207       void signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const;
3208 
3209       //=== VK_INTEL_performance_query ===
3210 
3211       void initializePerformanceApiINTEL(
3212         const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo ) const;
3213 
3214       void uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT;
3215 
3216       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PerformanceValueINTEL
3217         getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter ) const;
3218 
3219       //=== VK_EXT_buffer_device_address ===
3220 
3221       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
3222         getBufferAddressEXT( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
3223 
3224 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
3225       //=== VK_EXT_full_screen_exclusive ===
3226 
3227       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR getGroupSurfacePresentModes2EXT(
3228         const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3229 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3230 
3231       //=== VK_KHR_buffer_device_address ===
3232 
3233       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
3234         getBufferAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
3235 
3236       VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddressKHR(
3237         const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
3238 
3239       VULKAN_HPP_NODISCARD uint64_t getMemoryOpaqueCaptureAddressKHR(
3240         const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
3241 
3242       //=== VK_KHR_pipeline_executable_properties ===
3243 
3244       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>
3245         getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo ) const;
3246 
3247       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR>
3248                            getPipelineExecutableStatisticsKHR(
3249                              const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const;
3250 
3251       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>
3252                            getPipelineExecutableInternalRepresentationsKHR(
3253                              const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const;
3254 
3255       //=== VK_NV_device_generated_commands ===
3256 
3257       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getGeneratedCommandsMemoryRequirementsNV(
3258         const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
3259 
3260       template <typename X, typename Y, typename... Z>
3261       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getGeneratedCommandsMemoryRequirementsNV(
3262         const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
3263 
3264       //=== VK_EXT_private_data ===
3265 
3266       void setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType         objectType_,
3267                               uint64_t                                 objectHandle,
3268                               VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot,
3269                               uint64_t                                 data ) const;
3270 
3271       VULKAN_HPP_NODISCARD uint64_t
3272         getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType         objectType_,
3273                            uint64_t                                 objectHandle,
3274                            VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot ) const VULKAN_HPP_NOEXCEPT;
3275 
3276 #  if defined( VK_USE_PLATFORM_FUCHSIA )
3277       //=== VK_FUCHSIA_external_memory ===
3278 
3279       VULKAN_HPP_NODISCARD zx_handle_t getMemoryZirconHandleFUCHSIA(
3280         const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const;
3281 
3282       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA
3283         getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
3284                                                 zx_handle_t zirconHandle ) const;
3285 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
3286 
3287 #  if defined( VK_USE_PLATFORM_FUCHSIA )
3288       //=== VK_FUCHSIA_external_semaphore ===
3289 
3290       void importSemaphoreZirconHandleFUCHSIA(
3291         const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const;
3292 
3293       VULKAN_HPP_NODISCARD zx_handle_t getSemaphoreZirconHandleFUCHSIA(
3294         const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const;
3295 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
3296 
3297       //=== VK_NV_external_memory_rdma ===
3298 
3299       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::RemoteAddressNV getMemoryRemoteAddressNV(
3300         const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo ) const;
3301 
3302       //=== VK_KHR_maintenance4 ===
3303 
3304       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirementsKHR(
3305         const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR & info ) const VULKAN_HPP_NOEXCEPT;
3306 
3307       template <typename X, typename Y, typename... Z>
3308       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getBufferMemoryRequirementsKHR(
3309         const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR & info ) const VULKAN_HPP_NOEXCEPT;
3310 
3311       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirementsKHR(
3312         const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info ) const VULKAN_HPP_NOEXCEPT;
3313 
3314       template <typename X, typename Y, typename... Z>
3315       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getImageMemoryRequirementsKHR(
3316         const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info ) const VULKAN_HPP_NOEXCEPT;
3317 
3318       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
3319         getImageSparseMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info ) const
3320         VULKAN_HPP_NOEXCEPT;
3321 
3322     private:
3323       VULKAN_HPP_NAMESPACE::Device                                      m_device;
3324       const VkAllocationCallbacks *                                     m_allocator  = nullptr;
3325       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher m_dispatcher = nullptr;
3326     };
3327 
3328     class AccelerationStructureKHR
3329     {
3330     public:
3331       using CType = VkAccelerationStructureKHR;
3332 
3333       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3334         VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureKHR;
3335       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3336         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureKHR;
3337 
3338     public:
AccelerationStructureKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3339       AccelerationStructureKHR(
3340         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3341         VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const &                createInfo,
3342         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3343         : m_device( *device )
3344         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3345             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3346         , m_dispatcher( device.getDispatcher() )
3347       {
3348         VULKAN_HPP_NAMESPACE::Result result =
3349           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAccelerationStructureKHR(
3350             static_cast<VkDevice>( *device ),
3351             reinterpret_cast<const VkAccelerationStructureCreateInfoKHR *>( &createInfo ),
3352             m_allocator,
3353             reinterpret_cast<VkAccelerationStructureKHR *>( &m_accelerationStructureKHR ) ) );
3354         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3355         {
3356           throwResultException( result, "vkCreateAccelerationStructureKHR" );
3357         }
3358       }
3359 
AccelerationStructureKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkAccelerationStructureKHR accelerationStructureKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3360       AccelerationStructureKHR(
3361         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3362         VkAccelerationStructureKHR                                                      accelerationStructureKHR,
3363         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3364         : m_accelerationStructureKHR( accelerationStructureKHR )
3365         , m_device( *device )
3366         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3367             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3368         , m_dispatcher( device.getDispatcher() )
3369       {}
3370 
AccelerationStructureKHR(std::nullptr_t)3371       AccelerationStructureKHR( std::nullptr_t ) {}
3372 
~AccelerationStructureKHR()3373       ~AccelerationStructureKHR()
3374       {
3375         if ( m_accelerationStructureKHR )
3376         {
3377           getDispatcher()->vkDestroyAccelerationStructureKHR(
3378             m_device, static_cast<VkAccelerationStructureKHR>( m_accelerationStructureKHR ), m_allocator );
3379         }
3380       }
3381 
3382       AccelerationStructureKHR()                                   = delete;
3383       AccelerationStructureKHR( AccelerationStructureKHR const & ) = delete;
AccelerationStructureKHR(AccelerationStructureKHR && rhs)3384       AccelerationStructureKHR( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT
3385         : m_accelerationStructureKHR(
3386             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructureKHR, {} ) )
3387         , m_device( rhs.m_device )
3388         , m_allocator( rhs.m_allocator )
3389         , m_dispatcher( rhs.m_dispatcher )
3390       {}
3391       AccelerationStructureKHR & operator=( AccelerationStructureKHR const & ) = delete;
operator =(AccelerationStructureKHR && rhs)3392       AccelerationStructureKHR & operator=( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT
3393       {
3394         if ( this != &rhs )
3395         {
3396           if ( m_accelerationStructureKHR )
3397           {
3398             getDispatcher()->vkDestroyAccelerationStructureKHR(
3399               m_device, static_cast<VkAccelerationStructureKHR>( m_accelerationStructureKHR ), m_allocator );
3400           }
3401           m_accelerationStructureKHR =
3402             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructureKHR, {} );
3403           m_device     = rhs.m_device;
3404           m_allocator  = rhs.m_allocator;
3405           m_dispatcher = rhs.m_dispatcher;
3406         }
3407         return *this;
3408       }
3409 
operator *() const3410       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & operator*() const VULKAN_HPP_NOEXCEPT
3411       {
3412         return m_accelerationStructureKHR;
3413       }
3414 
getDispatcher() const3415       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3416       {
3417         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3418         return m_dispatcher;
3419       }
3420 
3421     private:
3422       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                            m_accelerationStructureKHR;
3423       VkDevice                                                                  m_device;
3424       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
3425       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
3426     };
3427 
3428     class AccelerationStructureNV
3429     {
3430     public:
3431       using CType = VkAccelerationStructureNV;
3432 
3433       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3434         VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureNV;
3435       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3436         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureNV;
3437 
3438     public:
AccelerationStructureNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3439       AccelerationStructureNV(
3440         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3441         VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const &                 createInfo,
3442         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3443         : m_device( *device )
3444         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3445             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3446         , m_dispatcher( device.getDispatcher() )
3447       {
3448         VULKAN_HPP_NAMESPACE::Result result =
3449           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAccelerationStructureNV(
3450             static_cast<VkDevice>( *device ),
3451             reinterpret_cast<const VkAccelerationStructureCreateInfoNV *>( &createInfo ),
3452             m_allocator,
3453             reinterpret_cast<VkAccelerationStructureNV *>( &m_accelerationStructureNV ) ) );
3454         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3455         {
3456           throwResultException( result, "vkCreateAccelerationStructureNV" );
3457         }
3458       }
3459 
AccelerationStructureNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkAccelerationStructureNV accelerationStructureNV,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3460       AccelerationStructureNV(
3461         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3462         VkAccelerationStructureNV                                                       accelerationStructureNV,
3463         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3464         : m_accelerationStructureNV( accelerationStructureNV )
3465         , m_device( *device )
3466         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3467             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3468         , m_dispatcher( device.getDispatcher() )
3469       {}
3470 
AccelerationStructureNV(std::nullptr_t)3471       AccelerationStructureNV( std::nullptr_t ) {}
3472 
~AccelerationStructureNV()3473       ~AccelerationStructureNV()
3474       {
3475         if ( m_accelerationStructureNV )
3476         {
3477           getDispatcher()->vkDestroyAccelerationStructureNV(
3478             m_device, static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ), m_allocator );
3479         }
3480       }
3481 
3482       AccelerationStructureNV()                                  = delete;
3483       AccelerationStructureNV( AccelerationStructureNV const & ) = delete;
AccelerationStructureNV(AccelerationStructureNV && rhs)3484       AccelerationStructureNV( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT
3485         : m_accelerationStructureNV(
3486             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructureNV, {} ) )
3487         , m_device( rhs.m_device )
3488         , m_allocator( rhs.m_allocator )
3489         , m_dispatcher( rhs.m_dispatcher )
3490       {}
3491       AccelerationStructureNV & operator=( AccelerationStructureNV const & ) = delete;
operator =(AccelerationStructureNV && rhs)3492       AccelerationStructureNV & operator=( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT
3493       {
3494         if ( this != &rhs )
3495         {
3496           if ( m_accelerationStructureNV )
3497           {
3498             getDispatcher()->vkDestroyAccelerationStructureNV(
3499               m_device, static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ), m_allocator );
3500           }
3501           m_accelerationStructureNV =
3502             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructureNV, {} );
3503           m_device     = rhs.m_device;
3504           m_allocator  = rhs.m_allocator;
3505           m_dispatcher = rhs.m_dispatcher;
3506         }
3507         return *this;
3508       }
3509 
operator *() const3510       VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & operator*() const VULKAN_HPP_NOEXCEPT
3511       {
3512         return m_accelerationStructureNV;
3513       }
3514 
getDispatcher() const3515       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3516       {
3517         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3518         return m_dispatcher;
3519       }
3520 
3521       //=== VK_NV_ray_tracing ===
3522 
3523       template <typename T>
3524       VULKAN_HPP_NODISCARD std::vector<T> getHandle( size_t dataSize ) const;
3525 
3526       template <typename T>
3527       VULKAN_HPP_NODISCARD T getHandle() const;
3528 
3529     private:
3530       VULKAN_HPP_NAMESPACE::AccelerationStructureNV                             m_accelerationStructureNV;
3531       VkDevice                                                                  m_device;
3532       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
3533       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
3534     };
3535 
3536     class Buffer
3537     {
3538     public:
3539       using CType = VkBuffer;
3540 
3541       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3542         VULKAN_HPP_NAMESPACE::ObjectType::eBuffer;
3543       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3544         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBuffer;
3545 
3546     public:
Buffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3547       Buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3548               VULKAN_HPP_NAMESPACE::BufferCreateInfo const &                                  createInfo,
3549               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3550         : m_device( *device )
3551         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3552             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3553         , m_dispatcher( device.getDispatcher() )
3554       {
3555         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
3556           getDispatcher()->vkCreateBuffer( static_cast<VkDevice>( *device ),
3557                                            reinterpret_cast<const VkBufferCreateInfo *>( &createInfo ),
3558                                            m_allocator,
3559                                            reinterpret_cast<VkBuffer *>( &m_buffer ) ) );
3560         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3561         {
3562           throwResultException( result, "vkCreateBuffer" );
3563         }
3564       }
3565 
Buffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkBuffer buffer,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3566       Buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3567               VkBuffer                                                                        buffer,
3568               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3569         : m_buffer( buffer )
3570         , m_device( *device )
3571         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3572             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3573         , m_dispatcher( device.getDispatcher() )
3574       {}
3575 
Buffer(std::nullptr_t)3576       Buffer( std::nullptr_t ) {}
3577 
~Buffer()3578       ~Buffer()
3579       {
3580         if ( m_buffer )
3581         {
3582           getDispatcher()->vkDestroyBuffer( m_device, static_cast<VkBuffer>( m_buffer ), m_allocator );
3583         }
3584       }
3585 
3586       Buffer()                 = delete;
3587       Buffer( Buffer const & ) = delete;
Buffer(Buffer && rhs)3588       Buffer( Buffer && rhs ) VULKAN_HPP_NOEXCEPT
3589         : m_buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_buffer, {} ) )
3590         , m_device( rhs.m_device )
3591         , m_allocator( rhs.m_allocator )
3592         , m_dispatcher( rhs.m_dispatcher )
3593       {}
3594       Buffer & operator=( Buffer const & ) = delete;
operator =(Buffer && rhs)3595       Buffer & operator                    =( Buffer && rhs ) VULKAN_HPP_NOEXCEPT
3596       {
3597         if ( this != &rhs )
3598         {
3599           if ( m_buffer )
3600           {
3601             getDispatcher()->vkDestroyBuffer( m_device, static_cast<VkBuffer>( m_buffer ), m_allocator );
3602           }
3603           m_buffer     = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_buffer, {} );
3604           m_device     = rhs.m_device;
3605           m_allocator  = rhs.m_allocator;
3606           m_dispatcher = rhs.m_dispatcher;
3607         }
3608         return *this;
3609       }
3610 
operator *() const3611       VULKAN_HPP_NAMESPACE::Buffer const & operator*() const VULKAN_HPP_NOEXCEPT
3612       {
3613         return m_buffer;
3614       }
3615 
getDispatcher() const3616       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3617       {
3618         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3619         return m_dispatcher;
3620       }
3621 
3622       //=== VK_VERSION_1_0 ===
3623 
3624       void bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const;
3625 
3626       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
3627 
3628     private:
3629       VULKAN_HPP_NAMESPACE::Buffer                                              m_buffer;
3630       VkDevice                                                                  m_device;
3631       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
3632       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
3633     };
3634 
3635 #  if defined( VK_USE_PLATFORM_FUCHSIA )
3636     class BufferCollectionFUCHSIA
3637     {
3638     public:
3639       using CType = VkBufferCollectionFUCHSIA;
3640 
3641       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3642         VULKAN_HPP_NAMESPACE::ObjectType::eBufferCollectionFUCHSIA;
3643       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3644         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA;
3645 
3646     public:
BufferCollectionFUCHSIA(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3647       BufferCollectionFUCHSIA(
3648         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3649         VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const &                 createInfo,
3650         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3651         : m_device( *device )
3652         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3653             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3654         , m_dispatcher( device.getDispatcher() )
3655       {
3656         VULKAN_HPP_NAMESPACE::Result result =
3657           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateBufferCollectionFUCHSIA(
3658             static_cast<VkDevice>( *device ),
3659             reinterpret_cast<const VkBufferCollectionCreateInfoFUCHSIA *>( &createInfo ),
3660             m_allocator,
3661             reinterpret_cast<VkBufferCollectionFUCHSIA *>( &m_bufferCollectionFUCHSIA ) ) );
3662         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3663         {
3664           throwResultException( result, "vkCreateBufferCollectionFUCHSIA" );
3665         }
3666       }
3667 
BufferCollectionFUCHSIA(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkBufferCollectionFUCHSIA bufferCollectionFUCHSIA,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3668       BufferCollectionFUCHSIA(
3669         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3670         VkBufferCollectionFUCHSIA                                                       bufferCollectionFUCHSIA,
3671         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3672         : m_bufferCollectionFUCHSIA( bufferCollectionFUCHSIA )
3673         , m_device( *device )
3674         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3675             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3676         , m_dispatcher( device.getDispatcher() )
3677       {}
3678 
BufferCollectionFUCHSIA(std::nullptr_t)3679       BufferCollectionFUCHSIA( std::nullptr_t ) {}
3680 
~BufferCollectionFUCHSIA()3681       ~BufferCollectionFUCHSIA()
3682       {
3683         if ( m_bufferCollectionFUCHSIA )
3684         {
3685           getDispatcher()->vkDestroyBufferCollectionFUCHSIA(
3686             m_device, static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ), m_allocator );
3687         }
3688       }
3689 
3690       BufferCollectionFUCHSIA()                                  = delete;
3691       BufferCollectionFUCHSIA( BufferCollectionFUCHSIA const & ) = delete;
BufferCollectionFUCHSIA(BufferCollectionFUCHSIA && rhs)3692       BufferCollectionFUCHSIA( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT
3693         : m_bufferCollectionFUCHSIA(
3694             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferCollectionFUCHSIA, {} ) )
3695         , m_device( rhs.m_device )
3696         , m_allocator( rhs.m_allocator )
3697         , m_dispatcher( rhs.m_dispatcher )
3698       {}
3699       BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA const & ) = delete;
operator =(BufferCollectionFUCHSIA && rhs)3700       BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT
3701       {
3702         if ( this != &rhs )
3703         {
3704           if ( m_bufferCollectionFUCHSIA )
3705           {
3706             getDispatcher()->vkDestroyBufferCollectionFUCHSIA(
3707               m_device, static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ), m_allocator );
3708           }
3709           m_bufferCollectionFUCHSIA =
3710             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferCollectionFUCHSIA, {} );
3711           m_device     = rhs.m_device;
3712           m_allocator  = rhs.m_allocator;
3713           m_dispatcher = rhs.m_dispatcher;
3714         }
3715         return *this;
3716       }
3717 
operator *() const3718       VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const & operator*() const VULKAN_HPP_NOEXCEPT
3719       {
3720         return m_bufferCollectionFUCHSIA;
3721       }
3722 
getDispatcher() const3723       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3724       {
3725         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3726         return m_dispatcher;
3727       }
3728 
3729       //=== VK_FUCHSIA_buffer_collection ===
3730 
3731       void setImageConstraints( const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo ) const;
3732 
3733       void
3734         setBufferConstraints( const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo ) const;
3735 
3736       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA getProperties() const;
3737 
3738     private:
3739       VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA                             m_bufferCollectionFUCHSIA;
3740       VkDevice                                                                  m_device;
3741       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
3742       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
3743     };
3744 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
3745 
3746     class BufferView
3747     {
3748     public:
3749       using CType = VkBufferView;
3750 
3751       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3752         VULKAN_HPP_NAMESPACE::ObjectType::eBufferView;
3753       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3754         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferView;
3755 
3756     public:
BufferView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3757       BufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3758                   VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const &                              createInfo,
3759                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3760         : m_device( *device )
3761         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3762             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3763         , m_dispatcher( device.getDispatcher() )
3764       {
3765         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
3766           getDispatcher()->vkCreateBufferView( static_cast<VkDevice>( *device ),
3767                                                reinterpret_cast<const VkBufferViewCreateInfo *>( &createInfo ),
3768                                                m_allocator,
3769                                                reinterpret_cast<VkBufferView *>( &m_bufferView ) ) );
3770         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3771         {
3772           throwResultException( result, "vkCreateBufferView" );
3773         }
3774       }
3775 
BufferView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkBufferView bufferView,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3776       BufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3777                   VkBufferView                                                                    bufferView,
3778                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3779         : m_bufferView( bufferView )
3780         , m_device( *device )
3781         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3782             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3783         , m_dispatcher( device.getDispatcher() )
3784       {}
3785 
BufferView(std::nullptr_t)3786       BufferView( std::nullptr_t ) {}
3787 
~BufferView()3788       ~BufferView()
3789       {
3790         if ( m_bufferView )
3791         {
3792           getDispatcher()->vkDestroyBufferView( m_device, static_cast<VkBufferView>( m_bufferView ), m_allocator );
3793         }
3794       }
3795 
3796       BufferView()                     = delete;
3797       BufferView( BufferView const & ) = delete;
BufferView(BufferView && rhs)3798       BufferView( BufferView && rhs ) VULKAN_HPP_NOEXCEPT
3799         : m_bufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferView, {} ) )
3800         , m_device( rhs.m_device )
3801         , m_allocator( rhs.m_allocator )
3802         , m_dispatcher( rhs.m_dispatcher )
3803       {}
3804       BufferView & operator=( BufferView const & ) = delete;
operator =(BufferView && rhs)3805       BufferView & operator                        =( BufferView && rhs ) VULKAN_HPP_NOEXCEPT
3806       {
3807         if ( this != &rhs )
3808         {
3809           if ( m_bufferView )
3810           {
3811             getDispatcher()->vkDestroyBufferView( m_device, static_cast<VkBufferView>( m_bufferView ), m_allocator );
3812           }
3813           m_bufferView = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferView, {} );
3814           m_device     = rhs.m_device;
3815           m_allocator  = rhs.m_allocator;
3816           m_dispatcher = rhs.m_dispatcher;
3817         }
3818         return *this;
3819       }
3820 
operator *() const3821       VULKAN_HPP_NAMESPACE::BufferView const & operator*() const VULKAN_HPP_NOEXCEPT
3822       {
3823         return m_bufferView;
3824       }
3825 
getDispatcher() const3826       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3827       {
3828         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3829         return m_dispatcher;
3830       }
3831 
3832     private:
3833       VULKAN_HPP_NAMESPACE::BufferView                                          m_bufferView;
3834       VkDevice                                                                  m_device;
3835       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
3836       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
3837     };
3838 
3839     class CommandPool
3840     {
3841     public:
3842       using CType = VkCommandPool;
3843 
3844       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3845         VULKAN_HPP_NAMESPACE::ObjectType::eCommandPool;
3846       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3847         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandPool;
3848 
3849     public:
CommandPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3850       CommandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3851                    VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const &                             createInfo,
3852                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3853         : m_device( *device )
3854         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3855             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3856         , m_dispatcher( device.getDispatcher() )
3857       {
3858         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
3859           getDispatcher()->vkCreateCommandPool( static_cast<VkDevice>( *device ),
3860                                                 reinterpret_cast<const VkCommandPoolCreateInfo *>( &createInfo ),
3861                                                 m_allocator,
3862                                                 reinterpret_cast<VkCommandPool *>( &m_commandPool ) ) );
3863         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3864         {
3865           throwResultException( result, "vkCreateCommandPool" );
3866         }
3867       }
3868 
CommandPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCommandPool commandPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3869       CommandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3870                    VkCommandPool                                                                   commandPool,
3871                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3872         : m_commandPool( commandPool )
3873         , m_device( *device )
3874         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3875             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3876         , m_dispatcher( device.getDispatcher() )
3877       {}
3878 
CommandPool(std::nullptr_t)3879       CommandPool( std::nullptr_t ) {}
3880 
~CommandPool()3881       ~CommandPool()
3882       {
3883         if ( m_commandPool )
3884         {
3885           getDispatcher()->vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( m_commandPool ), m_allocator );
3886         }
3887       }
3888 
3889       CommandPool()                      = delete;
3890       CommandPool( CommandPool const & ) = delete;
CommandPool(CommandPool && rhs)3891       CommandPool( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT
3892         : m_commandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} ) )
3893         , m_device( rhs.m_device )
3894         , m_allocator( rhs.m_allocator )
3895         , m_dispatcher( rhs.m_dispatcher )
3896       {}
3897       CommandPool & operator=( CommandPool const & ) = delete;
operator =(CommandPool && rhs)3898       CommandPool & operator                         =( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT
3899       {
3900         if ( this != &rhs )
3901         {
3902           if ( m_commandPool )
3903           {
3904             getDispatcher()->vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( m_commandPool ), m_allocator );
3905           }
3906           m_commandPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} );
3907           m_device      = rhs.m_device;
3908           m_allocator   = rhs.m_allocator;
3909           m_dispatcher  = rhs.m_dispatcher;
3910         }
3911         return *this;
3912       }
3913 
operator *() const3914       VULKAN_HPP_NAMESPACE::CommandPool const & operator*() const VULKAN_HPP_NOEXCEPT
3915       {
3916         return m_commandPool;
3917       }
3918 
getDispatcher() const3919       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3920       {
3921         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3922         return m_dispatcher;
3923       }
3924 
3925       //=== VK_VERSION_1_0 ===
3926 
3927       void reset( VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
3928 
3929       //=== VK_VERSION_1_1 ===
3930 
3931       void trim( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
3932         VULKAN_HPP_NOEXCEPT;
3933 
3934       //=== VK_KHR_maintenance1 ===
3935 
3936       void trimKHR( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
3937         VULKAN_HPP_NOEXCEPT;
3938 
3939     private:
3940       VULKAN_HPP_NAMESPACE::CommandPool                                         m_commandPool;
3941       VkDevice                                                                  m_device;
3942       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
3943       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
3944     };
3945 
3946     class CommandBuffer
3947     {
3948     public:
3949       using CType = VkCommandBuffer;
3950 
3951       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3952         VULKAN_HPP_NAMESPACE::ObjectType::eCommandBuffer;
3953       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3954         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandBuffer;
3955 
3956     public:
CommandBuffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCommandBuffer commandBuffer,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool const & commandPool)3957       CommandBuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &      device,
3958                      VkCommandBuffer                                                      commandBuffer,
3959                      VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool const & commandPool )
3960         : m_commandBuffer( commandBuffer )
3961         , m_device( *device )
3962         , m_commandPool( *commandPool )
3963         , m_dispatcher( device.getDispatcher() )
3964       {}
3965 
CommandBuffer(VkCommandBuffer commandBuffer,VkDevice device,VkCommandPool commandPool,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher)3966       CommandBuffer( VkCommandBuffer                                                           commandBuffer,
3967                      VkDevice                                                                  device,
3968                      VkCommandPool                                                             commandPool,
3969                      VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher )
3970         : m_commandBuffer( commandBuffer ), m_device( device ), m_commandPool( commandPool ), m_dispatcher( dispatcher )
3971       {}
CommandBuffer(std::nullptr_t)3972       CommandBuffer( std::nullptr_t ) {}
3973 
~CommandBuffer()3974       ~CommandBuffer()
3975       {
3976         if ( m_commandBuffer )
3977         {
3978           getDispatcher()->vkFreeCommandBuffers(
3979             m_device, m_commandPool, 1, reinterpret_cast<VkCommandBuffer const *>( &m_commandBuffer ) );
3980         }
3981       }
3982 
3983       CommandBuffer()                        = delete;
3984       CommandBuffer( CommandBuffer const & ) = delete;
CommandBuffer(CommandBuffer && rhs)3985       CommandBuffer( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT
3986         : m_commandBuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandBuffer, {} ) )
3987         , m_device( rhs.m_device )
3988         , m_commandPool( rhs.m_commandPool )
3989         , m_dispatcher( rhs.m_dispatcher )
3990       {}
3991       CommandBuffer & operator=( CommandBuffer const & ) = delete;
operator =(CommandBuffer && rhs)3992       CommandBuffer & operator                           =( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT
3993       {
3994         if ( this != &rhs )
3995         {
3996           if ( m_commandBuffer )
3997           {
3998             getDispatcher()->vkFreeCommandBuffers(
3999               m_device, m_commandPool, 1, reinterpret_cast<VkCommandBuffer const *>( &m_commandBuffer ) );
4000           }
4001           m_commandBuffer = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandBuffer, {} );
4002           m_device        = rhs.m_device;
4003           m_commandPool   = rhs.m_commandPool;
4004           m_dispatcher    = rhs.m_dispatcher;
4005         }
4006         return *this;
4007       }
4008 
operator *() const4009       VULKAN_HPP_NAMESPACE::CommandBuffer const & operator*() const VULKAN_HPP_NOEXCEPT
4010       {
4011         return m_commandBuffer;
4012       }
4013 
getDispatcher() const4014       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4015       {
4016         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
4017         return m_dispatcher;
4018       }
4019 
4020       //=== VK_VERSION_1_0 ===
4021 
4022       void begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo ) const;
4023 
4024       void end() const;
4025 
4026       void reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
4027 
4028       void bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
4029                          VULKAN_HPP_NAMESPACE::Pipeline          pipeline ) const VULKAN_HPP_NOEXCEPT;
4030 
4031       void setViewport( uint32_t                                                 firstViewport,
4032                         ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT;
4033 
4034       void setScissor( uint32_t                                               firstScissor,
4035                        ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT;
4036 
4037       void setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT;
4038 
4039       void setDepthBias( float depthBiasConstantFactor,
4040                          float depthBiasClamp,
4041                          float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT;
4042 
4043       void setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT;
4044 
4045       void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT;
4046 
4047       void setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
4048                                   uint32_t                               compareMask ) const VULKAN_HPP_NOEXCEPT;
4049 
4050       void setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
4051                                 uint32_t                               writeMask ) const VULKAN_HPP_NOEXCEPT;
4052 
4053       void setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
4054                                 uint32_t                               reference ) const VULKAN_HPP_NOEXCEPT;
4055 
4056       void bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint                       pipelineBindPoint,
4057                                VULKAN_HPP_NAMESPACE::PipelineLayout                          layout,
4058                                uint32_t                                                      firstSet,
4059                                ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,
4060                                ArrayProxy<const uint32_t> const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT;
4061 
4062       void bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4063                             VULKAN_HPP_NAMESPACE::DeviceSize offset,
4064                             VULKAN_HPP_NAMESPACE::IndexType  indexType ) const VULKAN_HPP_NOEXCEPT;
4065 
4066       void bindVertexBuffers( uint32_t                                                   firstBinding,
4067                               ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
4068                               ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets ) const
4069         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4070 
4071       void draw( uint32_t vertexCount,
4072                  uint32_t instanceCount,
4073                  uint32_t firstVertex,
4074                  uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
4075 
4076       void drawIndexed( uint32_t indexCount,
4077                         uint32_t instanceCount,
4078                         uint32_t firstIndex,
4079                         int32_t  vertexOffset,
4080                         uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
4081 
4082       void drawIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4083                          VULKAN_HPP_NAMESPACE::DeviceSize offset,
4084                          uint32_t                         drawCount,
4085                          uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4086 
4087       void drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4088                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
4089                                 uint32_t                         drawCount,
4090                                 uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4091 
4092       void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
4093 
4094       void dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4095                              VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT;
4096 
4097       void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer                               srcBuffer,
4098                        VULKAN_HPP_NAMESPACE::Buffer                               dstBuffer,
4099                        ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
4100 
4101       void copyImage( VULKAN_HPP_NAMESPACE::Image                               srcImage,
4102                       VULKAN_HPP_NAMESPACE::ImageLayout                         srcImageLayout,
4103                       VULKAN_HPP_NAMESPACE::Image                               dstImage,
4104                       VULKAN_HPP_NAMESPACE::ImageLayout                         dstImageLayout,
4105                       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
4106 
4107       void blitImage( VULKAN_HPP_NAMESPACE::Image                               srcImage,
4108                       VULKAN_HPP_NAMESPACE::ImageLayout                         srcImageLayout,
4109                       VULKAN_HPP_NAMESPACE::Image                               dstImage,
4110                       VULKAN_HPP_NAMESPACE::ImageLayout                         dstImageLayout,
4111                       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,
4112                       VULKAN_HPP_NAMESPACE::Filter                              filter ) const VULKAN_HPP_NOEXCEPT;
4113 
4114       void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer                                    srcBuffer,
4115                               VULKAN_HPP_NAMESPACE::Image                                     dstImage,
4116                               VULKAN_HPP_NAMESPACE::ImageLayout                               dstImageLayout,
4117                               ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const
4118         VULKAN_HPP_NOEXCEPT;
4119 
4120       void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image                                     srcImage,
4121                               VULKAN_HPP_NAMESPACE::ImageLayout                               srcImageLayout,
4122                               VULKAN_HPP_NAMESPACE::Buffer                                    dstBuffer,
4123                               ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const
4124         VULKAN_HPP_NOEXCEPT;
4125 
4126       template <typename T>
4127       void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
4128                          VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
4129                          ArrayProxy<const T> const &      data ) const VULKAN_HPP_NOEXCEPT;
4130 
4131       void fillBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
4132                        VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
4133                        VULKAN_HPP_NAMESPACE::DeviceSize size,
4134                        uint32_t                         data ) const VULKAN_HPP_NOEXCEPT;
4135 
4136       void clearColorImage( VULKAN_HPP_NAMESPACE::Image                                           image,
4137                             VULKAN_HPP_NAMESPACE::ImageLayout                                     imageLayout,
4138                             const VULKAN_HPP_NAMESPACE::ClearColorValue &                         color,
4139                             ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const
4140         VULKAN_HPP_NOEXCEPT;
4141 
4142       void clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image                                           image,
4143                                    VULKAN_HPP_NAMESPACE::ImageLayout                                     imageLayout,
4144                                    const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue &                  depthStencil,
4145                                    ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const
4146         VULKAN_HPP_NOEXCEPT;
4147 
4148       void
4149         clearAttachments( ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,
4150                           ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const & rects ) const VULKAN_HPP_NOEXCEPT;
4151 
4152       void
4153         resolveImage( VULKAN_HPP_NAMESPACE::Image                                  srcImage,
4154                       VULKAN_HPP_NAMESPACE::ImageLayout                            srcImageLayout,
4155                       VULKAN_HPP_NAMESPACE::Image                                  dstImage,
4156                       VULKAN_HPP_NAMESPACE::ImageLayout                            dstImageLayout,
4157                       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions ) const VULKAN_HPP_NOEXCEPT;
4158 
4159       void setEvent( VULKAN_HPP_NAMESPACE::Event event,
4160                      VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask
4161                        VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
4162 
4163       void resetEvent( VULKAN_HPP_NAMESPACE::Event event,
4164                        VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask
4165                          VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
4166 
4167       void waitEvents( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &               events,
4168                        VULKAN_HPP_NAMESPACE::PipelineStageFlags                            srcStageMask,
4169                        VULKAN_HPP_NAMESPACE::PipelineStageFlags                            dstStageMask,
4170                        ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
4171                        ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
4172                        ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const &  imageMemoryBarriers ) const
4173         VULKAN_HPP_NOEXCEPT;
4174 
4175       void pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags                            srcStageMask,
4176                             VULKAN_HPP_NAMESPACE::PipelineStageFlags                            dstStageMask,
4177                             VULKAN_HPP_NAMESPACE::DependencyFlags                               dependencyFlags,
4178                             ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
4179                             ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
4180                             ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const &  imageMemoryBarriers )
4181         const VULKAN_HPP_NOEXCEPT;
4182 
4183       void beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
4184                        uint32_t                        query,
4185                        VULKAN_HPP_NAMESPACE::QueryControlFlags flags
4186                          VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
4187 
4188       void endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT;
4189 
4190       void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
4191                            uint32_t                        firstQuery,
4192                            uint32_t                        queryCount ) const VULKAN_HPP_NOEXCEPT;
4193 
4194       void writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
4195                            VULKAN_HPP_NAMESPACE::QueryPool             queryPool,
4196                            uint32_t                                    query ) const VULKAN_HPP_NOEXCEPT;
4197 
4198       void copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool  queryPool,
4199                                  uint32_t                         firstQuery,
4200                                  uint32_t                         queryCount,
4201                                  VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
4202                                  VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
4203                                  VULKAN_HPP_NAMESPACE::DeviceSize stride,
4204                                  VULKAN_HPP_NAMESPACE::QueryResultFlags flags
4205                                    VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
4206 
4207       template <typename T>
4208       void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout   layout,
4209                           VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags,
4210                           uint32_t                               offset,
4211                           ArrayProxy<const T> const &            values ) const VULKAN_HPP_NOEXCEPT;
4212 
4213       void beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
4214                             VULKAN_HPP_NAMESPACE::SubpassContents             contents ) const VULKAN_HPP_NOEXCEPT;
4215 
4216       void nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT;
4217 
4218       void endRenderPass() const VULKAN_HPP_NOEXCEPT;
4219 
4220       void executeCommands( ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers ) const
4221         VULKAN_HPP_NOEXCEPT;
4222 
4223       //=== VK_VERSION_1_1 ===
4224 
4225       void setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT;
4226 
4227       void dispatchBase( uint32_t baseGroupX,
4228                          uint32_t baseGroupY,
4229                          uint32_t baseGroupZ,
4230                          uint32_t groupCountX,
4231                          uint32_t groupCountY,
4232                          uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
4233 
4234       //=== VK_VERSION_1_2 ===
4235 
4236       void drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4237                               VULKAN_HPP_NAMESPACE::DeviceSize offset,
4238                               VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
4239                               VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
4240                               uint32_t                         maxDrawCount,
4241                               uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4242 
4243       void drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4244                                      VULKAN_HPP_NAMESPACE::DeviceSize offset,
4245                                      VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
4246                                      VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
4247                                      uint32_t                         maxDrawCount,
4248                                      uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4249 
4250       void
4251         beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
4252                           const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT;
4253 
4254       void nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,
4255                          const VULKAN_HPP_NAMESPACE::SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
4256 
4257       void endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
4258 
4259       //=== VK_EXT_debug_marker ===
4260 
4261       void debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const
4262         VULKAN_HPP_NOEXCEPT;
4263 
4264       void debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT;
4265 
4266       void debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const
4267         VULKAN_HPP_NOEXCEPT;
4268 
4269 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
4270       //=== VK_KHR_video_queue ===
4271 
4272       void beginVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo ) const
4273         VULKAN_HPP_NOEXCEPT;
4274 
4275       void endVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo ) const
4276         VULKAN_HPP_NOEXCEPT;
4277 
4278       void controlVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo ) const
4279         VULKAN_HPP_NOEXCEPT;
4280 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
4281 
4282 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
4283       //=== VK_KHR_video_decode_queue ===
4284 
4285       void decodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & frameInfo ) const VULKAN_HPP_NOEXCEPT;
4286 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
4287 
4288       //=== VK_EXT_transform_feedback ===
4289 
4290       void bindTransformFeedbackBuffersEXT( uint32_t                                                   firstBinding,
4291                                             ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
4292                                             ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
4293                                             ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes
4294                                               VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const
4295         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4296 
4297       void beginTransformFeedbackEXT( uint32_t                                               firstCounterBuffer,
4298                                       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,
4299                                       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets
4300                                         VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const
4301         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4302 
4303       void endTransformFeedbackEXT( uint32_t                                               firstCounterBuffer,
4304                                     ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,
4305                                     ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets
4306                                       VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const
4307         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4308 
4309       void beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
4310                                  uint32_t                                query,
4311                                  VULKAN_HPP_NAMESPACE::QueryControlFlags flags,
4312                                  uint32_t                                index ) const VULKAN_HPP_NOEXCEPT;
4313 
4314       void endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
4315                                uint32_t                        query,
4316                                uint32_t                        index ) const VULKAN_HPP_NOEXCEPT;
4317 
4318       void drawIndirectByteCountEXT( uint32_t                         instanceCount,
4319                                      uint32_t                         firstInstance,
4320                                      VULKAN_HPP_NAMESPACE::Buffer     counterBuffer,
4321                                      VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,
4322                                      uint32_t                         counterOffset,
4323                                      uint32_t                         vertexStride ) const VULKAN_HPP_NOEXCEPT;
4324 
4325       //=== VK_NVX_binary_import ===
4326 
4327       void cuLaunchKernelNVX( const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT;
4328 
4329       //=== VK_AMD_draw_indirect_count ===
4330 
4331       void drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4332                                  VULKAN_HPP_NAMESPACE::DeviceSize offset,
4333                                  VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
4334                                  VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
4335                                  uint32_t                         maxDrawCount,
4336                                  uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4337 
4338       void drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4339                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
4340                                         VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
4341                                         VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
4342                                         uint32_t                         maxDrawCount,
4343                                         uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4344 
4345       //=== VK_KHR_device_group ===
4346 
4347       void setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT;
4348 
4349       void dispatchBaseKHR( uint32_t baseGroupX,
4350                             uint32_t baseGroupY,
4351                             uint32_t baseGroupZ,
4352                             uint32_t groupCountX,
4353                             uint32_t groupCountY,
4354                             uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
4355 
4356       //=== VK_KHR_push_descriptor ===
4357 
4358       void pushDescriptorSetKHR(
4359         VULKAN_HPP_NAMESPACE::PipelineBindPoint                            pipelineBindPoint,
4360         VULKAN_HPP_NAMESPACE::PipelineLayout                               layout,
4361         uint32_t                                                           set,
4362         ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT;
4363 
4364       void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
4365                                              VULKAN_HPP_NAMESPACE::PipelineLayout           layout,
4366                                              uint32_t                                       set,
4367                                              const void * pData ) const VULKAN_HPP_NOEXCEPT;
4368 
4369       //=== VK_EXT_conditional_rendering ===
4370 
4371       void beginConditionalRenderingEXT( const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT &
4372                                            conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT;
4373 
4374       void endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT;
4375 
4376       //=== VK_NV_clip_space_w_scaling ===
4377 
4378       void setViewportWScalingNV( uint32_t                                                           firstViewport,
4379                                   ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings )
4380         const VULKAN_HPP_NOEXCEPT;
4381 
4382       //=== VK_EXT_discard_rectangles ===
4383 
4384       void setDiscardRectangleEXT( uint32_t                                               firstDiscardRectangle,
4385                                    ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles ) const
4386         VULKAN_HPP_NOEXCEPT;
4387 
4388       //=== VK_KHR_create_renderpass2 ===
4389 
4390       void beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
4391                                 const VULKAN_HPP_NAMESPACE::SubpassBeginInfo &    subpassBeginInfo ) const
4392         VULKAN_HPP_NOEXCEPT;
4393 
4394       void nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,
4395                             const VULKAN_HPP_NAMESPACE::SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
4396 
4397       void endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
4398 
4399       //=== VK_EXT_debug_utils ===
4400 
4401       void
4402         beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
4403 
4404       void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT;
4405 
4406       void insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const
4407         VULKAN_HPP_NOEXCEPT;
4408 
4409       //=== VK_EXT_sample_locations ===
4410 
4411       void setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo ) const
4412         VULKAN_HPP_NOEXCEPT;
4413 
4414       //=== VK_KHR_acceleration_structure ===
4415 
4416       void buildAccelerationStructuresKHR(
4417         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
4418         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const &
4419           pBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4420 
4421       void buildAccelerationStructuresIndirectKHR(
4422         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
4423         ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const & indirectDeviceAddresses,
4424         ArrayProxy<const uint32_t> const &                            indirectStrides,
4425         ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4426 
4427       void copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const
4428         VULKAN_HPP_NOEXCEPT;
4429 
4430       void copyAccelerationStructureToMemoryKHR(
4431         const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
4432 
4433       void copyMemoryToAccelerationStructureKHR(
4434         const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
4435 
4436       void writeAccelerationStructuresPropertiesKHR(
4437         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
4438         VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
4439         VULKAN_HPP_NAMESPACE::QueryPool                                          queryPool,
4440         uint32_t                                                                 firstQuery ) const VULKAN_HPP_NOEXCEPT;
4441 
4442       //=== VK_NV_shading_rate_image ===
4443 
4444       void bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView   imageView,
4445                                    VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT;
4446 
4447       void setViewportShadingRatePaletteNV( uint32_t firstViewport,
4448                                             ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const &
4449                                               shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT;
4450 
4451       void setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType,
4452                                    ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const &
4453                                      customSampleOrders ) const VULKAN_HPP_NOEXCEPT;
4454 
4455       //=== VK_NV_ray_tracing ===
4456 
4457       void buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info,
4458                                          VULKAN_HPP_NAMESPACE::Buffer                              instanceData,
4459                                          VULKAN_HPP_NAMESPACE::DeviceSize                          instanceOffset,
4460                                          VULKAN_HPP_NAMESPACE::Bool32                              update,
4461                                          VULKAN_HPP_NAMESPACE::AccelerationStructureNV             dst,
4462                                          VULKAN_HPP_NAMESPACE::AccelerationStructureNV             src,
4463                                          VULKAN_HPP_NAMESPACE::Buffer                              scratch,
4464                                          VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT;
4465 
4466       void copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV          dst,
4467                                         VULKAN_HPP_NAMESPACE::AccelerationStructureNV          src,
4468                                         VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode ) const
4469         VULKAN_HPP_NOEXCEPT;
4470 
4471       void traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer     raygenShaderBindingTableBuffer,
4472                         VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset,
4473                         VULKAN_HPP_NAMESPACE::Buffer     missShaderBindingTableBuffer,
4474                         VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset,
4475                         VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride,
4476                         VULKAN_HPP_NAMESPACE::Buffer     hitShaderBindingTableBuffer,
4477                         VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset,
4478                         VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride,
4479                         VULKAN_HPP_NAMESPACE::Buffer     callableShaderBindingTableBuffer,
4480                         VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset,
4481                         VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride,
4482                         uint32_t                         width,
4483                         uint32_t                         height,
4484                         uint32_t                         depth ) const VULKAN_HPP_NOEXCEPT;
4485 
4486       void writeAccelerationStructuresPropertiesNV(
4487         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,
4488         VULKAN_HPP_NAMESPACE::QueryType                                         queryType,
4489         VULKAN_HPP_NAMESPACE::QueryPool                                         queryPool,
4490         uint32_t                                                                firstQuery ) const VULKAN_HPP_NOEXCEPT;
4491 
4492       //=== VK_KHR_draw_indirect_count ===
4493 
4494       void drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4495                                  VULKAN_HPP_NAMESPACE::DeviceSize offset,
4496                                  VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
4497                                  VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
4498                                  uint32_t                         maxDrawCount,
4499                                  uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4500 
4501       void drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4502                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
4503                                         VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
4504                                         VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
4505                                         uint32_t                         maxDrawCount,
4506                                         uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4507 
4508       //=== VK_AMD_buffer_marker ===
4509 
4510       void writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
4511                                  VULKAN_HPP_NAMESPACE::Buffer                dstBuffer,
4512                                  VULKAN_HPP_NAMESPACE::DeviceSize            dstOffset,
4513                                  uint32_t                                    marker ) const VULKAN_HPP_NOEXCEPT;
4514 
4515       //=== VK_NV_mesh_shader ===
4516 
4517       void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT;
4518 
4519       void drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4520                                     VULKAN_HPP_NAMESPACE::DeviceSize offset,
4521                                     uint32_t                         drawCount,
4522                                     uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4523 
4524       void drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
4525                                          VULKAN_HPP_NAMESPACE::DeviceSize offset,
4526                                          VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
4527                                          VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
4528                                          uint32_t                         maxDrawCount,
4529                                          uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
4530 
4531       //=== VK_NV_scissor_exclusive ===
4532 
4533       void setExclusiveScissorNV( uint32_t                                               firstExclusiveScissor,
4534                                   ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors ) const
4535         VULKAN_HPP_NOEXCEPT;
4536 
4537       //=== VK_NV_device_diagnostic_checkpoints ===
4538 
4539       void setCheckpointNV( const void * pCheckpointMarker ) const VULKAN_HPP_NOEXCEPT;
4540 
4541       //=== VK_INTEL_performance_query ===
4542 
4543       void setPerformanceMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo ) const;
4544 
4545       void setPerformanceStreamMarkerINTEL(
4546         const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo ) const;
4547 
4548       void setPerformanceOverrideINTEL( const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo ) const;
4549 
4550       //=== VK_KHR_fragment_shading_rate ===
4551 
4552       void setFragmentShadingRateKHR(
4553         const VULKAN_HPP_NAMESPACE::Extent2D &                       fragmentSize,
4554         const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT;
4555 
4556       //=== VK_EXT_line_rasterization ===
4557 
4558       void setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT;
4559 
4560       //=== VK_EXT_extended_dynamic_state ===
4561 
4562       void setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
4563         VULKAN_HPP_NOEXCEPT;
4564 
4565       void setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT;
4566 
4567       void
4568         setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT;
4569 
4570       void setViewportWithCountEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const
4571         VULKAN_HPP_NOEXCEPT;
4572 
4573       void setScissorWithCountEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const
4574         VULKAN_HPP_NOEXCEPT;
4575 
4576       void bindVertexBuffers2EXT(
4577         uint32_t                                                         firstBinding,
4578         ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &           buffers,
4579         ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const &       offsets,
4580         ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
4581         ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides
4582           VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4583 
4584       void setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT;
4585 
4586       void setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT;
4587 
4588       void setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT;
4589 
4590       void setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT;
4591 
4592       void setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT;
4593 
4594       void setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
4595                             VULKAN_HPP_NAMESPACE::StencilOp        failOp,
4596                             VULKAN_HPP_NAMESPACE::StencilOp        passOp,
4597                             VULKAN_HPP_NAMESPACE::StencilOp        depthFailOp,
4598                             VULKAN_HPP_NAMESPACE::CompareOp        compareOp ) const VULKAN_HPP_NOEXCEPT;
4599 
4600       //=== VK_NV_device_generated_commands ===
4601 
4602       void preprocessGeneratedCommandsNV(
4603         const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT;
4604 
4605       void executeGeneratedCommandsNV(
4606         VULKAN_HPP_NAMESPACE::Bool32                          isPreprocessed,
4607         const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT;
4608 
4609       void bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
4610                                       VULKAN_HPP_NAMESPACE::Pipeline          pipeline,
4611                                       uint32_t                                groupIndex ) const VULKAN_HPP_NOEXCEPT;
4612 
4613 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
4614       //=== VK_KHR_video_encode_queue ===
4615 
4616       void encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT;
4617 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
4618 
4619       //=== VK_KHR_synchronization2 ===
4620 
4621       void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event                     event,
4622                          const VULKAN_HPP_NAMESPACE::DependencyInfoKHR & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
4623 
4624       void resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event                  event,
4625                            VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask ) const VULKAN_HPP_NOEXCEPT;
4626 
4627       void waitEvents2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &             events,
4628                            ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfoKHR> const & dependencyInfos ) const
4629         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4630 
4631       void
4632         pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfoKHR & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
4633 
4634       void writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,
4635                                VULKAN_HPP_NAMESPACE::QueryPool              queryPool,
4636                                uint32_t                                     query ) const VULKAN_HPP_NOEXCEPT;
4637 
4638       void writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,
4639                                   VULKAN_HPP_NAMESPACE::Buffer                 dstBuffer,
4640                                   VULKAN_HPP_NAMESPACE::DeviceSize             dstOffset,
4641                                   uint32_t                                     marker ) const VULKAN_HPP_NOEXCEPT;
4642 
4643       //=== VK_NV_fragment_shading_rate_enums ===
4644 
4645       void setFragmentShadingRateEnumNV(
4646         VULKAN_HPP_NAMESPACE::FragmentShadingRateNV                  shadingRate,
4647         const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT;
4648 
4649       //=== VK_KHR_copy_commands2 ===
4650 
4651       void copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT;
4652 
4653       void copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR & copyImageInfo ) const VULKAN_HPP_NOEXCEPT;
4654 
4655       void copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR & copyBufferToImageInfo ) const
4656         VULKAN_HPP_NOEXCEPT;
4657 
4658       void copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR & copyImageToBufferInfo ) const
4659         VULKAN_HPP_NOEXCEPT;
4660 
4661       void blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR & blitImageInfo ) const VULKAN_HPP_NOEXCEPT;
4662 
4663       void resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR & resolveImageInfo ) const
4664         VULKAN_HPP_NOEXCEPT;
4665 
4666       //=== VK_KHR_ray_tracing_pipeline ===
4667 
4668       void traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
4669                          const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,
4670                          const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,
4671                          const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,
4672                          uint32_t                                                    width,
4673                          uint32_t                                                    height,
4674                          uint32_t                                                    depth ) const VULKAN_HPP_NOEXCEPT;
4675 
4676       void traceRaysIndirectKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
4677                                  const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,
4678                                  const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,
4679                                  const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,
4680                                  VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT;
4681 
4682       void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT;
4683 
4684       //=== VK_EXT_vertex_input_dynamic_state ===
4685 
4686       void setVertexInputEXT(
4687         ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const & vertexBindingDescriptions,
4688         ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const &
4689           vertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT;
4690 
4691       //=== VK_HUAWEI_subpass_shading ===
4692 
4693       void subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT;
4694 
4695       //=== VK_HUAWEI_invocation_mask ===
4696 
4697       void bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView   imageView,
4698                                      VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT;
4699 
4700       //=== VK_EXT_extended_dynamic_state2 ===
4701 
4702       void setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT;
4703 
4704       void
4705         setRasterizerDiscardEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT;
4706 
4707       void setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT;
4708 
4709       void setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT;
4710 
4711       void
4712         setPrimitiveRestartEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT;
4713 
4714       //=== VK_EXT_color_write_enable ===
4715 
4716       void setColorWriteEnableEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables ) const
4717         VULKAN_HPP_NOEXCEPT;
4718 
4719       //=== VK_EXT_multi_draw ===
4720 
4721       void drawMultiEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,
4722                          uint32_t                                                         instanceCount,
4723                          uint32_t                                                         firstInstance,
4724                          uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
4725 
4726       void drawMultiIndexedEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,
4727                                 uint32_t                                                                instanceCount,
4728                                 uint32_t                                                                firstInstance,
4729                                 uint32_t                                                                stride,
4730                                 Optional<const int32_t> vertexOffset
4731                                   VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
4732 
4733     private:
4734       VULKAN_HPP_NAMESPACE::CommandBuffer                                       m_commandBuffer;
4735       VkDevice                                                                  m_device;
4736       VkCommandPool                                                             m_commandPool;
4737       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
4738     };
4739 
4740     class CommandBuffers : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer>
4741     {
4742     public:
CommandBuffers(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo)4743       CommandBuffers( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
4744                       VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const &         allocateInfo )
4745       {
4746         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
4747         std::vector<VkCommandBuffer> commandBuffers( allocateInfo.commandBufferCount );
4748         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
4749           dispatcher->vkAllocateCommandBuffers( static_cast<VkDevice>( *device ),
4750                                                 reinterpret_cast<const VkCommandBufferAllocateInfo *>( &allocateInfo ),
4751                                                 commandBuffers.data() ) );
4752         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
4753         {
4754           this->reserve( allocateInfo.commandBufferCount );
4755           for ( auto const & commandBuffer : commandBuffers )
4756           {
4757             this->emplace_back( commandBuffer,
4758                                 static_cast<VkDevice>( *device ),
4759                                 static_cast<VkCommandPool>( allocateInfo.commandPool ),
4760                                 dispatcher );
4761           }
4762         }
4763         else
4764         {
4765           throwResultException( result, "vkAllocateCommandBuffers" );
4766         }
4767       }
4768 
4769       CommandBuffers()                         = delete;
4770       CommandBuffers( CommandBuffers const & ) = delete;
4771       CommandBuffers( CommandBuffers && rhs )  = default;
4772       CommandBuffers & operator=( CommandBuffers const & ) = delete;
4773       CommandBuffers & operator=( CommandBuffers && rhs ) = default;
4774     };
4775 
4776     class CuFunctionNVX
4777     {
4778     public:
4779       using CType = VkCuFunctionNVX;
4780 
4781       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4782         VULKAN_HPP_NAMESPACE::ObjectType::eCuFunctionNVX;
4783       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4784         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuFunctionNVX;
4785 
4786     public:
CuFunctionNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4787       CuFunctionNVX(
4788         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4789         VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const &                           createInfo,
4790         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4791         : m_device( *device )
4792         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4793             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4794         , m_dispatcher( device.getDispatcher() )
4795       {
4796         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
4797           getDispatcher()->vkCreateCuFunctionNVX( static_cast<VkDevice>( *device ),
4798                                                   reinterpret_cast<const VkCuFunctionCreateInfoNVX *>( &createInfo ),
4799                                                   m_allocator,
4800                                                   reinterpret_cast<VkCuFunctionNVX *>( &m_cuFunctionNVX ) ) );
4801         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4802         {
4803           throwResultException( result, "vkCreateCuFunctionNVX" );
4804         }
4805       }
4806 
CuFunctionNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCuFunctionNVX cuFunctionNVX,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4807       CuFunctionNVX(
4808         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4809         VkCuFunctionNVX                                                                 cuFunctionNVX,
4810         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4811         : m_cuFunctionNVX( cuFunctionNVX )
4812         , m_device( *device )
4813         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4814             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4815         , m_dispatcher( device.getDispatcher() )
4816       {}
4817 
CuFunctionNVX(std::nullptr_t)4818       CuFunctionNVX( std::nullptr_t ) {}
4819 
~CuFunctionNVX()4820       ~CuFunctionNVX()
4821       {
4822         if ( m_cuFunctionNVX )
4823         {
4824           getDispatcher()->vkDestroyCuFunctionNVX(
4825             m_device, static_cast<VkCuFunctionNVX>( m_cuFunctionNVX ), m_allocator );
4826         }
4827       }
4828 
4829       CuFunctionNVX()                        = delete;
4830       CuFunctionNVX( CuFunctionNVX const & ) = delete;
CuFunctionNVX(CuFunctionNVX && rhs)4831       CuFunctionNVX( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT
4832         : m_cuFunctionNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_cuFunctionNVX, {} ) )
4833         , m_device( rhs.m_device )
4834         , m_allocator( rhs.m_allocator )
4835         , m_dispatcher( rhs.m_dispatcher )
4836       {}
4837       CuFunctionNVX & operator=( CuFunctionNVX const & ) = delete;
operator =(CuFunctionNVX && rhs)4838       CuFunctionNVX & operator                           =( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT
4839       {
4840         if ( this != &rhs )
4841         {
4842           if ( m_cuFunctionNVX )
4843           {
4844             getDispatcher()->vkDestroyCuFunctionNVX(
4845               m_device, static_cast<VkCuFunctionNVX>( m_cuFunctionNVX ), m_allocator );
4846           }
4847           m_cuFunctionNVX = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_cuFunctionNVX, {} );
4848           m_device        = rhs.m_device;
4849           m_allocator     = rhs.m_allocator;
4850           m_dispatcher    = rhs.m_dispatcher;
4851         }
4852         return *this;
4853       }
4854 
operator *() const4855       VULKAN_HPP_NAMESPACE::CuFunctionNVX const & operator*() const VULKAN_HPP_NOEXCEPT
4856       {
4857         return m_cuFunctionNVX;
4858       }
4859 
getDispatcher() const4860       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4861       {
4862         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
4863         return m_dispatcher;
4864       }
4865 
4866     private:
4867       VULKAN_HPP_NAMESPACE::CuFunctionNVX                                       m_cuFunctionNVX;
4868       VkDevice                                                                  m_device;
4869       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
4870       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
4871     };
4872 
4873     class CuModuleNVX
4874     {
4875     public:
4876       using CType = VkCuModuleNVX;
4877 
4878       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4879         VULKAN_HPP_NAMESPACE::ObjectType::eCuModuleNVX;
4880       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4881         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuModuleNVX;
4882 
4883     public:
CuModuleNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4884       CuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4885                    VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const &                             createInfo,
4886                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4887         : m_device( *device )
4888         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4889             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4890         , m_dispatcher( device.getDispatcher() )
4891       {
4892         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
4893           getDispatcher()->vkCreateCuModuleNVX( static_cast<VkDevice>( *device ),
4894                                                 reinterpret_cast<const VkCuModuleCreateInfoNVX *>( &createInfo ),
4895                                                 m_allocator,
4896                                                 reinterpret_cast<VkCuModuleNVX *>( &m_cuModuleNVX ) ) );
4897         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4898         {
4899           throwResultException( result, "vkCreateCuModuleNVX" );
4900         }
4901       }
4902 
CuModuleNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCuModuleNVX cuModuleNVX,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4903       CuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4904                    VkCuModuleNVX                                                                   cuModuleNVX,
4905                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4906         : m_cuModuleNVX( cuModuleNVX )
4907         , m_device( *device )
4908         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4909             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4910         , m_dispatcher( device.getDispatcher() )
4911       {}
4912 
CuModuleNVX(std::nullptr_t)4913       CuModuleNVX( std::nullptr_t ) {}
4914 
~CuModuleNVX()4915       ~CuModuleNVX()
4916       {
4917         if ( m_cuModuleNVX )
4918         {
4919           getDispatcher()->vkDestroyCuModuleNVX( m_device, static_cast<VkCuModuleNVX>( m_cuModuleNVX ), m_allocator );
4920         }
4921       }
4922 
4923       CuModuleNVX()                      = delete;
4924       CuModuleNVX( CuModuleNVX const & ) = delete;
CuModuleNVX(CuModuleNVX && rhs)4925       CuModuleNVX( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT
4926         : m_cuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_cuModuleNVX, {} ) )
4927         , m_device( rhs.m_device )
4928         , m_allocator( rhs.m_allocator )
4929         , m_dispatcher( rhs.m_dispatcher )
4930       {}
4931       CuModuleNVX & operator=( CuModuleNVX const & ) = delete;
operator =(CuModuleNVX && rhs)4932       CuModuleNVX & operator                         =( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT
4933       {
4934         if ( this != &rhs )
4935         {
4936           if ( m_cuModuleNVX )
4937           {
4938             getDispatcher()->vkDestroyCuModuleNVX( m_device, static_cast<VkCuModuleNVX>( m_cuModuleNVX ), m_allocator );
4939           }
4940           m_cuModuleNVX = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_cuModuleNVX, {} );
4941           m_device      = rhs.m_device;
4942           m_allocator   = rhs.m_allocator;
4943           m_dispatcher  = rhs.m_dispatcher;
4944         }
4945         return *this;
4946       }
4947 
operator *() const4948       VULKAN_HPP_NAMESPACE::CuModuleNVX const & operator*() const VULKAN_HPP_NOEXCEPT
4949       {
4950         return m_cuModuleNVX;
4951       }
4952 
getDispatcher() const4953       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4954       {
4955         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
4956         return m_dispatcher;
4957       }
4958 
4959     private:
4960       VULKAN_HPP_NAMESPACE::CuModuleNVX                                         m_cuModuleNVX;
4961       VkDevice                                                                  m_device;
4962       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
4963       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
4964     };
4965 
4966     class DebugReportCallbackEXT
4967     {
4968     public:
4969       using CType = VkDebugReportCallbackEXT;
4970 
4971       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4972         VULKAN_HPP_NAMESPACE::ObjectType::eDebugReportCallbackEXT;
4973       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4974         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDebugReportCallbackEXT;
4975 
4976     public:
DebugReportCallbackEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4977       DebugReportCallbackEXT(
4978         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
4979         VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const &                  createInfo,
4980         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4981         : m_instance( *instance )
4982         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4983             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4984         , m_dispatcher( instance.getDispatcher() )
4985       {
4986         VULKAN_HPP_NAMESPACE::Result result =
4987           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDebugReportCallbackEXT(
4988             static_cast<VkInstance>( *instance ),
4989             reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>( &createInfo ),
4990             m_allocator,
4991             reinterpret_cast<VkDebugReportCallbackEXT *>( &m_debugReportCallbackEXT ) ) );
4992         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4993         {
4994           throwResultException( result, "vkCreateDebugReportCallbackEXT" );
4995         }
4996       }
4997 
DebugReportCallbackEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkDebugReportCallbackEXT debugReportCallbackEXT,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4998       DebugReportCallbackEXT(
4999         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
5000         VkDebugReportCallbackEXT                                                        debugReportCallbackEXT,
5001         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5002         : m_debugReportCallbackEXT( debugReportCallbackEXT )
5003         , m_instance( *instance )
5004         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5005             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5006         , m_dispatcher( instance.getDispatcher() )
5007       {}
5008 
DebugReportCallbackEXT(std::nullptr_t)5009       DebugReportCallbackEXT( std::nullptr_t ) {}
5010 
~DebugReportCallbackEXT()5011       ~DebugReportCallbackEXT()
5012       {
5013         if ( m_debugReportCallbackEXT )
5014         {
5015           getDispatcher()->vkDestroyDebugReportCallbackEXT(
5016             m_instance, static_cast<VkDebugReportCallbackEXT>( m_debugReportCallbackEXT ), m_allocator );
5017         }
5018       }
5019 
5020       DebugReportCallbackEXT()                                 = delete;
5021       DebugReportCallbackEXT( DebugReportCallbackEXT const & ) = delete;
DebugReportCallbackEXT(DebugReportCallbackEXT && rhs)5022       DebugReportCallbackEXT( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT
5023         : m_debugReportCallbackEXT(
5024             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_debugReportCallbackEXT, {} ) )
5025         , m_instance( rhs.m_instance )
5026         , m_allocator( rhs.m_allocator )
5027         , m_dispatcher( rhs.m_dispatcher )
5028       {}
5029       DebugReportCallbackEXT & operator=( DebugReportCallbackEXT const & ) = delete;
operator =(DebugReportCallbackEXT && rhs)5030       DebugReportCallbackEXT & operator=( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT
5031       {
5032         if ( this != &rhs )
5033         {
5034           if ( m_debugReportCallbackEXT )
5035           {
5036             getDispatcher()->vkDestroyDebugReportCallbackEXT(
5037               m_instance, static_cast<VkDebugReportCallbackEXT>( m_debugReportCallbackEXT ), m_allocator );
5038           }
5039           m_debugReportCallbackEXT =
5040             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_debugReportCallbackEXT, {} );
5041           m_instance   = rhs.m_instance;
5042           m_allocator  = rhs.m_allocator;
5043           m_dispatcher = rhs.m_dispatcher;
5044         }
5045         return *this;
5046       }
5047 
operator *() const5048       VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & operator*() const VULKAN_HPP_NOEXCEPT
5049       {
5050         return m_debugReportCallbackEXT;
5051       }
5052 
getDispatcher() const5053       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
5054       {
5055         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5056         return m_dispatcher;
5057       }
5058 
5059     private:
5060       VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT                                m_debugReportCallbackEXT;
5061       VkInstance                                                                  m_instance;
5062       const VkAllocationCallbacks *                                               m_allocator  = nullptr;
5063       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
5064     };
5065 
5066     class DebugUtilsMessengerEXT
5067     {
5068     public:
5069       using CType = VkDebugUtilsMessengerEXT;
5070 
5071       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5072         VULKAN_HPP_NAMESPACE::ObjectType::eDebugUtilsMessengerEXT;
5073       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5074         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
5075 
5076     public:
DebugUtilsMessengerEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5077       DebugUtilsMessengerEXT(
5078         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
5079         VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const &                  createInfo,
5080         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5081         : m_instance( *instance )
5082         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5083             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5084         , m_dispatcher( instance.getDispatcher() )
5085       {
5086         VULKAN_HPP_NAMESPACE::Result result =
5087           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDebugUtilsMessengerEXT(
5088             static_cast<VkInstance>( *instance ),
5089             reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>( &createInfo ),
5090             m_allocator,
5091             reinterpret_cast<VkDebugUtilsMessengerEXT *>( &m_debugUtilsMessengerEXT ) ) );
5092         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5093         {
5094           throwResultException( result, "vkCreateDebugUtilsMessengerEXT" );
5095         }
5096       }
5097 
DebugUtilsMessengerEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkDebugUtilsMessengerEXT debugUtilsMessengerEXT,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5098       DebugUtilsMessengerEXT(
5099         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
5100         VkDebugUtilsMessengerEXT                                                        debugUtilsMessengerEXT,
5101         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5102         : m_debugUtilsMessengerEXT( debugUtilsMessengerEXT )
5103         , m_instance( *instance )
5104         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5105             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5106         , m_dispatcher( instance.getDispatcher() )
5107       {}
5108 
DebugUtilsMessengerEXT(std::nullptr_t)5109       DebugUtilsMessengerEXT( std::nullptr_t ) {}
5110 
~DebugUtilsMessengerEXT()5111       ~DebugUtilsMessengerEXT()
5112       {
5113         if ( m_debugUtilsMessengerEXT )
5114         {
5115           getDispatcher()->vkDestroyDebugUtilsMessengerEXT(
5116             m_instance, static_cast<VkDebugUtilsMessengerEXT>( m_debugUtilsMessengerEXT ), m_allocator );
5117         }
5118       }
5119 
5120       DebugUtilsMessengerEXT()                                 = delete;
5121       DebugUtilsMessengerEXT( DebugUtilsMessengerEXT const & ) = delete;
DebugUtilsMessengerEXT(DebugUtilsMessengerEXT && rhs)5122       DebugUtilsMessengerEXT( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT
5123         : m_debugUtilsMessengerEXT(
5124             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_debugUtilsMessengerEXT, {} ) )
5125         , m_instance( rhs.m_instance )
5126         , m_allocator( rhs.m_allocator )
5127         , m_dispatcher( rhs.m_dispatcher )
5128       {}
5129       DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT const & ) = delete;
operator =(DebugUtilsMessengerEXT && rhs)5130       DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT
5131       {
5132         if ( this != &rhs )
5133         {
5134           if ( m_debugUtilsMessengerEXT )
5135           {
5136             getDispatcher()->vkDestroyDebugUtilsMessengerEXT(
5137               m_instance, static_cast<VkDebugUtilsMessengerEXT>( m_debugUtilsMessengerEXT ), m_allocator );
5138           }
5139           m_debugUtilsMessengerEXT =
5140             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_debugUtilsMessengerEXT, {} );
5141           m_instance   = rhs.m_instance;
5142           m_allocator  = rhs.m_allocator;
5143           m_dispatcher = rhs.m_dispatcher;
5144         }
5145         return *this;
5146       }
5147 
operator *() const5148       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & operator*() const VULKAN_HPP_NOEXCEPT
5149       {
5150         return m_debugUtilsMessengerEXT;
5151       }
5152 
getDispatcher() const5153       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
5154       {
5155         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5156         return m_dispatcher;
5157       }
5158 
5159     private:
5160       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT                                m_debugUtilsMessengerEXT;
5161       VkInstance                                                                  m_instance;
5162       const VkAllocationCallbacks *                                               m_allocator  = nullptr;
5163       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
5164     };
5165 
5166     class DeferredOperationKHR
5167     {
5168     public:
5169       using CType = VkDeferredOperationKHR;
5170 
5171       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5172         VULKAN_HPP_NAMESPACE::ObjectType::eDeferredOperationKHR;
5173       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5174         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
5175 
5176     public:
DeferredOperationKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5177       DeferredOperationKHR(
5178         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5179         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5180         : m_device( *device )
5181         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5182             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5183         , m_dispatcher( device.getDispatcher() )
5184       {
5185         VULKAN_HPP_NAMESPACE::Result result =
5186           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDeferredOperationKHR(
5187             static_cast<VkDevice>( *device ),
5188             m_allocator,
5189             reinterpret_cast<VkDeferredOperationKHR *>( &m_deferredOperationKHR ) ) );
5190         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5191         {
5192           throwResultException( result, "vkCreateDeferredOperationKHR" );
5193         }
5194       }
5195 
DeferredOperationKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDeferredOperationKHR deferredOperationKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5196       DeferredOperationKHR(
5197         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5198         VkDeferredOperationKHR                                                          deferredOperationKHR,
5199         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5200         : m_deferredOperationKHR( deferredOperationKHR )
5201         , m_device( *device )
5202         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5203             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5204         , m_dispatcher( device.getDispatcher() )
5205       {}
5206 
DeferredOperationKHR(std::nullptr_t)5207       DeferredOperationKHR( std::nullptr_t ) {}
5208 
~DeferredOperationKHR()5209       ~DeferredOperationKHR()
5210       {
5211         if ( m_deferredOperationKHR )
5212         {
5213           getDispatcher()->vkDestroyDeferredOperationKHR(
5214             m_device, static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ), m_allocator );
5215         }
5216       }
5217 
5218       DeferredOperationKHR()                               = delete;
5219       DeferredOperationKHR( DeferredOperationKHR const & ) = delete;
DeferredOperationKHR(DeferredOperationKHR && rhs)5220       DeferredOperationKHR( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT
5221         : m_deferredOperationKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_deferredOperationKHR,
5222                                                                                              {} ) )
5223         , m_device( rhs.m_device )
5224         , m_allocator( rhs.m_allocator )
5225         , m_dispatcher( rhs.m_dispatcher )
5226       {}
5227       DeferredOperationKHR & operator=( DeferredOperationKHR const & ) = delete;
operator =(DeferredOperationKHR && rhs)5228       DeferredOperationKHR & operator=( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT
5229       {
5230         if ( this != &rhs )
5231         {
5232           if ( m_deferredOperationKHR )
5233           {
5234             getDispatcher()->vkDestroyDeferredOperationKHR(
5235               m_device, static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ), m_allocator );
5236           }
5237           m_deferredOperationKHR =
5238             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_deferredOperationKHR, {} );
5239           m_device     = rhs.m_device;
5240           m_allocator  = rhs.m_allocator;
5241           m_dispatcher = rhs.m_dispatcher;
5242         }
5243         return *this;
5244       }
5245 
operator *() const5246       VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & operator*() const VULKAN_HPP_NOEXCEPT
5247       {
5248         return m_deferredOperationKHR;
5249       }
5250 
getDispatcher() const5251       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5252       {
5253         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5254         return m_dispatcher;
5255       }
5256 
5257       //=== VK_KHR_deferred_host_operations ===
5258 
5259       VULKAN_HPP_NODISCARD uint32_t getMaxConcurrency() const VULKAN_HPP_NOEXCEPT;
5260 
5261       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getResult() const VULKAN_HPP_NOEXCEPT;
5262 
5263       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result join() const;
5264 
5265     private:
5266       VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                m_deferredOperationKHR;
5267       VkDevice                                                                  m_device;
5268       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
5269       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
5270     };
5271 
5272     class DescriptorPool
5273     {
5274     public:
5275       using CType = VkDescriptorPool;
5276 
5277       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5278         VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorPool;
5279       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5280         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorPool;
5281 
5282     public:
DescriptorPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5283       DescriptorPool(
5284         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5285         VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const &                          createInfo,
5286         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5287         : m_device( *device )
5288         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5289             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5290         , m_dispatcher( device.getDispatcher() )
5291       {
5292         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5293           getDispatcher()->vkCreateDescriptorPool( static_cast<VkDevice>( *device ),
5294                                                    reinterpret_cast<const VkDescriptorPoolCreateInfo *>( &createInfo ),
5295                                                    m_allocator,
5296                                                    reinterpret_cast<VkDescriptorPool *>( &m_descriptorPool ) ) );
5297         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5298         {
5299           throwResultException( result, "vkCreateDescriptorPool" );
5300         }
5301       }
5302 
DescriptorPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorPool descriptorPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5303       DescriptorPool(
5304         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5305         VkDescriptorPool                                                                descriptorPool,
5306         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5307         : m_descriptorPool( descriptorPool )
5308         , m_device( *device )
5309         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5310             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5311         , m_dispatcher( device.getDispatcher() )
5312       {}
5313 
DescriptorPool(std::nullptr_t)5314       DescriptorPool( std::nullptr_t ) {}
5315 
~DescriptorPool()5316       ~DescriptorPool()
5317       {
5318         if ( m_descriptorPool )
5319         {
5320           getDispatcher()->vkDestroyDescriptorPool(
5321             m_device, static_cast<VkDescriptorPool>( m_descriptorPool ), m_allocator );
5322         }
5323       }
5324 
5325       DescriptorPool()                         = delete;
5326       DescriptorPool( DescriptorPool const & ) = delete;
DescriptorPool(DescriptorPool && rhs)5327       DescriptorPool( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT
5328         : m_descriptorPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} ) )
5329         , m_device( rhs.m_device )
5330         , m_allocator( rhs.m_allocator )
5331         , m_dispatcher( rhs.m_dispatcher )
5332       {}
5333       DescriptorPool & operator=( DescriptorPool const & ) = delete;
operator =(DescriptorPool && rhs)5334       DescriptorPool & operator                            =( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT
5335       {
5336         if ( this != &rhs )
5337         {
5338           if ( m_descriptorPool )
5339           {
5340             getDispatcher()->vkDestroyDescriptorPool(
5341               m_device, static_cast<VkDescriptorPool>( m_descriptorPool ), m_allocator );
5342           }
5343           m_descriptorPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} );
5344           m_device         = rhs.m_device;
5345           m_allocator      = rhs.m_allocator;
5346           m_dispatcher     = rhs.m_dispatcher;
5347         }
5348         return *this;
5349       }
5350 
operator *() const5351       VULKAN_HPP_NAMESPACE::DescriptorPool const & operator*() const VULKAN_HPP_NOEXCEPT
5352       {
5353         return m_descriptorPool;
5354       }
5355 
getDispatcher() const5356       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5357       {
5358         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5359         return m_dispatcher;
5360       }
5361 
5362       //=== VK_VERSION_1_0 ===
5363 
5364       void reset( VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
5365         VULKAN_HPP_NOEXCEPT;
5366 
5367     private:
5368       VULKAN_HPP_NAMESPACE::DescriptorPool                                      m_descriptorPool;
5369       VkDevice                                                                  m_device;
5370       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
5371       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
5372     };
5373 
5374     class DescriptorSet
5375     {
5376     public:
5377       using CType = VkDescriptorSet;
5378 
5379       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5380         VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSet;
5381       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5382         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSet;
5383 
5384     public:
DescriptorSet(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorSet descriptorSet,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool const & descriptorPool)5385       DescriptorSet( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &         device,
5386                      VkDescriptorSet                                                         descriptorSet,
5387                      VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool const & descriptorPool )
5388         : m_descriptorSet( descriptorSet )
5389         , m_device( *device )
5390         , m_descriptorPool( *descriptorPool )
5391         , m_dispatcher( device.getDispatcher() )
5392       {}
5393 
DescriptorSet(VkDescriptorSet descriptorSet,VkDevice device,VkDescriptorPool descriptorPool,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher)5394       DescriptorSet( VkDescriptorSet                                                           descriptorSet,
5395                      VkDevice                                                                  device,
5396                      VkDescriptorPool                                                          descriptorPool,
5397                      VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher )
5398         : m_descriptorSet( descriptorSet )
5399         , m_device( device )
5400         , m_descriptorPool( descriptorPool )
5401         , m_dispatcher( dispatcher )
5402       {}
DescriptorSet(std::nullptr_t)5403       DescriptorSet( std::nullptr_t ) {}
5404 
~DescriptorSet()5405       ~DescriptorSet()
5406       {
5407         if ( m_descriptorSet )
5408         {
5409           getDispatcher()->vkFreeDescriptorSets(
5410             m_device, m_descriptorPool, 1, reinterpret_cast<VkDescriptorSet const *>( &m_descriptorSet ) );
5411         }
5412       }
5413 
5414       DescriptorSet()                        = delete;
5415       DescriptorSet( DescriptorSet const & ) = delete;
DescriptorSet(DescriptorSet && rhs)5416       DescriptorSet( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT
5417         : m_descriptorSet( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSet, {} ) )
5418         , m_device( rhs.m_device )
5419         , m_descriptorPool( rhs.m_descriptorPool )
5420         , m_dispatcher( rhs.m_dispatcher )
5421       {}
5422       DescriptorSet & operator=( DescriptorSet const & ) = delete;
operator =(DescriptorSet && rhs)5423       DescriptorSet & operator                           =( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT
5424       {
5425         if ( this != &rhs )
5426         {
5427           if ( m_descriptorSet )
5428           {
5429             getDispatcher()->vkFreeDescriptorSets(
5430               m_device, m_descriptorPool, 1, reinterpret_cast<VkDescriptorSet const *>( &m_descriptorSet ) );
5431           }
5432           m_descriptorSet  = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSet, {} );
5433           m_device         = rhs.m_device;
5434           m_descriptorPool = rhs.m_descriptorPool;
5435           m_dispatcher     = rhs.m_dispatcher;
5436         }
5437         return *this;
5438       }
5439 
operator *() const5440       VULKAN_HPP_NAMESPACE::DescriptorSet const & operator*() const VULKAN_HPP_NOEXCEPT
5441       {
5442         return m_descriptorSet;
5443       }
5444 
getDispatcher() const5445       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5446       {
5447         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5448         return m_dispatcher;
5449       }
5450 
5451       //=== VK_VERSION_1_1 ===
5452 
5453       void updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
5454                                const void *                                   pData ) const VULKAN_HPP_NOEXCEPT;
5455 
5456       //=== VK_KHR_descriptor_update_template ===
5457 
5458       void updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
5459                                   const void *                                   pData ) const VULKAN_HPP_NOEXCEPT;
5460 
5461     private:
5462       VULKAN_HPP_NAMESPACE::DescriptorSet                                       m_descriptorSet;
5463       VkDevice                                                                  m_device;
5464       VkDescriptorPool                                                          m_descriptorPool;
5465       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
5466     };
5467 
5468     class DescriptorSets : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet>
5469     {
5470     public:
DescriptorSets(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo)5471       DescriptorSets( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
5472                       VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const &         allocateInfo )
5473       {
5474         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
5475         std::vector<VkDescriptorSet> descriptorSets( allocateInfo.descriptorSetCount );
5476         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5477           dispatcher->vkAllocateDescriptorSets( static_cast<VkDevice>( *device ),
5478                                                 reinterpret_cast<const VkDescriptorSetAllocateInfo *>( &allocateInfo ),
5479                                                 descriptorSets.data() ) );
5480         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
5481         {
5482           this->reserve( allocateInfo.descriptorSetCount );
5483           for ( auto const & descriptorSet : descriptorSets )
5484           {
5485             this->emplace_back( descriptorSet,
5486                                 static_cast<VkDevice>( *device ),
5487                                 static_cast<VkDescriptorPool>( allocateInfo.descriptorPool ),
5488                                 dispatcher );
5489           }
5490         }
5491         else
5492         {
5493           throwResultException( result, "vkAllocateDescriptorSets" );
5494         }
5495       }
5496 
5497       DescriptorSets()                         = delete;
5498       DescriptorSets( DescriptorSets const & ) = delete;
5499       DescriptorSets( DescriptorSets && rhs )  = default;
5500       DescriptorSets & operator=( DescriptorSets const & ) = delete;
5501       DescriptorSets & operator=( DescriptorSets && rhs ) = default;
5502     };
5503 
5504     class DescriptorSetLayout
5505     {
5506     public:
5507       using CType = VkDescriptorSetLayout;
5508 
5509       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5510         VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSetLayout;
5511       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5512         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSetLayout;
5513 
5514     public:
DescriptorSetLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5515       DescriptorSetLayout(
5516         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5517         VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const &                     createInfo,
5518         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5519         : m_device( *device )
5520         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5521             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5522         , m_dispatcher( device.getDispatcher() )
5523       {
5524         VULKAN_HPP_NAMESPACE::Result result =
5525           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDescriptorSetLayout(
5526             static_cast<VkDevice>( *device ),
5527             reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
5528             m_allocator,
5529             reinterpret_cast<VkDescriptorSetLayout *>( &m_descriptorSetLayout ) ) );
5530         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5531         {
5532           throwResultException( result, "vkCreateDescriptorSetLayout" );
5533         }
5534       }
5535 
DescriptorSetLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorSetLayout descriptorSetLayout,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5536       DescriptorSetLayout(
5537         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5538         VkDescriptorSetLayout                                                           descriptorSetLayout,
5539         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5540         : m_descriptorSetLayout( descriptorSetLayout )
5541         , m_device( *device )
5542         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5543             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5544         , m_dispatcher( device.getDispatcher() )
5545       {}
5546 
DescriptorSetLayout(std::nullptr_t)5547       DescriptorSetLayout( std::nullptr_t ) {}
5548 
~DescriptorSetLayout()5549       ~DescriptorSetLayout()
5550       {
5551         if ( m_descriptorSetLayout )
5552         {
5553           getDispatcher()->vkDestroyDescriptorSetLayout(
5554             m_device, static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ), m_allocator );
5555         }
5556       }
5557 
5558       DescriptorSetLayout()                              = delete;
5559       DescriptorSetLayout( DescriptorSetLayout const & ) = delete;
DescriptorSetLayout(DescriptorSetLayout && rhs)5560       DescriptorSetLayout( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT
5561         : m_descriptorSetLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSetLayout,
5562                                                                                             {} ) )
5563         , m_device( rhs.m_device )
5564         , m_allocator( rhs.m_allocator )
5565         , m_dispatcher( rhs.m_dispatcher )
5566       {}
5567       DescriptorSetLayout & operator=( DescriptorSetLayout const & ) = delete;
operator =(DescriptorSetLayout && rhs)5568       DescriptorSetLayout & operator                                 =( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT
5569       {
5570         if ( this != &rhs )
5571         {
5572           if ( m_descriptorSetLayout )
5573           {
5574             getDispatcher()->vkDestroyDescriptorSetLayout(
5575               m_device, static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ), m_allocator );
5576           }
5577           m_descriptorSetLayout =
5578             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSetLayout, {} );
5579           m_device     = rhs.m_device;
5580           m_allocator  = rhs.m_allocator;
5581           m_dispatcher = rhs.m_dispatcher;
5582         }
5583         return *this;
5584       }
5585 
operator *() const5586       VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & operator*() const VULKAN_HPP_NOEXCEPT
5587       {
5588         return m_descriptorSetLayout;
5589       }
5590 
getDispatcher() const5591       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5592       {
5593         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5594         return m_dispatcher;
5595       }
5596 
5597     private:
5598       VULKAN_HPP_NAMESPACE::DescriptorSetLayout                                 m_descriptorSetLayout;
5599       VkDevice                                                                  m_device;
5600       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
5601       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
5602     };
5603 
5604     class DescriptorUpdateTemplate
5605     {
5606     public:
5607       using CType = VkDescriptorUpdateTemplate;
5608 
5609       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5610         VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorUpdateTemplate;
5611       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5612         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorUpdateTemplate;
5613 
5614     public:
DescriptorUpdateTemplate(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5615       DescriptorUpdateTemplate(
5616         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5617         VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const &                createInfo,
5618         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5619         : m_device( *device )
5620         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5621             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5622         , m_dispatcher( device.getDispatcher() )
5623       {
5624         VULKAN_HPP_NAMESPACE::Result result =
5625           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDescriptorUpdateTemplate(
5626             static_cast<VkDevice>( *device ),
5627             reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( &createInfo ),
5628             m_allocator,
5629             reinterpret_cast<VkDescriptorUpdateTemplate *>( &m_descriptorUpdateTemplate ) ) );
5630         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5631         {
5632           throwResultException( result, "vkCreateDescriptorUpdateTemplate" );
5633         }
5634       }
5635 
DescriptorUpdateTemplate(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5636       DescriptorUpdateTemplate(
5637         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5638         VkDescriptorUpdateTemplate                                                      descriptorUpdateTemplate,
5639         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5640         : m_descriptorUpdateTemplate( descriptorUpdateTemplate )
5641         , m_device( *device )
5642         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5643             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5644         , m_dispatcher( device.getDispatcher() )
5645       {}
5646 
DescriptorUpdateTemplate(std::nullptr_t)5647       DescriptorUpdateTemplate( std::nullptr_t ) {}
5648 
~DescriptorUpdateTemplate()5649       ~DescriptorUpdateTemplate()
5650       {
5651         if ( m_descriptorUpdateTemplate )
5652         {
5653           getDispatcher()->vkDestroyDescriptorUpdateTemplate(
5654             m_device, static_cast<VkDescriptorUpdateTemplate>( m_descriptorUpdateTemplate ), m_allocator );
5655         }
5656       }
5657 
5658       DescriptorUpdateTemplate()                                   = delete;
5659       DescriptorUpdateTemplate( DescriptorUpdateTemplate const & ) = delete;
DescriptorUpdateTemplate(DescriptorUpdateTemplate && rhs)5660       DescriptorUpdateTemplate( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT
5661         : m_descriptorUpdateTemplate(
5662             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorUpdateTemplate, {} ) )
5663         , m_device( rhs.m_device )
5664         , m_allocator( rhs.m_allocator )
5665         , m_dispatcher( rhs.m_dispatcher )
5666       {}
5667       DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate const & ) = delete;
operator =(DescriptorUpdateTemplate && rhs)5668       DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT
5669       {
5670         if ( this != &rhs )
5671         {
5672           if ( m_descriptorUpdateTemplate )
5673           {
5674             getDispatcher()->vkDestroyDescriptorUpdateTemplate(
5675               m_device, static_cast<VkDescriptorUpdateTemplate>( m_descriptorUpdateTemplate ), m_allocator );
5676           }
5677           m_descriptorUpdateTemplate =
5678             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorUpdateTemplate, {} );
5679           m_device     = rhs.m_device;
5680           m_allocator  = rhs.m_allocator;
5681           m_dispatcher = rhs.m_dispatcher;
5682         }
5683         return *this;
5684       }
5685 
operator *() const5686       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & operator*() const VULKAN_HPP_NOEXCEPT
5687       {
5688         return m_descriptorUpdateTemplate;
5689       }
5690 
getDispatcher() const5691       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5692       {
5693         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5694         return m_dispatcher;
5695       }
5696 
5697     private:
5698       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate                            m_descriptorUpdateTemplate;
5699       VkDevice                                                                  m_device;
5700       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
5701       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
5702     };
5703 
5704     class DeviceMemory
5705     {
5706     public:
5707       using CType = VkDeviceMemory;
5708 
5709       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5710         VULKAN_HPP_NAMESPACE::ObjectType::eDeviceMemory;
5711       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5712         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDeviceMemory;
5713 
5714     public:
DeviceMemory(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & allocateInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5715       DeviceMemory(
5716         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5717         VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const &                                allocateInfo,
5718         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5719         : m_device( *device )
5720         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5721             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5722         , m_dispatcher( device.getDispatcher() )
5723       {
5724         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5725           getDispatcher()->vkAllocateMemory( static_cast<VkDevice>( *device ),
5726                                              reinterpret_cast<const VkMemoryAllocateInfo *>( &allocateInfo ),
5727                                              m_allocator,
5728                                              reinterpret_cast<VkDeviceMemory *>( &m_deviceMemory ) ) );
5729         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5730         {
5731           throwResultException( result, "vkAllocateMemory" );
5732         }
5733       }
5734 
DeviceMemory(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDeviceMemory deviceMemory,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5735       DeviceMemory(
5736         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5737         VkDeviceMemory                                                                  deviceMemory,
5738         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5739         : m_deviceMemory( deviceMemory )
5740         , m_device( *device )
5741         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5742             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5743         , m_dispatcher( device.getDispatcher() )
5744       {}
5745 
DeviceMemory(std::nullptr_t)5746       DeviceMemory( std::nullptr_t ) {}
5747 
~DeviceMemory()5748       ~DeviceMemory()
5749       {
5750         if ( m_deviceMemory )
5751         {
5752           getDispatcher()->vkFreeMemory( m_device, static_cast<VkDeviceMemory>( m_deviceMemory ), m_allocator );
5753         }
5754       }
5755 
5756       DeviceMemory()                       = delete;
5757       DeviceMemory( DeviceMemory const & ) = delete;
DeviceMemory(DeviceMemory && rhs)5758       DeviceMemory( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT
5759         : m_deviceMemory( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_deviceMemory, {} ) )
5760         , m_device( rhs.m_device )
5761         , m_allocator( rhs.m_allocator )
5762         , m_dispatcher( rhs.m_dispatcher )
5763       {}
5764       DeviceMemory & operator=( DeviceMemory const & ) = delete;
operator =(DeviceMemory && rhs)5765       DeviceMemory & operator                          =( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT
5766       {
5767         if ( this != &rhs )
5768         {
5769           if ( m_deviceMemory )
5770           {
5771             getDispatcher()->vkFreeMemory( m_device, static_cast<VkDeviceMemory>( m_deviceMemory ), m_allocator );
5772           }
5773           m_deviceMemory = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_deviceMemory, {} );
5774           m_device       = rhs.m_device;
5775           m_allocator    = rhs.m_allocator;
5776           m_dispatcher   = rhs.m_dispatcher;
5777         }
5778         return *this;
5779       }
5780 
operator *() const5781       VULKAN_HPP_NAMESPACE::DeviceMemory const & operator*() const VULKAN_HPP_NOEXCEPT
5782       {
5783         return m_deviceMemory;
5784       }
5785 
getDispatcher() const5786       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5787       {
5788         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5789         return m_dispatcher;
5790       }
5791 
5792       //=== VK_VERSION_1_0 ===
5793 
5794       VULKAN_HPP_NODISCARD void *
5795         mapMemory( VULKAN_HPP_NAMESPACE::DeviceSize           offset,
5796                    VULKAN_HPP_NAMESPACE::DeviceSize           size,
5797                    VULKAN_HPP_NAMESPACE::MemoryMapFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
5798 
5799       void unmapMemory() const VULKAN_HPP_NOEXCEPT;
5800 
5801       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getCommitment() const VULKAN_HPP_NOEXCEPT;
5802 
5803 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
5804       //=== VK_NV_external_memory_win32 ===
5805 
5806       VULKAN_HPP_NODISCARD HANDLE
5807         getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType ) const;
5808 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
5809 
5810       //=== VK_EXT_pageable_device_local_memory ===
5811 
5812       void setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT;
5813 
5814     private:
5815       VULKAN_HPP_NAMESPACE::DeviceMemory                                        m_deviceMemory;
5816       VkDevice                                                                  m_device;
5817       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
5818       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
5819     };
5820 
5821     class DisplayKHR
5822     {
5823     public:
5824       using CType = VkDisplayKHR;
5825 
5826       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5827         VULKAN_HPP_NAMESPACE::ObjectType::eDisplayKHR;
5828       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5829         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayKHR;
5830 
5831     public:
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,int32_t drmFd,uint32_t connectorId)5832       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5833                   int32_t                                                                 drmFd,
5834                   uint32_t                                                                connectorId )
5835         : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() )
5836       {
5837         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5838           getDispatcher()->vkGetDrmDisplayEXT( static_cast<VkPhysicalDevice>( *physicalDevice ),
5839                                                drmFd,
5840                                                connectorId,
5841                                                reinterpret_cast<VkDisplayKHR *>( &m_displayKHR ) ) );
5842         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5843         {
5844           throwResultException( result, "vkGetDrmDisplayEXT" );
5845         }
5846       }
5847 
5848 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,Display & dpy,RROutput rrOutput)5849       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5850                   Display &                                                               dpy,
5851                   RROutput                                                                rrOutput )
5852         : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() )
5853       {
5854         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5855           getDispatcher()->vkGetRandROutputDisplayEXT( static_cast<VkPhysicalDevice>( *physicalDevice ),
5856                                                        &dpy,
5857                                                        rrOutput,
5858                                                        reinterpret_cast<VkDisplayKHR *>( &m_displayKHR ) ) );
5859         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5860         {
5861           throwResultException( result, "vkGetRandROutputDisplayEXT" );
5862         }
5863       }
5864 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
5865 
5866 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,uint32_t deviceRelativeId)5867       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5868                   uint32_t                                                                deviceRelativeId )
5869         : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() )
5870       {
5871         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5872           getDispatcher()->vkGetWinrtDisplayNV( static_cast<VkPhysicalDevice>( *physicalDevice ),
5873                                                 deviceRelativeId,
5874                                                 reinterpret_cast<VkDisplayKHR *>( &m_displayKHR ) ) );
5875         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5876         {
5877           throwResultException( result, "vkGetWinrtDisplayNV" );
5878         }
5879       }
5880 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
5881 
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VkDisplayKHR displayKHR)5882       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5883                   VkDisplayKHR                                                            displayKHR )
5884         : m_displayKHR( displayKHR )
5885         , m_physicalDevice( *physicalDevice )
5886         , m_dispatcher( physicalDevice.getDispatcher() )
5887       {}
5888 
DisplayKHR(VkDisplayKHR displayKHR,VkPhysicalDevice physicalDevice,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher)5889       DisplayKHR( VkDisplayKHR                                                                displayKHR,
5890                   VkPhysicalDevice                                                            physicalDevice,
5891                   VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher )
5892         : m_displayKHR( displayKHR ), m_physicalDevice( physicalDevice ), m_dispatcher( dispatcher )
5893       {}
DisplayKHR(std::nullptr_t)5894       DisplayKHR( std::nullptr_t ) {}
5895 
~DisplayKHR()5896       ~DisplayKHR()
5897       {
5898         if ( m_displayKHR )
5899         {
5900           getDispatcher()->vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( m_displayKHR ) );
5901         }
5902       }
5903 
5904       DisplayKHR()                     = delete;
5905       DisplayKHR( DisplayKHR const & ) = delete;
DisplayKHR(DisplayKHR && rhs)5906       DisplayKHR( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT
5907         : m_displayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayKHR, {} ) )
5908         , m_physicalDevice( rhs.m_physicalDevice )
5909         , m_dispatcher( rhs.m_dispatcher )
5910       {}
5911       DisplayKHR & operator=( DisplayKHR const & ) = delete;
operator =(DisplayKHR && rhs)5912       DisplayKHR & operator                        =( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT
5913       {
5914         if ( this != &rhs )
5915         {
5916           if ( m_displayKHR )
5917           {
5918             getDispatcher()->vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( m_displayKHR ) );
5919           }
5920           m_displayKHR     = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayKHR, {} );
5921           m_physicalDevice = rhs.m_physicalDevice;
5922           m_dispatcher     = rhs.m_dispatcher;
5923         }
5924         return *this;
5925       }
5926 
operator *() const5927       VULKAN_HPP_NAMESPACE::DisplayKHR const & operator*() const VULKAN_HPP_NOEXCEPT
5928       {
5929         return m_displayKHR;
5930       }
5931 
getDispatcher() const5932       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
5933       {
5934         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5935         return m_dispatcher;
5936       }
5937 
5938       //=== VK_KHR_display ===
5939 
5940       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR> getModeProperties() const;
5941 
5942       //=== VK_KHR_get_display_properties2 ===
5943 
5944       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR> getModeProperties2() const;
5945 
5946 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
5947       //=== VK_NV_acquire_winrt_display ===
5948 
5949       void acquireWinrtNV() const;
5950 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
5951 
5952     private:
5953       VULKAN_HPP_NAMESPACE::DisplayKHR                                            m_displayKHR;
5954       VkPhysicalDevice                                                            m_physicalDevice;
5955       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
5956     };
5957 
5958     class DisplayKHRs : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>
5959     {
5960     public:
DisplayKHRs(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,uint32_t planeIndex)5961       DisplayKHRs( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5962                    uint32_t                                                                planeIndex )
5963       {
5964         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher =
5965           physicalDevice.getDispatcher();
5966         std::vector<VkDisplayKHR>    displays;
5967         uint32_t                     displayCount;
5968         VULKAN_HPP_NAMESPACE::Result result;
5969         do
5970         {
5971           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkGetDisplayPlaneSupportedDisplaysKHR(
5972             static_cast<VkPhysicalDevice>( *physicalDevice ), planeIndex, &displayCount, nullptr ) );
5973           if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && displayCount )
5974           {
5975             displays.resize( displayCount );
5976             result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkGetDisplayPlaneSupportedDisplaysKHR(
5977               static_cast<VkPhysicalDevice>( *physicalDevice ), planeIndex, &displayCount, displays.data() ) );
5978             VULKAN_HPP_ASSERT( displayCount <= displays.size() );
5979           }
5980         } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
5981         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
5982         {
5983           this->reserve( displayCount );
5984           for ( auto const & displayKHR : displays )
5985           {
5986             this->emplace_back( displayKHR, static_cast<VkPhysicalDevice>( *physicalDevice ), dispatcher );
5987           }
5988         }
5989         else
5990         {
5991           throwResultException( result, "vkGetDisplayPlaneSupportedDisplaysKHR" );
5992         }
5993       }
5994 
5995       DisplayKHRs()                      = delete;
5996       DisplayKHRs( DisplayKHRs const & ) = delete;
5997       DisplayKHRs( DisplayKHRs && rhs )  = default;
5998       DisplayKHRs & operator=( DisplayKHRs const & ) = delete;
5999       DisplayKHRs & operator=( DisplayKHRs && rhs ) = default;
6000     };
6001 
6002     class DisplayModeKHR
6003     {
6004     public:
6005       using CType = VkDisplayModeKHR;
6006 
6007       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6008         VULKAN_HPP_NAMESPACE::ObjectType::eDisplayModeKHR;
6009       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6010         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayModeKHR;
6011 
6012     public:
DisplayModeKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display,VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6013       DisplayModeKHR(
6014         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const &         physicalDevice,
6015         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const &             display,
6016         VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const &                          createInfo,
6017         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6018         : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() )
6019       {
6020         VULKAN_HPP_NAMESPACE::Result result =
6021           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDisplayModeKHR(
6022             static_cast<VkPhysicalDevice>( *physicalDevice ),
6023             static_cast<VkDisplayKHR>( *display ),
6024             reinterpret_cast<const VkDisplayModeCreateInfoKHR *>( &createInfo ),
6025             reinterpret_cast<const VkAllocationCallbacks *>(
6026               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
6027             reinterpret_cast<VkDisplayModeKHR *>( &m_displayModeKHR ) ) );
6028         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6029         {
6030           throwResultException( result, "vkCreateDisplayModeKHR" );
6031         }
6032       }
6033 
DisplayModeKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VkDisplayModeKHR displayModeKHR)6034       DisplayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
6035                       VkDisplayModeKHR                                                        displayModeKHR )
6036         : m_displayModeKHR( displayModeKHR )
6037         , m_physicalDevice( *physicalDevice )
6038         , m_dispatcher( physicalDevice.getDispatcher() )
6039       {}
6040 
DisplayModeKHR(std::nullptr_t)6041       DisplayModeKHR( std::nullptr_t ) {}
6042 
6043       DisplayModeKHR()                         = delete;
6044       DisplayModeKHR( DisplayModeKHR const & ) = delete;
DisplayModeKHR(DisplayModeKHR && rhs)6045       DisplayModeKHR( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT
6046         : m_displayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayModeKHR, {} ) )
6047         , m_dispatcher( rhs.m_dispatcher )
6048       {}
6049       DisplayModeKHR & operator=( DisplayModeKHR const & ) = delete;
operator =(DisplayModeKHR && rhs)6050       DisplayModeKHR & operator                            =( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT
6051       {
6052         if ( this != &rhs )
6053         {
6054           m_displayModeKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayModeKHR, {} );
6055           m_dispatcher     = rhs.m_dispatcher;
6056         }
6057         return *this;
6058       }
6059 
operator *() const6060       VULKAN_HPP_NAMESPACE::DisplayModeKHR const & operator*() const VULKAN_HPP_NOEXCEPT
6061       {
6062         return m_displayModeKHR;
6063       }
6064 
getDispatcher() const6065       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
6066       {
6067         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6068         return m_dispatcher;
6069       }
6070 
6071       //=== VK_KHR_display ===
6072 
6073       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR
6074                            getDisplayPlaneCapabilities( uint32_t planeIndex ) const;
6075 
6076     private:
6077       VULKAN_HPP_NAMESPACE::DisplayModeKHR                                        m_displayModeKHR;
6078       VULKAN_HPP_NAMESPACE::PhysicalDevice                                        m_physicalDevice;
6079       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
6080     };
6081 
6082     class Event
6083     {
6084     public:
6085       using CType = VkEvent;
6086 
6087       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6088         VULKAN_HPP_NAMESPACE::ObjectType::eEvent;
6089       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6090         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eEvent;
6091 
6092     public:
Event(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::EventCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6093       Event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6094              VULKAN_HPP_NAMESPACE::EventCreateInfo const &                                   createInfo,
6095              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6096         : m_device( *device )
6097         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6098             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6099         , m_dispatcher( device.getDispatcher() )
6100       {
6101         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6102           getDispatcher()->vkCreateEvent( static_cast<VkDevice>( *device ),
6103                                           reinterpret_cast<const VkEventCreateInfo *>( &createInfo ),
6104                                           m_allocator,
6105                                           reinterpret_cast<VkEvent *>( &m_event ) ) );
6106         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6107         {
6108           throwResultException( result, "vkCreateEvent" );
6109         }
6110       }
6111 
Event(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkEvent event,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6112       Event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6113              VkEvent                                                                         event,
6114              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6115         : m_event( event )
6116         , m_device( *device )
6117         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6118             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6119         , m_dispatcher( device.getDispatcher() )
6120       {}
6121 
Event(std::nullptr_t)6122       Event( std::nullptr_t ) {}
6123 
~Event()6124       ~Event()
6125       {
6126         if ( m_event )
6127         {
6128           getDispatcher()->vkDestroyEvent( m_device, static_cast<VkEvent>( m_event ), m_allocator );
6129         }
6130       }
6131 
6132       Event()                = delete;
6133       Event( Event const & ) = delete;
Event(Event && rhs)6134       Event( Event && rhs ) VULKAN_HPP_NOEXCEPT
6135         : m_event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_event, {} ) )
6136         , m_device( rhs.m_device )
6137         , m_allocator( rhs.m_allocator )
6138         , m_dispatcher( rhs.m_dispatcher )
6139       {}
6140       Event & operator=( Event const & ) = delete;
operator =(Event && rhs)6141       Event & operator                   =( Event && rhs ) VULKAN_HPP_NOEXCEPT
6142       {
6143         if ( this != &rhs )
6144         {
6145           if ( m_event )
6146           {
6147             getDispatcher()->vkDestroyEvent( m_device, static_cast<VkEvent>( m_event ), m_allocator );
6148           }
6149           m_event      = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_event, {} );
6150           m_device     = rhs.m_device;
6151           m_allocator  = rhs.m_allocator;
6152           m_dispatcher = rhs.m_dispatcher;
6153         }
6154         return *this;
6155       }
6156 
operator *() const6157       VULKAN_HPP_NAMESPACE::Event const & operator*() const VULKAN_HPP_NOEXCEPT
6158       {
6159         return m_event;
6160       }
6161 
getDispatcher() const6162       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6163       {
6164         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6165         return m_dispatcher;
6166       }
6167 
6168       //=== VK_VERSION_1_0 ===
6169 
6170       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
6171 
6172       void set() const;
6173 
6174       void reset() const;
6175 
6176     private:
6177       VULKAN_HPP_NAMESPACE::Event                                               m_event;
6178       VkDevice                                                                  m_device;
6179       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
6180       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6181     };
6182 
6183     class Fence
6184     {
6185     public:
6186       using CType = VkFence;
6187 
6188       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6189         VULKAN_HPP_NAMESPACE::ObjectType::eFence;
6190       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6191         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFence;
6192 
6193     public:
Fence(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::FenceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6194       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6195              VULKAN_HPP_NAMESPACE::FenceCreateInfo const &                                   createInfo,
6196              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6197         : m_device( *device )
6198         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6199             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6200         , m_dispatcher( device.getDispatcher() )
6201       {
6202         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6203           getDispatcher()->vkCreateFence( static_cast<VkDevice>( *device ),
6204                                           reinterpret_cast<const VkFenceCreateInfo *>( &createInfo ),
6205                                           m_allocator,
6206                                           reinterpret_cast<VkFence *>( &m_fence ) ) );
6207         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6208         {
6209           throwResultException( result, "vkCreateFence" );
6210         }
6211       }
6212 
Fence(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const & deviceEventInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6213       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6214              VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const &                                deviceEventInfo,
6215              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6216         : m_device( *device )
6217         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6218             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6219         , m_dispatcher( device.getDispatcher() )
6220       {
6221         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6222           getDispatcher()->vkRegisterDeviceEventEXT( static_cast<VkDevice>( *device ),
6223                                                      reinterpret_cast<const VkDeviceEventInfoEXT *>( &deviceEventInfo ),
6224                                                      m_allocator,
6225                                                      reinterpret_cast<VkFence *>( &m_fence ) ) );
6226         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6227         {
6228           throwResultException( result, "vkRegisterDeviceEventEXT" );
6229         }
6230       }
6231 
Fence(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display,VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const & displayEventInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6232       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6233              VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const &             display,
6234              VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const &                               displayEventInfo,
6235              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6236         : m_device( *device )
6237         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6238             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6239         , m_dispatcher( device.getDispatcher() )
6240       {
6241         VULKAN_HPP_NAMESPACE::Result result =
6242           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkRegisterDisplayEventEXT(
6243             static_cast<VkDevice>( *device ),
6244             static_cast<VkDisplayKHR>( *display ),
6245             reinterpret_cast<const VkDisplayEventInfoEXT *>( &displayEventInfo ),
6246             m_allocator,
6247             reinterpret_cast<VkFence *>( &m_fence ) ) );
6248         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6249         {
6250           throwResultException( result, "vkRegisterDisplayEventEXT" );
6251         }
6252       }
6253 
Fence(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkFence fence,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6254       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6255              VkFence                                                                         fence,
6256              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6257         : m_fence( fence )
6258         , m_device( *device )
6259         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6260             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6261         , m_dispatcher( device.getDispatcher() )
6262       {}
6263 
Fence(std::nullptr_t)6264       Fence( std::nullptr_t ) {}
6265 
~Fence()6266       ~Fence()
6267       {
6268         if ( m_fence )
6269         {
6270           getDispatcher()->vkDestroyFence( m_device, static_cast<VkFence>( m_fence ), m_allocator );
6271         }
6272       }
6273 
6274       Fence()                = delete;
6275       Fence( Fence const & ) = delete;
Fence(Fence && rhs)6276       Fence( Fence && rhs ) VULKAN_HPP_NOEXCEPT
6277         : m_fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_fence, {} ) )
6278         , m_device( rhs.m_device )
6279         , m_allocator( rhs.m_allocator )
6280         , m_dispatcher( rhs.m_dispatcher )
6281       {}
6282       Fence & operator=( Fence const & ) = delete;
operator =(Fence && rhs)6283       Fence & operator                   =( Fence && rhs ) VULKAN_HPP_NOEXCEPT
6284       {
6285         if ( this != &rhs )
6286         {
6287           if ( m_fence )
6288           {
6289             getDispatcher()->vkDestroyFence( m_device, static_cast<VkFence>( m_fence ), m_allocator );
6290           }
6291           m_fence      = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_fence, {} );
6292           m_device     = rhs.m_device;
6293           m_allocator  = rhs.m_allocator;
6294           m_dispatcher = rhs.m_dispatcher;
6295         }
6296         return *this;
6297       }
6298 
operator *() const6299       VULKAN_HPP_NAMESPACE::Fence const & operator*() const VULKAN_HPP_NOEXCEPT
6300       {
6301         return m_fence;
6302       }
6303 
getDispatcher() const6304       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6305       {
6306         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6307         return m_dispatcher;
6308       }
6309 
6310       //=== VK_VERSION_1_0 ===
6311 
6312       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
6313 
6314     private:
6315       VULKAN_HPP_NAMESPACE::Fence                                               m_fence;
6316       VkDevice                                                                  m_device;
6317       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
6318       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6319     };
6320 
6321     class Framebuffer
6322     {
6323     public:
6324       using CType = VkFramebuffer;
6325 
6326       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6327         VULKAN_HPP_NAMESPACE::ObjectType::eFramebuffer;
6328       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6329         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFramebuffer;
6330 
6331     public:
Framebuffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6332       Framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6333                    VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const &                             createInfo,
6334                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6335         : m_device( *device )
6336         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6337             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6338         , m_dispatcher( device.getDispatcher() )
6339       {
6340         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6341           getDispatcher()->vkCreateFramebuffer( static_cast<VkDevice>( *device ),
6342                                                 reinterpret_cast<const VkFramebufferCreateInfo *>( &createInfo ),
6343                                                 m_allocator,
6344                                                 reinterpret_cast<VkFramebuffer *>( &m_framebuffer ) ) );
6345         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6346         {
6347           throwResultException( result, "vkCreateFramebuffer" );
6348         }
6349       }
6350 
Framebuffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkFramebuffer framebuffer,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6351       Framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6352                    VkFramebuffer                                                                   framebuffer,
6353                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6354         : m_framebuffer( framebuffer )
6355         , m_device( *device )
6356         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6357             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6358         , m_dispatcher( device.getDispatcher() )
6359       {}
6360 
Framebuffer(std::nullptr_t)6361       Framebuffer( std::nullptr_t ) {}
6362 
~Framebuffer()6363       ~Framebuffer()
6364       {
6365         if ( m_framebuffer )
6366         {
6367           getDispatcher()->vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( m_framebuffer ), m_allocator );
6368         }
6369       }
6370 
6371       Framebuffer()                      = delete;
6372       Framebuffer( Framebuffer const & ) = delete;
Framebuffer(Framebuffer && rhs)6373       Framebuffer( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT
6374         : m_framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_framebuffer, {} ) )
6375         , m_device( rhs.m_device )
6376         , m_allocator( rhs.m_allocator )
6377         , m_dispatcher( rhs.m_dispatcher )
6378       {}
6379       Framebuffer & operator=( Framebuffer const & ) = delete;
operator =(Framebuffer && rhs)6380       Framebuffer & operator                         =( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT
6381       {
6382         if ( this != &rhs )
6383         {
6384           if ( m_framebuffer )
6385           {
6386             getDispatcher()->vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( m_framebuffer ), m_allocator );
6387           }
6388           m_framebuffer = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_framebuffer, {} );
6389           m_device      = rhs.m_device;
6390           m_allocator   = rhs.m_allocator;
6391           m_dispatcher  = rhs.m_dispatcher;
6392         }
6393         return *this;
6394       }
6395 
operator *() const6396       VULKAN_HPP_NAMESPACE::Framebuffer const & operator*() const VULKAN_HPP_NOEXCEPT
6397       {
6398         return m_framebuffer;
6399       }
6400 
getDispatcher() const6401       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6402       {
6403         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6404         return m_dispatcher;
6405       }
6406 
6407     private:
6408       VULKAN_HPP_NAMESPACE::Framebuffer                                         m_framebuffer;
6409       VkDevice                                                                  m_device;
6410       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
6411       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6412     };
6413 
6414     class Image
6415     {
6416     public:
6417       using CType = VkImage;
6418 
6419       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6420         VULKAN_HPP_NAMESPACE::ObjectType::eImage;
6421       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6422         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImage;
6423 
6424     public:
Image(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ImageCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6425       Image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6426              VULKAN_HPP_NAMESPACE::ImageCreateInfo const &                                   createInfo,
6427              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6428         : m_device( *device )
6429         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6430             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6431         , m_dispatcher( device.getDispatcher() )
6432       {
6433         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6434           getDispatcher()->vkCreateImage( static_cast<VkDevice>( *device ),
6435                                           reinterpret_cast<const VkImageCreateInfo *>( &createInfo ),
6436                                           m_allocator,
6437                                           reinterpret_cast<VkImage *>( &m_image ) ) );
6438         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6439         {
6440           throwResultException( result, "vkCreateImage" );
6441         }
6442       }
6443 
Image(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkImage image,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6444       Image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6445              VkImage                                                                         image,
6446              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6447         : m_image( image )
6448         , m_device( *device )
6449         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6450             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6451         , m_dispatcher( device.getDispatcher() )
6452       {}
6453 
Image(std::nullptr_t)6454       Image( std::nullptr_t ) {}
6455 
~Image()6456       ~Image()
6457       {
6458         if ( m_image )
6459         {
6460           getDispatcher()->vkDestroyImage( m_device, static_cast<VkImage>( m_image ), m_allocator );
6461         }
6462       }
6463 
6464       Image()                = delete;
6465       Image( Image const & ) = delete;
Image(Image && rhs)6466       Image( Image && rhs ) VULKAN_HPP_NOEXCEPT
6467         : m_image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_image, {} ) )
6468         , m_device( rhs.m_device )
6469         , m_allocator( rhs.m_allocator )
6470         , m_dispatcher( rhs.m_dispatcher )
6471       {}
6472       Image & operator=( Image const & ) = delete;
operator =(Image && rhs)6473       Image & operator                   =( Image && rhs ) VULKAN_HPP_NOEXCEPT
6474       {
6475         if ( this != &rhs )
6476         {
6477           if ( m_image )
6478           {
6479             getDispatcher()->vkDestroyImage( m_device, static_cast<VkImage>( m_image ), m_allocator );
6480           }
6481           m_image      = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_image, {} );
6482           m_device     = rhs.m_device;
6483           m_allocator  = rhs.m_allocator;
6484           m_dispatcher = rhs.m_dispatcher;
6485         }
6486         return *this;
6487       }
6488 
operator *() const6489       VULKAN_HPP_NAMESPACE::Image const & operator*() const VULKAN_HPP_NOEXCEPT
6490       {
6491         return m_image;
6492       }
6493 
getDispatcher() const6494       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6495       {
6496         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6497         return m_dispatcher;
6498       }
6499 
6500       //=== VK_VERSION_1_0 ===
6501 
6502       void bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const;
6503 
6504       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
6505 
6506       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements>
6507                            getSparseMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
6508 
6509       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout
6510         getSubresourceLayout( const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT;
6511 
6512       //=== VK_EXT_image_drm_format_modifier ===
6513 
6514       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT
6515                            getDrmFormatModifierPropertiesEXT() const;
6516 
6517     private:
6518       VULKAN_HPP_NAMESPACE::Image                                               m_image;
6519       VkDevice                                                                  m_device;
6520       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
6521       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6522     };
6523 
6524     class ImageView
6525     {
6526     public:
6527       using CType = VkImageView;
6528 
6529       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6530         VULKAN_HPP_NAMESPACE::ObjectType::eImageView;
6531       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6532         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImageView;
6533 
6534     public:
ImageView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6535       ImageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6536                  VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const &                               createInfo,
6537                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6538         : m_device( *device )
6539         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6540             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6541         , m_dispatcher( device.getDispatcher() )
6542       {
6543         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6544           getDispatcher()->vkCreateImageView( static_cast<VkDevice>( *device ),
6545                                               reinterpret_cast<const VkImageViewCreateInfo *>( &createInfo ),
6546                                               m_allocator,
6547                                               reinterpret_cast<VkImageView *>( &m_imageView ) ) );
6548         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6549         {
6550           throwResultException( result, "vkCreateImageView" );
6551         }
6552       }
6553 
ImageView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkImageView imageView,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6554       ImageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6555                  VkImageView                                                                     imageView,
6556                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6557         : m_imageView( imageView )
6558         , m_device( *device )
6559         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6560             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6561         , m_dispatcher( device.getDispatcher() )
6562       {}
6563 
ImageView(std::nullptr_t)6564       ImageView( std::nullptr_t ) {}
6565 
~ImageView()6566       ~ImageView()
6567       {
6568         if ( m_imageView )
6569         {
6570           getDispatcher()->vkDestroyImageView( m_device, static_cast<VkImageView>( m_imageView ), m_allocator );
6571         }
6572       }
6573 
6574       ImageView()                    = delete;
6575       ImageView( ImageView const & ) = delete;
ImageView(ImageView && rhs)6576       ImageView( ImageView && rhs ) VULKAN_HPP_NOEXCEPT
6577         : m_imageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_imageView, {} ) )
6578         , m_device( rhs.m_device )
6579         , m_allocator( rhs.m_allocator )
6580         , m_dispatcher( rhs.m_dispatcher )
6581       {}
6582       ImageView & operator=( ImageView const & ) = delete;
operator =(ImageView && rhs)6583       ImageView & operator                       =( ImageView && rhs ) VULKAN_HPP_NOEXCEPT
6584       {
6585         if ( this != &rhs )
6586         {
6587           if ( m_imageView )
6588           {
6589             getDispatcher()->vkDestroyImageView( m_device, static_cast<VkImageView>( m_imageView ), m_allocator );
6590           }
6591           m_imageView  = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_imageView, {} );
6592           m_device     = rhs.m_device;
6593           m_allocator  = rhs.m_allocator;
6594           m_dispatcher = rhs.m_dispatcher;
6595         }
6596         return *this;
6597       }
6598 
operator *() const6599       VULKAN_HPP_NAMESPACE::ImageView const & operator*() const VULKAN_HPP_NOEXCEPT
6600       {
6601         return m_imageView;
6602       }
6603 
getDispatcher() const6604       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6605       {
6606         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6607         return m_dispatcher;
6608       }
6609 
6610       //=== VK_NVX_image_view_handle ===
6611 
6612       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX getAddressNVX() const;
6613 
6614     private:
6615       VULKAN_HPP_NAMESPACE::ImageView                                           m_imageView;
6616       VkDevice                                                                  m_device;
6617       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
6618       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6619     };
6620 
6621     class IndirectCommandsLayoutNV
6622     {
6623     public:
6624       using CType = VkIndirectCommandsLayoutNV;
6625 
6626       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6627         VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutNV;
6628       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6629         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
6630 
6631     public:
IndirectCommandsLayoutNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6632       IndirectCommandsLayoutNV(
6633         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6634         VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const &                createInfo,
6635         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6636         : m_device( *device )
6637         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6638             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6639         , m_dispatcher( device.getDispatcher() )
6640       {
6641         VULKAN_HPP_NAMESPACE::Result result =
6642           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateIndirectCommandsLayoutNV(
6643             static_cast<VkDevice>( *device ),
6644             reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNV *>( &createInfo ),
6645             m_allocator,
6646             reinterpret_cast<VkIndirectCommandsLayoutNV *>( &m_indirectCommandsLayoutNV ) ) );
6647         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6648         {
6649           throwResultException( result, "vkCreateIndirectCommandsLayoutNV" );
6650         }
6651       }
6652 
IndirectCommandsLayoutNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkIndirectCommandsLayoutNV indirectCommandsLayoutNV,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6653       IndirectCommandsLayoutNV(
6654         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6655         VkIndirectCommandsLayoutNV                                                      indirectCommandsLayoutNV,
6656         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6657         : m_indirectCommandsLayoutNV( indirectCommandsLayoutNV )
6658         , m_device( *device )
6659         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6660             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6661         , m_dispatcher( device.getDispatcher() )
6662       {}
6663 
IndirectCommandsLayoutNV(std::nullptr_t)6664       IndirectCommandsLayoutNV( std::nullptr_t ) {}
6665 
~IndirectCommandsLayoutNV()6666       ~IndirectCommandsLayoutNV()
6667       {
6668         if ( m_indirectCommandsLayoutNV )
6669         {
6670           getDispatcher()->vkDestroyIndirectCommandsLayoutNV(
6671             m_device, static_cast<VkIndirectCommandsLayoutNV>( m_indirectCommandsLayoutNV ), m_allocator );
6672         }
6673       }
6674 
6675       IndirectCommandsLayoutNV()                                   = delete;
6676       IndirectCommandsLayoutNV( IndirectCommandsLayoutNV const & ) = delete;
IndirectCommandsLayoutNV(IndirectCommandsLayoutNV && rhs)6677       IndirectCommandsLayoutNV( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT
6678         : m_indirectCommandsLayoutNV(
6679             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_indirectCommandsLayoutNV, {} ) )
6680         , m_device( rhs.m_device )
6681         , m_allocator( rhs.m_allocator )
6682         , m_dispatcher( rhs.m_dispatcher )
6683       {}
6684       IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV const & ) = delete;
operator =(IndirectCommandsLayoutNV && rhs)6685       IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT
6686       {
6687         if ( this != &rhs )
6688         {
6689           if ( m_indirectCommandsLayoutNV )
6690           {
6691             getDispatcher()->vkDestroyIndirectCommandsLayoutNV(
6692               m_device, static_cast<VkIndirectCommandsLayoutNV>( m_indirectCommandsLayoutNV ), m_allocator );
6693           }
6694           m_indirectCommandsLayoutNV =
6695             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_indirectCommandsLayoutNV, {} );
6696           m_device     = rhs.m_device;
6697           m_allocator  = rhs.m_allocator;
6698           m_dispatcher = rhs.m_dispatcher;
6699         }
6700         return *this;
6701       }
6702 
operator *() const6703       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & operator*() const VULKAN_HPP_NOEXCEPT
6704       {
6705         return m_indirectCommandsLayoutNV;
6706       }
6707 
getDispatcher() const6708       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6709       {
6710         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6711         return m_dispatcher;
6712       }
6713 
6714     private:
6715       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV                            m_indirectCommandsLayoutNV;
6716       VkDevice                                                                  m_device;
6717       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
6718       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6719     };
6720 
6721     class PerformanceConfigurationINTEL
6722     {
6723     public:
6724       using CType = VkPerformanceConfigurationINTEL;
6725 
6726       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6727         VULKAN_HPP_NAMESPACE::ObjectType::ePerformanceConfigurationINTEL;
6728       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6729         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
6730 
6731     public:
PerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo)6732       PerformanceConfigurationINTEL(
6733         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &        device,
6734         VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo )
6735         : m_device( *device ), m_dispatcher( device.getDispatcher() )
6736       {
6737         VULKAN_HPP_NAMESPACE::Result result =
6738           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquirePerformanceConfigurationINTEL(
6739             static_cast<VkDevice>( *device ),
6740             reinterpret_cast<const VkPerformanceConfigurationAcquireInfoINTEL *>( &acquireInfo ),
6741             reinterpret_cast<VkPerformanceConfigurationINTEL *>( &m_performanceConfigurationINTEL ) ) );
6742         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6743         {
6744           throwResultException( result, "vkAcquirePerformanceConfigurationINTEL" );
6745         }
6746       }
6747 
PerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPerformanceConfigurationINTEL performanceConfigurationINTEL)6748       PerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6749                                      VkPerformanceConfigurationINTEL performanceConfigurationINTEL )
6750         : m_performanceConfigurationINTEL( performanceConfigurationINTEL )
6751         , m_device( *device )
6752         , m_dispatcher( device.getDispatcher() )
6753       {}
6754 
PerformanceConfigurationINTEL(std::nullptr_t)6755       PerformanceConfigurationINTEL( std::nullptr_t ) {}
6756 
~PerformanceConfigurationINTEL()6757       ~PerformanceConfigurationINTEL()
6758       {
6759         if ( m_performanceConfigurationINTEL )
6760         {
6761           getDispatcher()->vkReleasePerformanceConfigurationINTEL(
6762             m_device, static_cast<VkPerformanceConfigurationINTEL>( m_performanceConfigurationINTEL ) );
6763         }
6764       }
6765 
6766       PerformanceConfigurationINTEL()                                        = delete;
6767       PerformanceConfigurationINTEL( PerformanceConfigurationINTEL const & ) = delete;
PerformanceConfigurationINTEL(PerformanceConfigurationINTEL && rhs)6768       PerformanceConfigurationINTEL( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT
6769         : m_performanceConfigurationINTEL(
6770             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_performanceConfigurationINTEL, {} ) )
6771         , m_device( rhs.m_device )
6772         , m_dispatcher( rhs.m_dispatcher )
6773       {}
6774       PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL const & ) = delete;
operator =(PerformanceConfigurationINTEL && rhs)6775       PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT
6776       {
6777         if ( this != &rhs )
6778         {
6779           if ( m_performanceConfigurationINTEL )
6780           {
6781             getDispatcher()->vkReleasePerformanceConfigurationINTEL(
6782               m_device, static_cast<VkPerformanceConfigurationINTEL>( m_performanceConfigurationINTEL ) );
6783           }
6784           m_performanceConfigurationINTEL =
6785             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_performanceConfigurationINTEL, {} );
6786           m_device     = rhs.m_device;
6787           m_dispatcher = rhs.m_dispatcher;
6788         }
6789         return *this;
6790       }
6791 
operator *() const6792       VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & operator*() const VULKAN_HPP_NOEXCEPT
6793       {
6794         return m_performanceConfigurationINTEL;
6795       }
6796 
getDispatcher() const6797       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6798       {
6799         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6800         return m_dispatcher;
6801       }
6802 
6803     private:
6804       VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL                       m_performanceConfigurationINTEL;
6805       VkDevice                                                                  m_device;
6806       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6807     };
6808 
6809     class PipelineCache
6810     {
6811     public:
6812       using CType = VkPipelineCache;
6813 
6814       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6815         VULKAN_HPP_NAMESPACE::ObjectType::ePipelineCache;
6816       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6817         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineCache;
6818 
6819     public:
PipelineCache(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6820       PipelineCache(
6821         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6822         VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const &                           createInfo,
6823         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6824         : m_device( *device )
6825         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6826             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6827         , m_dispatcher( device.getDispatcher() )
6828       {
6829         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6830           getDispatcher()->vkCreatePipelineCache( static_cast<VkDevice>( *device ),
6831                                                   reinterpret_cast<const VkPipelineCacheCreateInfo *>( &createInfo ),
6832                                                   m_allocator,
6833                                                   reinterpret_cast<VkPipelineCache *>( &m_pipelineCache ) ) );
6834         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6835         {
6836           throwResultException( result, "vkCreatePipelineCache" );
6837         }
6838       }
6839 
PipelineCache(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipelineCache pipelineCache,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6840       PipelineCache(
6841         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6842         VkPipelineCache                                                                 pipelineCache,
6843         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6844         : m_pipelineCache( pipelineCache )
6845         , m_device( *device )
6846         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6847             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6848         , m_dispatcher( device.getDispatcher() )
6849       {}
6850 
PipelineCache(std::nullptr_t)6851       PipelineCache( std::nullptr_t ) {}
6852 
~PipelineCache()6853       ~PipelineCache()
6854       {
6855         if ( m_pipelineCache )
6856         {
6857           getDispatcher()->vkDestroyPipelineCache(
6858             m_device, static_cast<VkPipelineCache>( m_pipelineCache ), m_allocator );
6859         }
6860       }
6861 
6862       PipelineCache()                        = delete;
6863       PipelineCache( PipelineCache const & ) = delete;
PipelineCache(PipelineCache && rhs)6864       PipelineCache( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT
6865         : m_pipelineCache( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineCache, {} ) )
6866         , m_device( rhs.m_device )
6867         , m_allocator( rhs.m_allocator )
6868         , m_dispatcher( rhs.m_dispatcher )
6869       {}
6870       PipelineCache & operator=( PipelineCache const & ) = delete;
operator =(PipelineCache && rhs)6871       PipelineCache & operator                           =( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT
6872       {
6873         if ( this != &rhs )
6874         {
6875           if ( m_pipelineCache )
6876           {
6877             getDispatcher()->vkDestroyPipelineCache(
6878               m_device, static_cast<VkPipelineCache>( m_pipelineCache ), m_allocator );
6879           }
6880           m_pipelineCache = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineCache, {} );
6881           m_device        = rhs.m_device;
6882           m_allocator     = rhs.m_allocator;
6883           m_dispatcher    = rhs.m_dispatcher;
6884         }
6885         return *this;
6886       }
6887 
operator *() const6888       VULKAN_HPP_NAMESPACE::PipelineCache const & operator*() const VULKAN_HPP_NOEXCEPT
6889       {
6890         return m_pipelineCache;
6891       }
6892 
getDispatcher() const6893       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6894       {
6895         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6896         return m_dispatcher;
6897       }
6898 
6899       //=== VK_VERSION_1_0 ===
6900 
6901       VULKAN_HPP_NODISCARD std::vector<uint8_t> getData() const;
6902 
6903       void merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches ) const;
6904 
6905     private:
6906       VULKAN_HPP_NAMESPACE::PipelineCache                                       m_pipelineCache;
6907       VkDevice                                                                  m_device;
6908       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
6909       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6910     };
6911 
6912     class Pipeline
6913     {
6914     public:
6915       using CType = VkPipeline;
6916 
6917       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6918         VULKAN_HPP_NAMESPACE::ObjectType::ePipeline;
6919       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6920         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipeline;
6921 
6922     public:
Pipeline(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6923       Pipeline(
6924         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6925         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6926                                                                                         pipelineCache,
6927         VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const &                         createInfo,
6928         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6929         : m_device( *device )
6930         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6931             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6932         , m_dispatcher( device.getDispatcher() )
6933       {
6934         m_constructorSuccessCode = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateComputePipelines(
6935           static_cast<VkDevice>( *device ),
6936           pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6937           1,
6938           reinterpret_cast<const VkComputePipelineCreateInfo *>( &createInfo ),
6939           m_allocator,
6940           reinterpret_cast<VkPipeline *>( &m_pipeline ) ) );
6941         if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
6942              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6943         {
6944           throwResultException( m_constructorSuccessCode, "vkCreateComputePipelines" );
6945         }
6946       }
6947 
Pipeline(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6948       Pipeline(
6949         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6950         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6951                                                                                         pipelineCache,
6952         VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const &                        createInfo,
6953         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6954         : m_device( *device )
6955         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6956             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6957         , m_dispatcher( device.getDispatcher() )
6958       {
6959         m_constructorSuccessCode =
6960           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateGraphicsPipelines(
6961             static_cast<VkDevice>( *device ),
6962             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6963             1,
6964             reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( &createInfo ),
6965             m_allocator,
6966             reinterpret_cast<VkPipeline *>( &m_pipeline ) ) );
6967         if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
6968              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6969         {
6970           throwResultException( m_constructorSuccessCode, "vkCreateGraphicsPipelines" );
6971         }
6972       }
6973 
Pipeline(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6974       Pipeline(
6975         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6976         VULKAN_HPP_NAMESPACE::Optional<
6977           const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
6978         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6979                                                                                         pipelineCache,
6980         VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const &                   createInfo,
6981         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6982         : m_device( *device )
6983         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6984             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6985         , m_dispatcher( device.getDispatcher() )
6986       {
6987         m_constructorSuccessCode =
6988           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRayTracingPipelinesKHR(
6989             static_cast<VkDevice>( *device ),
6990             deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
6991             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6992             1,
6993             reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( &createInfo ),
6994             m_allocator,
6995             reinterpret_cast<VkPipeline *>( &m_pipeline ) ) );
6996         if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
6997              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
6998              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) &&
6999              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
7000         {
7001           throwResultException( m_constructorSuccessCode, "vkCreateRayTracingPipelinesKHR" );
7002         }
7003       }
7004 
Pipeline(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7005       Pipeline(
7006         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7007         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
7008                                                                                         pipelineCache,
7009         VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const &                    createInfo,
7010         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7011         : m_device( *device )
7012         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7013             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7014         , m_dispatcher( device.getDispatcher() )
7015       {
7016         m_constructorSuccessCode =
7017           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRayTracingPipelinesNV(
7018             static_cast<VkDevice>( *device ),
7019             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
7020             1,
7021             reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( &createInfo ),
7022             m_allocator,
7023             reinterpret_cast<VkPipeline *>( &m_pipeline ) ) );
7024         if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
7025              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
7026         {
7027           throwResultException( m_constructorSuccessCode, "vkCreateRayTracingPipelinesNV" );
7028         }
7029       }
7030 
Pipeline(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipeline pipeline,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7031       Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7032                 VkPipeline                                                                      pipeline,
7033                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7034         : m_pipeline( pipeline )
7035         , m_device( *device )
7036         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7037             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7038         , m_dispatcher( device.getDispatcher() )
7039       {}
7040 
Pipeline(VkPipeline pipeline,VkDevice device,VkAllocationCallbacks const * allocator,VULKAN_HPP_NAMESPACE::Result successCode,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher)7041       Pipeline( VkPipeline                                                                pipeline,
7042                 VkDevice                                                                  device,
7043                 VkAllocationCallbacks const *                                             allocator,
7044                 VULKAN_HPP_NAMESPACE::Result                                              successCode,
7045                 VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher )
7046         : m_pipeline( pipeline )
7047         , m_device( device )
7048         , m_allocator( allocator )
7049         , m_constructorSuccessCode( successCode )
7050         , m_dispatcher( dispatcher )
7051       {}
Pipeline(std::nullptr_t)7052       Pipeline( std::nullptr_t ) {}
7053 
~Pipeline()7054       ~Pipeline()
7055       {
7056         if ( m_pipeline )
7057         {
7058           getDispatcher()->vkDestroyPipeline( m_device, static_cast<VkPipeline>( m_pipeline ), m_allocator );
7059         }
7060       }
7061 
7062       Pipeline()                   = delete;
7063       Pipeline( Pipeline const & ) = delete;
Pipeline(Pipeline && rhs)7064       Pipeline( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT
7065         : m_pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipeline, {} ) )
7066         , m_device( rhs.m_device )
7067         , m_allocator( rhs.m_allocator )
7068         , m_dispatcher( rhs.m_dispatcher )
7069       {}
7070       Pipeline & operator=( Pipeline const & ) = delete;
operator =(Pipeline && rhs)7071       Pipeline & operator                      =( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT
7072       {
7073         if ( this != &rhs )
7074         {
7075           if ( m_pipeline )
7076           {
7077             getDispatcher()->vkDestroyPipeline( m_device, static_cast<VkPipeline>( m_pipeline ), m_allocator );
7078           }
7079           m_pipeline   = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipeline, {} );
7080           m_device     = rhs.m_device;
7081           m_allocator  = rhs.m_allocator;
7082           m_dispatcher = rhs.m_dispatcher;
7083         }
7084         return *this;
7085       }
7086 
operator *() const7087       VULKAN_HPP_NAMESPACE::Pipeline const & operator*() const VULKAN_HPP_NOEXCEPT
7088       {
7089         return m_pipeline;
7090       }
7091 
getConstructorSuccessCode() const7092       VULKAN_HPP_NAMESPACE::Result getConstructorSuccessCode() const
7093       {
7094         return m_constructorSuccessCode;
7095       }
7096 
getDispatcher() const7097       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7098       {
7099         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7100         return m_dispatcher;
7101       }
7102 
7103       //=== VK_AMD_shader_info ===
7104 
7105       VULKAN_HPP_NODISCARD std::vector<uint8_t>
7106                            getShaderInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,
7107                                              VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD   infoType ) const;
7108 
7109       //=== VK_NV_ray_tracing ===
7110 
7111       template <typename T>
7112       VULKAN_HPP_NODISCARD std::vector<T>
7113         getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
7114 
7115       template <typename T>
7116       VULKAN_HPP_NODISCARD T getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const;
7117 
7118       void compileDeferredNV( uint32_t shader ) const;
7119 
7120       //=== VK_KHR_ray_tracing_pipeline ===
7121 
7122       template <typename T>
7123       VULKAN_HPP_NODISCARD std::vector<T>
7124         getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
7125 
7126       template <typename T>
7127       VULKAN_HPP_NODISCARD T getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const;
7128 
7129       template <typename T>
7130       VULKAN_HPP_NODISCARD std::vector<T> getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup,
7131                                                                                            uint32_t groupCount,
7132                                                                                            size_t   dataSize ) const;
7133 
7134       template <typename T>
7135       VULKAN_HPP_NODISCARD T getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup,
7136                                                                              uint32_t groupCount ) const;
7137 
7138       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getRayTracingShaderGroupStackSizeKHR(
7139         uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT;
7140 
7141     private:
7142       VULKAN_HPP_NAMESPACE::Pipeline                                            m_pipeline;
7143       VkDevice                                                                  m_device;
7144       const VkAllocationCallbacks *                                             m_allocator = nullptr;
7145       VULKAN_HPP_NAMESPACE::Result                                              m_constructorSuccessCode;
7146       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7147     };
7148 
7149     class Pipelines : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>
7150     {
7151     public:
Pipelines(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7152       Pipelines(
7153         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7154         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
7155                                                                                                   pipelineCache,
7156         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo> const & createInfos,
7157         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>           allocator = nullptr )
7158       {
7159         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
7160         std::vector<VkPipeline>                                                   pipelines( createInfos.size() );
7161         VULKAN_HPP_NAMESPACE::Result                                              result =
7162           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateComputePipelines(
7163             static_cast<VkDevice>( *device ),
7164             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
7165             createInfos.size(),
7166             reinterpret_cast<const VkComputePipelineCreateInfo *>( createInfos.data() ),
7167             reinterpret_cast<const VkAllocationCallbacks *>(
7168               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7169             pipelines.data() ) );
7170         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) ||
7171              ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
7172         {
7173           this->reserve( createInfos.size() );
7174           for ( auto const & pipeline : pipelines )
7175           {
7176             this->emplace_back( pipeline,
7177                                 static_cast<VkDevice>( *device ),
7178                                 reinterpret_cast<const VkAllocationCallbacks *>(
7179                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7180                                 result,
7181                                 dispatcher );
7182           }
7183         }
7184         else
7185         {
7186           throwResultException( result, "vkCreateComputePipelines" );
7187         }
7188       }
7189 
Pipelines(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7190       Pipelines(
7191         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7192         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
7193                                                                                                    pipelineCache,
7194         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo> const & createInfos,
7195         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>            allocator = nullptr )
7196       {
7197         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
7198         std::vector<VkPipeline>                                                   pipelines( createInfos.size() );
7199         VULKAN_HPP_NAMESPACE::Result                                              result =
7200           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateGraphicsPipelines(
7201             static_cast<VkDevice>( *device ),
7202             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
7203             createInfos.size(),
7204             reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( createInfos.data() ),
7205             reinterpret_cast<const VkAllocationCallbacks *>(
7206               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7207             pipelines.data() ) );
7208         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) ||
7209              ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
7210         {
7211           this->reserve( createInfos.size() );
7212           for ( auto const & pipeline : pipelines )
7213           {
7214             this->emplace_back( pipeline,
7215                                 static_cast<VkDevice>( *device ),
7216                                 reinterpret_cast<const VkAllocationCallbacks *>(
7217                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7218                                 result,
7219                                 dispatcher );
7220           }
7221         }
7222         else
7223         {
7224           throwResultException( result, "vkCreateGraphicsPipelines" );
7225         }
7226       }
7227 
Pipelines(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7228       Pipelines(
7229         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7230         VULKAN_HPP_NAMESPACE::Optional<
7231           const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
7232         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
7233                                                                                                         pipelineCache,
7234         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR> const & createInfos,
7235         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7236       {
7237         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
7238         std::vector<VkPipeline>                                                   pipelines( createInfos.size() );
7239         VULKAN_HPP_NAMESPACE::Result                                              result =
7240           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateRayTracingPipelinesKHR(
7241             static_cast<VkDevice>( *device ),
7242             deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
7243             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
7244             createInfos.size(),
7245             reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( createInfos.data() ),
7246             reinterpret_cast<const VkAllocationCallbacks *>(
7247               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7248             pipelines.data() ) );
7249         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) ||
7250              ( result == VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) ||
7251              ( result == VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) ||
7252              ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
7253         {
7254           this->reserve( createInfos.size() );
7255           for ( auto const & pipeline : pipelines )
7256           {
7257             this->emplace_back( pipeline,
7258                                 static_cast<VkDevice>( *device ),
7259                                 reinterpret_cast<const VkAllocationCallbacks *>(
7260                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7261                                 result,
7262                                 dispatcher );
7263           }
7264         }
7265         else
7266         {
7267           throwResultException( result, "vkCreateRayTracingPipelinesKHR" );
7268         }
7269       }
7270 
Pipelines(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7271       Pipelines(
7272         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7273         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
7274                                                                                                        pipelineCache,
7275         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV> const & createInfos,
7276         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7277       {
7278         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
7279         std::vector<VkPipeline>                                                   pipelines( createInfos.size() );
7280         VULKAN_HPP_NAMESPACE::Result                                              result =
7281           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateRayTracingPipelinesNV(
7282             static_cast<VkDevice>( *device ),
7283             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
7284             createInfos.size(),
7285             reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( createInfos.data() ),
7286             reinterpret_cast<const VkAllocationCallbacks *>(
7287               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7288             pipelines.data() ) );
7289         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) ||
7290              ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
7291         {
7292           this->reserve( createInfos.size() );
7293           for ( auto const & pipeline : pipelines )
7294           {
7295             this->emplace_back( pipeline,
7296                                 static_cast<VkDevice>( *device ),
7297                                 reinterpret_cast<const VkAllocationCallbacks *>(
7298                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7299                                 result,
7300                                 dispatcher );
7301           }
7302         }
7303         else
7304         {
7305           throwResultException( result, "vkCreateRayTracingPipelinesNV" );
7306         }
7307       }
7308 
7309       Pipelines()                    = delete;
7310       Pipelines( Pipelines const & ) = delete;
7311       Pipelines( Pipelines && rhs )  = default;
7312       Pipelines & operator=( Pipelines const & ) = delete;
7313       Pipelines & operator=( Pipelines && rhs ) = default;
7314     };
7315 
7316     class PipelineLayout
7317     {
7318     public:
7319       using CType = VkPipelineLayout;
7320 
7321       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7322         VULKAN_HPP_NAMESPACE::ObjectType::ePipelineLayout;
7323       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7324         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineLayout;
7325 
7326     public:
PipelineLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7327       PipelineLayout(
7328         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7329         VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const &                          createInfo,
7330         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7331         : m_device( *device )
7332         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7333             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7334         , m_dispatcher( device.getDispatcher() )
7335       {
7336         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7337           getDispatcher()->vkCreatePipelineLayout( static_cast<VkDevice>( *device ),
7338                                                    reinterpret_cast<const VkPipelineLayoutCreateInfo *>( &createInfo ),
7339                                                    m_allocator,
7340                                                    reinterpret_cast<VkPipelineLayout *>( &m_pipelineLayout ) ) );
7341         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7342         {
7343           throwResultException( result, "vkCreatePipelineLayout" );
7344         }
7345       }
7346 
PipelineLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipelineLayout pipelineLayout,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7347       PipelineLayout(
7348         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7349         VkPipelineLayout                                                                pipelineLayout,
7350         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7351         : m_pipelineLayout( pipelineLayout )
7352         , m_device( *device )
7353         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7354             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7355         , m_dispatcher( device.getDispatcher() )
7356       {}
7357 
PipelineLayout(std::nullptr_t)7358       PipelineLayout( std::nullptr_t ) {}
7359 
~PipelineLayout()7360       ~PipelineLayout()
7361       {
7362         if ( m_pipelineLayout )
7363         {
7364           getDispatcher()->vkDestroyPipelineLayout(
7365             m_device, static_cast<VkPipelineLayout>( m_pipelineLayout ), m_allocator );
7366         }
7367       }
7368 
7369       PipelineLayout()                         = delete;
7370       PipelineLayout( PipelineLayout const & ) = delete;
PipelineLayout(PipelineLayout && rhs)7371       PipelineLayout( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT
7372         : m_pipelineLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineLayout, {} ) )
7373         , m_device( rhs.m_device )
7374         , m_allocator( rhs.m_allocator )
7375         , m_dispatcher( rhs.m_dispatcher )
7376       {}
7377       PipelineLayout & operator=( PipelineLayout const & ) = delete;
operator =(PipelineLayout && rhs)7378       PipelineLayout & operator                            =( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT
7379       {
7380         if ( this != &rhs )
7381         {
7382           if ( m_pipelineLayout )
7383           {
7384             getDispatcher()->vkDestroyPipelineLayout(
7385               m_device, static_cast<VkPipelineLayout>( m_pipelineLayout ), m_allocator );
7386           }
7387           m_pipelineLayout = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineLayout, {} );
7388           m_device         = rhs.m_device;
7389           m_allocator      = rhs.m_allocator;
7390           m_dispatcher     = rhs.m_dispatcher;
7391         }
7392         return *this;
7393       }
7394 
operator *() const7395       VULKAN_HPP_NAMESPACE::PipelineLayout const & operator*() const VULKAN_HPP_NOEXCEPT
7396       {
7397         return m_pipelineLayout;
7398       }
7399 
getDispatcher() const7400       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7401       {
7402         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7403         return m_dispatcher;
7404       }
7405 
7406     private:
7407       VULKAN_HPP_NAMESPACE::PipelineLayout                                      m_pipelineLayout;
7408       VkDevice                                                                  m_device;
7409       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
7410       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7411     };
7412 
7413     class PrivateDataSlotEXT
7414     {
7415     public:
7416       using CType = VkPrivateDataSlotEXT;
7417 
7418       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7419         VULKAN_HPP_NAMESPACE::ObjectType::ePrivateDataSlotEXT;
7420       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7421         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
7422 
7423     public:
PrivateDataSlotEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7424       PrivateDataSlotEXT(
7425         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7426         VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT const &                      createInfo,
7427         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7428         : m_device( *device )
7429         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7430             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7431         , m_dispatcher( device.getDispatcher() )
7432       {
7433         VULKAN_HPP_NAMESPACE::Result result =
7434           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreatePrivateDataSlotEXT(
7435             static_cast<VkDevice>( *device ),
7436             reinterpret_cast<const VkPrivateDataSlotCreateInfoEXT *>( &createInfo ),
7437             m_allocator,
7438             reinterpret_cast<VkPrivateDataSlotEXT *>( &m_privateDataSlotEXT ) ) );
7439         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7440         {
7441           throwResultException( result, "vkCreatePrivateDataSlotEXT" );
7442         }
7443       }
7444 
PrivateDataSlotEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPrivateDataSlotEXT privateDataSlotEXT,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7445       PrivateDataSlotEXT(
7446         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7447         VkPrivateDataSlotEXT                                                            privateDataSlotEXT,
7448         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7449         : m_privateDataSlotEXT( privateDataSlotEXT )
7450         , m_device( *device )
7451         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7452             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7453         , m_dispatcher( device.getDispatcher() )
7454       {}
7455 
PrivateDataSlotEXT(std::nullptr_t)7456       PrivateDataSlotEXT( std::nullptr_t ) {}
7457 
~PrivateDataSlotEXT()7458       ~PrivateDataSlotEXT()
7459       {
7460         if ( m_privateDataSlotEXT )
7461         {
7462           getDispatcher()->vkDestroyPrivateDataSlotEXT(
7463             m_device, static_cast<VkPrivateDataSlotEXT>( m_privateDataSlotEXT ), m_allocator );
7464         }
7465       }
7466 
7467       PrivateDataSlotEXT()                             = delete;
7468       PrivateDataSlotEXT( PrivateDataSlotEXT const & ) = delete;
PrivateDataSlotEXT(PrivateDataSlotEXT && rhs)7469       PrivateDataSlotEXT( PrivateDataSlotEXT && rhs ) VULKAN_HPP_NOEXCEPT
7470         : m_privateDataSlotEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_privateDataSlotEXT,
7471                                                                                            {} ) )
7472         , m_device( rhs.m_device )
7473         , m_allocator( rhs.m_allocator )
7474         , m_dispatcher( rhs.m_dispatcher )
7475       {}
7476       PrivateDataSlotEXT & operator=( PrivateDataSlotEXT const & ) = delete;
operator =(PrivateDataSlotEXT && rhs)7477       PrivateDataSlotEXT & operator                                =( PrivateDataSlotEXT && rhs ) VULKAN_HPP_NOEXCEPT
7478       {
7479         if ( this != &rhs )
7480         {
7481           if ( m_privateDataSlotEXT )
7482           {
7483             getDispatcher()->vkDestroyPrivateDataSlotEXT(
7484               m_device, static_cast<VkPrivateDataSlotEXT>( m_privateDataSlotEXT ), m_allocator );
7485           }
7486           m_privateDataSlotEXT =
7487             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_privateDataSlotEXT, {} );
7488           m_device     = rhs.m_device;
7489           m_allocator  = rhs.m_allocator;
7490           m_dispatcher = rhs.m_dispatcher;
7491         }
7492         return *this;
7493       }
7494 
operator *() const7495       VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT const & operator*() const VULKAN_HPP_NOEXCEPT
7496       {
7497         return m_privateDataSlotEXT;
7498       }
7499 
getDispatcher() const7500       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7501       {
7502         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7503         return m_dispatcher;
7504       }
7505 
7506     private:
7507       VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT                                  m_privateDataSlotEXT;
7508       VkDevice                                                                  m_device;
7509       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
7510       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7511     };
7512 
7513     class QueryPool
7514     {
7515     public:
7516       using CType = VkQueryPool;
7517 
7518       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7519         VULKAN_HPP_NAMESPACE::ObjectType::eQueryPool;
7520       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7521         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueryPool;
7522 
7523     public:
QueryPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7524       QueryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7525                  VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const &                               createInfo,
7526                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7527         : m_device( *device )
7528         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7529             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7530         , m_dispatcher( device.getDispatcher() )
7531       {
7532         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7533           getDispatcher()->vkCreateQueryPool( static_cast<VkDevice>( *device ),
7534                                               reinterpret_cast<const VkQueryPoolCreateInfo *>( &createInfo ),
7535                                               m_allocator,
7536                                               reinterpret_cast<VkQueryPool *>( &m_queryPool ) ) );
7537         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7538         {
7539           throwResultException( result, "vkCreateQueryPool" );
7540         }
7541       }
7542 
QueryPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkQueryPool queryPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7543       QueryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7544                  VkQueryPool                                                                     queryPool,
7545                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7546         : m_queryPool( queryPool )
7547         , m_device( *device )
7548         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7549             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7550         , m_dispatcher( device.getDispatcher() )
7551       {}
7552 
QueryPool(std::nullptr_t)7553       QueryPool( std::nullptr_t ) {}
7554 
~QueryPool()7555       ~QueryPool()
7556       {
7557         if ( m_queryPool )
7558         {
7559           getDispatcher()->vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( m_queryPool ), m_allocator );
7560         }
7561       }
7562 
7563       QueryPool()                    = delete;
7564       QueryPool( QueryPool const & ) = delete;
QueryPool(QueryPool && rhs)7565       QueryPool( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT
7566         : m_queryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queryPool, {} ) )
7567         , m_device( rhs.m_device )
7568         , m_allocator( rhs.m_allocator )
7569         , m_dispatcher( rhs.m_dispatcher )
7570       {}
7571       QueryPool & operator=( QueryPool const & ) = delete;
operator =(QueryPool && rhs)7572       QueryPool & operator                       =( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT
7573       {
7574         if ( this != &rhs )
7575         {
7576           if ( m_queryPool )
7577           {
7578             getDispatcher()->vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( m_queryPool ), m_allocator );
7579           }
7580           m_queryPool  = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queryPool, {} );
7581           m_device     = rhs.m_device;
7582           m_allocator  = rhs.m_allocator;
7583           m_dispatcher = rhs.m_dispatcher;
7584         }
7585         return *this;
7586       }
7587 
operator *() const7588       VULKAN_HPP_NAMESPACE::QueryPool const & operator*() const VULKAN_HPP_NOEXCEPT
7589       {
7590         return m_queryPool;
7591       }
7592 
getDispatcher() const7593       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7594       {
7595         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7596         return m_dispatcher;
7597       }
7598 
7599       //=== VK_VERSION_1_0 ===
7600 
7601       template <typename T>
7602       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, std::vector<T>>
7603                            getResults( uint32_t                                     firstQuery,
7604                                        uint32_t                                     queryCount,
7605                                        size_t                                       dataSize,
7606                                        VULKAN_HPP_NAMESPACE::DeviceSize             stride,
7607                                        VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7608 
7609       template <typename T>
7610       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, T>
7611                            getResult( uint32_t                                     firstQuery,
7612                                       uint32_t                                     queryCount,
7613                                       VULKAN_HPP_NAMESPACE::DeviceSize             stride,
7614                                       VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7615 
7616       //=== VK_VERSION_1_2 ===
7617 
7618       void reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
7619 
7620       //=== VK_EXT_host_query_reset ===
7621 
7622       void resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
7623 
7624     private:
7625       VULKAN_HPP_NAMESPACE::QueryPool                                           m_queryPool;
7626       VkDevice                                                                  m_device;
7627       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
7628       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7629     };
7630 
7631     class Queue
7632     {
7633     public:
7634       using CType = VkQueue;
7635 
7636       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7637         VULKAN_HPP_NAMESPACE::ObjectType::eQueue;
7638       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7639         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueue;
7640 
7641     public:
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,uint32_t queueFamilyIndex,uint32_t queueIndex)7642       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7643              uint32_t                                                        queueFamilyIndex,
7644              uint32_t                                                        queueIndex )
7645         : m_dispatcher( device.getDispatcher() )
7646       {
7647         getDispatcher()->vkGetDeviceQueue(
7648           static_cast<VkDevice>( *device ), queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue *>( &m_queue ) );
7649       }
7650 
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo)7651       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7652              VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const &                  queueInfo )
7653         : m_dispatcher( device.getDispatcher() )
7654       {
7655         getDispatcher()->vkGetDeviceQueue2( static_cast<VkDevice>( *device ),
7656                                             reinterpret_cast<const VkDeviceQueueInfo2 *>( &queueInfo ),
7657                                             reinterpret_cast<VkQueue *>( &m_queue ) );
7658       }
7659 
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkQueue queue)7660       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, VkQueue queue )
7661         : m_queue( queue ), m_dispatcher( device.getDispatcher() )
7662       {}
7663 
Queue(std::nullptr_t)7664       Queue( std::nullptr_t ) {}
7665 
7666       Queue()                = delete;
7667       Queue( Queue const & ) = delete;
Queue(Queue && rhs)7668       Queue( Queue && rhs ) VULKAN_HPP_NOEXCEPT
7669         : m_queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queue, {} ) )
7670         , m_dispatcher( rhs.m_dispatcher )
7671       {}
7672       Queue & operator=( Queue const & ) = delete;
operator =(Queue && rhs)7673       Queue & operator                   =( Queue && rhs ) VULKAN_HPP_NOEXCEPT
7674       {
7675         if ( this != &rhs )
7676         {
7677           m_queue      = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queue, {} );
7678           m_dispatcher = rhs.m_dispatcher;
7679         }
7680         return *this;
7681       }
7682 
operator *() const7683       VULKAN_HPP_NAMESPACE::Queue const & operator*() const VULKAN_HPP_NOEXCEPT
7684       {
7685         return m_queue;
7686       }
7687 
getDispatcher() const7688       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7689       {
7690         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7691         return m_dispatcher;
7692       }
7693 
7694       //=== VK_VERSION_1_0 ===
7695 
7696       void submit( ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,
7697                    VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7698 
7699       void waitIdle() const;
7700 
7701       void bindSparse( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,
7702                        VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7703 
7704       //=== VK_KHR_swapchain ===
7705 
7706       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
7707                            presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo ) const;
7708 
7709       //=== VK_EXT_debug_utils ===
7710 
7711       void
7712         beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
7713 
7714       void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT;
7715 
7716       void insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const
7717         VULKAN_HPP_NOEXCEPT;
7718 
7719       //=== VK_NV_device_diagnostic_checkpoints ===
7720 
7721       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV>
7722                            getCheckpointDataNV() const VULKAN_HPP_NOEXCEPT;
7723 
7724       //=== VK_INTEL_performance_query ===
7725 
7726       void setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const;
7727 
7728       //=== VK_KHR_synchronization2 ===
7729 
7730       void submit2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2KHR> const & submits,
7731                        VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7732 
7733       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV>
7734                            getCheckpointData2NV() const VULKAN_HPP_NOEXCEPT;
7735 
7736     private:
7737       VULKAN_HPP_NAMESPACE::Queue                                               m_queue;
7738       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7739     };
7740 
7741     class RenderPass
7742     {
7743     public:
7744       using CType = VkRenderPass;
7745 
7746       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7747         VULKAN_HPP_NAMESPACE::ObjectType::eRenderPass;
7748       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7749         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eRenderPass;
7750 
7751     public:
RenderPass(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7752       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7753                   VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const &                              createInfo,
7754                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7755         : m_device( *device )
7756         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7757             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7758         , m_dispatcher( device.getDispatcher() )
7759       {
7760         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7761           getDispatcher()->vkCreateRenderPass( static_cast<VkDevice>( *device ),
7762                                                reinterpret_cast<const VkRenderPassCreateInfo *>( &createInfo ),
7763                                                m_allocator,
7764                                                reinterpret_cast<VkRenderPass *>( &m_renderPass ) ) );
7765         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7766         {
7767           throwResultException( result, "vkCreateRenderPass" );
7768         }
7769       }
7770 
RenderPass(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7771       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7772                   VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const &                             createInfo,
7773                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7774         : m_device( *device )
7775         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7776             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7777         , m_dispatcher( device.getDispatcher() )
7778       {
7779         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7780           getDispatcher()->vkCreateRenderPass2( static_cast<VkDevice>( *device ),
7781                                                 reinterpret_cast<const VkRenderPassCreateInfo2 *>( &createInfo ),
7782                                                 m_allocator,
7783                                                 reinterpret_cast<VkRenderPass *>( &m_renderPass ) ) );
7784         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7785         {
7786           throwResultException( result, "vkCreateRenderPass2" );
7787         }
7788       }
7789 
RenderPass(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkRenderPass renderPass,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7790       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7791                   VkRenderPass                                                                    renderPass,
7792                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7793         : m_renderPass( renderPass )
7794         , m_device( *device )
7795         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7796             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7797         , m_dispatcher( device.getDispatcher() )
7798       {}
7799 
RenderPass(std::nullptr_t)7800       RenderPass( std::nullptr_t ) {}
7801 
~RenderPass()7802       ~RenderPass()
7803       {
7804         if ( m_renderPass )
7805         {
7806           getDispatcher()->vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( m_renderPass ), m_allocator );
7807         }
7808       }
7809 
7810       RenderPass()                     = delete;
7811       RenderPass( RenderPass const & ) = delete;
RenderPass(RenderPass && rhs)7812       RenderPass( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT
7813         : m_renderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_renderPass, {} ) )
7814         , m_device( rhs.m_device )
7815         , m_allocator( rhs.m_allocator )
7816         , m_dispatcher( rhs.m_dispatcher )
7817       {}
7818       RenderPass & operator=( RenderPass const & ) = delete;
operator =(RenderPass && rhs)7819       RenderPass & operator                        =( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT
7820       {
7821         if ( this != &rhs )
7822         {
7823           if ( m_renderPass )
7824           {
7825             getDispatcher()->vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( m_renderPass ), m_allocator );
7826           }
7827           m_renderPass = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_renderPass, {} );
7828           m_device     = rhs.m_device;
7829           m_allocator  = rhs.m_allocator;
7830           m_dispatcher = rhs.m_dispatcher;
7831         }
7832         return *this;
7833       }
7834 
operator *() const7835       VULKAN_HPP_NAMESPACE::RenderPass const & operator*() const VULKAN_HPP_NOEXCEPT
7836       {
7837         return m_renderPass;
7838       }
7839 
getDispatcher() const7840       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7841       {
7842         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7843         return m_dispatcher;
7844       }
7845 
7846       //=== VK_VERSION_1_0 ===
7847 
7848       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Extent2D getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT;
7849 
7850       //=== VK_HUAWEI_subpass_shading ===
7851 
7852       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, VULKAN_HPP_NAMESPACE::Extent2D>
7853                            getSubpassShadingMaxWorkgroupSizeHUAWEI() const;
7854 
7855     private:
7856       VULKAN_HPP_NAMESPACE::RenderPass                                          m_renderPass;
7857       VkDevice                                                                  m_device;
7858       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
7859       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7860     };
7861 
7862     class Sampler
7863     {
7864     public:
7865       using CType = VkSampler;
7866 
7867       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7868         VULKAN_HPP_NAMESPACE::ObjectType::eSampler;
7869       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7870         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSampler;
7871 
7872     public:
Sampler(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7873       Sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7874                VULKAN_HPP_NAMESPACE::SamplerCreateInfo const &                                 createInfo,
7875                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7876         : m_device( *device )
7877         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7878             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7879         , m_dispatcher( device.getDispatcher() )
7880       {
7881         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7882           getDispatcher()->vkCreateSampler( static_cast<VkDevice>( *device ),
7883                                             reinterpret_cast<const VkSamplerCreateInfo *>( &createInfo ),
7884                                             m_allocator,
7885                                             reinterpret_cast<VkSampler *>( &m_sampler ) ) );
7886         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7887         {
7888           throwResultException( result, "vkCreateSampler" );
7889         }
7890       }
7891 
Sampler(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSampler sampler,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7892       Sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7893                VkSampler                                                                       sampler,
7894                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7895         : m_sampler( sampler )
7896         , m_device( *device )
7897         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7898             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7899         , m_dispatcher( device.getDispatcher() )
7900       {}
7901 
Sampler(std::nullptr_t)7902       Sampler( std::nullptr_t ) {}
7903 
~Sampler()7904       ~Sampler()
7905       {
7906         if ( m_sampler )
7907         {
7908           getDispatcher()->vkDestroySampler( m_device, static_cast<VkSampler>( m_sampler ), m_allocator );
7909         }
7910       }
7911 
7912       Sampler()                  = delete;
7913       Sampler( Sampler const & ) = delete;
Sampler(Sampler && rhs)7914       Sampler( Sampler && rhs ) VULKAN_HPP_NOEXCEPT
7915         : m_sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_sampler, {} ) )
7916         , m_device( rhs.m_device )
7917         , m_allocator( rhs.m_allocator )
7918         , m_dispatcher( rhs.m_dispatcher )
7919       {}
7920       Sampler & operator=( Sampler const & ) = delete;
operator =(Sampler && rhs)7921       Sampler & operator                     =( Sampler && rhs ) VULKAN_HPP_NOEXCEPT
7922       {
7923         if ( this != &rhs )
7924         {
7925           if ( m_sampler )
7926           {
7927             getDispatcher()->vkDestroySampler( m_device, static_cast<VkSampler>( m_sampler ), m_allocator );
7928           }
7929           m_sampler    = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_sampler, {} );
7930           m_device     = rhs.m_device;
7931           m_allocator  = rhs.m_allocator;
7932           m_dispatcher = rhs.m_dispatcher;
7933         }
7934         return *this;
7935       }
7936 
operator *() const7937       VULKAN_HPP_NAMESPACE::Sampler const & operator*() const VULKAN_HPP_NOEXCEPT
7938       {
7939         return m_sampler;
7940       }
7941 
getDispatcher() const7942       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7943       {
7944         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7945         return m_dispatcher;
7946       }
7947 
7948     private:
7949       VULKAN_HPP_NAMESPACE::Sampler                                             m_sampler;
7950       VkDevice                                                                  m_device;
7951       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
7952       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7953     };
7954 
7955     class SamplerYcbcrConversion
7956     {
7957     public:
7958       using CType = VkSamplerYcbcrConversion;
7959 
7960       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7961         VULKAN_HPP_NAMESPACE::ObjectType::eSamplerYcbcrConversion;
7962       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7963         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSamplerYcbcrConversion;
7964 
7965     public:
SamplerYcbcrConversion(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7966       SamplerYcbcrConversion(
7967         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7968         VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const &                  createInfo,
7969         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7970         : m_device( *device )
7971         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7972             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7973         , m_dispatcher( device.getDispatcher() )
7974       {
7975         VULKAN_HPP_NAMESPACE::Result result =
7976           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSamplerYcbcrConversion(
7977             static_cast<VkDevice>( *device ),
7978             reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( &createInfo ),
7979             m_allocator,
7980             reinterpret_cast<VkSamplerYcbcrConversion *>( &m_samplerYcbcrConversion ) ) );
7981         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7982         {
7983           throwResultException( result, "vkCreateSamplerYcbcrConversion" );
7984         }
7985       }
7986 
SamplerYcbcrConversion(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSamplerYcbcrConversion samplerYcbcrConversion,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7987       SamplerYcbcrConversion(
7988         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7989         VkSamplerYcbcrConversion                                                        samplerYcbcrConversion,
7990         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7991         : m_samplerYcbcrConversion( samplerYcbcrConversion )
7992         , m_device( *device )
7993         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7994             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7995         , m_dispatcher( device.getDispatcher() )
7996       {}
7997 
SamplerYcbcrConversion(std::nullptr_t)7998       SamplerYcbcrConversion( std::nullptr_t ) {}
7999 
~SamplerYcbcrConversion()8000       ~SamplerYcbcrConversion()
8001       {
8002         if ( m_samplerYcbcrConversion )
8003         {
8004           getDispatcher()->vkDestroySamplerYcbcrConversion(
8005             m_device, static_cast<VkSamplerYcbcrConversion>( m_samplerYcbcrConversion ), m_allocator );
8006         }
8007       }
8008 
8009       SamplerYcbcrConversion()                                 = delete;
8010       SamplerYcbcrConversion( SamplerYcbcrConversion const & ) = delete;
SamplerYcbcrConversion(SamplerYcbcrConversion && rhs)8011       SamplerYcbcrConversion( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT
8012         : m_samplerYcbcrConversion(
8013             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_samplerYcbcrConversion, {} ) )
8014         , m_device( rhs.m_device )
8015         , m_allocator( rhs.m_allocator )
8016         , m_dispatcher( rhs.m_dispatcher )
8017       {}
8018       SamplerYcbcrConversion & operator=( SamplerYcbcrConversion const & ) = delete;
operator =(SamplerYcbcrConversion && rhs)8019       SamplerYcbcrConversion & operator=( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT
8020       {
8021         if ( this != &rhs )
8022         {
8023           if ( m_samplerYcbcrConversion )
8024           {
8025             getDispatcher()->vkDestroySamplerYcbcrConversion(
8026               m_device, static_cast<VkSamplerYcbcrConversion>( m_samplerYcbcrConversion ), m_allocator );
8027           }
8028           m_samplerYcbcrConversion =
8029             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_samplerYcbcrConversion, {} );
8030           m_device     = rhs.m_device;
8031           m_allocator  = rhs.m_allocator;
8032           m_dispatcher = rhs.m_dispatcher;
8033         }
8034         return *this;
8035       }
8036 
operator *() const8037       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & operator*() const VULKAN_HPP_NOEXCEPT
8038       {
8039         return m_samplerYcbcrConversion;
8040       }
8041 
getDispatcher() const8042       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8043       {
8044         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8045         return m_dispatcher;
8046       }
8047 
8048     private:
8049       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion                              m_samplerYcbcrConversion;
8050       VkDevice                                                                  m_device;
8051       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
8052       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8053     };
8054 
8055     class Semaphore
8056     {
8057     public:
8058       using CType = VkSemaphore;
8059 
8060       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8061         VULKAN_HPP_NAMESPACE::ObjectType::eSemaphore;
8062       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8063         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSemaphore;
8064 
8065     public:
Semaphore(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8066       Semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8067                  VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const &                               createInfo,
8068                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8069         : m_device( *device )
8070         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8071             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8072         , m_dispatcher( device.getDispatcher() )
8073       {
8074         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8075           getDispatcher()->vkCreateSemaphore( static_cast<VkDevice>( *device ),
8076                                               reinterpret_cast<const VkSemaphoreCreateInfo *>( &createInfo ),
8077                                               m_allocator,
8078                                               reinterpret_cast<VkSemaphore *>( &m_semaphore ) ) );
8079         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8080         {
8081           throwResultException( result, "vkCreateSemaphore" );
8082         }
8083       }
8084 
Semaphore(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSemaphore semaphore,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8085       Semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8086                  VkSemaphore                                                                     semaphore,
8087                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8088         : m_semaphore( semaphore )
8089         , m_device( *device )
8090         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8091             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8092         , m_dispatcher( device.getDispatcher() )
8093       {}
8094 
Semaphore(std::nullptr_t)8095       Semaphore( std::nullptr_t ) {}
8096 
~Semaphore()8097       ~Semaphore()
8098       {
8099         if ( m_semaphore )
8100         {
8101           getDispatcher()->vkDestroySemaphore( m_device, static_cast<VkSemaphore>( m_semaphore ), m_allocator );
8102         }
8103       }
8104 
8105       Semaphore()                    = delete;
8106       Semaphore( Semaphore const & ) = delete;
Semaphore(Semaphore && rhs)8107       Semaphore( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT
8108         : m_semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_semaphore, {} ) )
8109         , m_device( rhs.m_device )
8110         , m_allocator( rhs.m_allocator )
8111         , m_dispatcher( rhs.m_dispatcher )
8112       {}
8113       Semaphore & operator=( Semaphore const & ) = delete;
operator =(Semaphore && rhs)8114       Semaphore & operator                       =( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT
8115       {
8116         if ( this != &rhs )
8117         {
8118           if ( m_semaphore )
8119           {
8120             getDispatcher()->vkDestroySemaphore( m_device, static_cast<VkSemaphore>( m_semaphore ), m_allocator );
8121           }
8122           m_semaphore  = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_semaphore, {} );
8123           m_device     = rhs.m_device;
8124           m_allocator  = rhs.m_allocator;
8125           m_dispatcher = rhs.m_dispatcher;
8126         }
8127         return *this;
8128       }
8129 
operator *() const8130       VULKAN_HPP_NAMESPACE::Semaphore const & operator*() const VULKAN_HPP_NOEXCEPT
8131       {
8132         return m_semaphore;
8133       }
8134 
getDispatcher() const8135       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8136       {
8137         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8138         return m_dispatcher;
8139       }
8140 
8141       //=== VK_VERSION_1_2 ===
8142 
8143       VULKAN_HPP_NODISCARD uint64_t getCounterValue() const;
8144 
8145       //=== VK_KHR_timeline_semaphore ===
8146 
8147       VULKAN_HPP_NODISCARD uint64_t getCounterValueKHR() const;
8148 
8149     private:
8150       VULKAN_HPP_NAMESPACE::Semaphore                                           m_semaphore;
8151       VkDevice                                                                  m_device;
8152       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
8153       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8154     };
8155 
8156     class ShaderModule
8157     {
8158     public:
8159       using CType = VkShaderModule;
8160 
8161       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8162         VULKAN_HPP_NAMESPACE::ObjectType::eShaderModule;
8163       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8164         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eShaderModule;
8165 
8166     public:
ShaderModule(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8167       ShaderModule(
8168         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8169         VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const &                            createInfo,
8170         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8171         : m_device( *device )
8172         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8173             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8174         , m_dispatcher( device.getDispatcher() )
8175       {
8176         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8177           getDispatcher()->vkCreateShaderModule( static_cast<VkDevice>( *device ),
8178                                                  reinterpret_cast<const VkShaderModuleCreateInfo *>( &createInfo ),
8179                                                  m_allocator,
8180                                                  reinterpret_cast<VkShaderModule *>( &m_shaderModule ) ) );
8181         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8182         {
8183           throwResultException( result, "vkCreateShaderModule" );
8184         }
8185       }
8186 
ShaderModule(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkShaderModule shaderModule,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8187       ShaderModule(
8188         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8189         VkShaderModule                                                                  shaderModule,
8190         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8191         : m_shaderModule( shaderModule )
8192         , m_device( *device )
8193         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8194             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8195         , m_dispatcher( device.getDispatcher() )
8196       {}
8197 
ShaderModule(std::nullptr_t)8198       ShaderModule( std::nullptr_t ) {}
8199 
~ShaderModule()8200       ~ShaderModule()
8201       {
8202         if ( m_shaderModule )
8203         {
8204           getDispatcher()->vkDestroyShaderModule(
8205             m_device, static_cast<VkShaderModule>( m_shaderModule ), m_allocator );
8206         }
8207       }
8208 
8209       ShaderModule()                       = delete;
8210       ShaderModule( ShaderModule const & ) = delete;
ShaderModule(ShaderModule && rhs)8211       ShaderModule( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT
8212         : m_shaderModule( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_shaderModule, {} ) )
8213         , m_device( rhs.m_device )
8214         , m_allocator( rhs.m_allocator )
8215         , m_dispatcher( rhs.m_dispatcher )
8216       {}
8217       ShaderModule & operator=( ShaderModule const & ) = delete;
operator =(ShaderModule && rhs)8218       ShaderModule & operator                          =( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT
8219       {
8220         if ( this != &rhs )
8221         {
8222           if ( m_shaderModule )
8223           {
8224             getDispatcher()->vkDestroyShaderModule(
8225               m_device, static_cast<VkShaderModule>( m_shaderModule ), m_allocator );
8226           }
8227           m_shaderModule = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_shaderModule, {} );
8228           m_device       = rhs.m_device;
8229           m_allocator    = rhs.m_allocator;
8230           m_dispatcher   = rhs.m_dispatcher;
8231         }
8232         return *this;
8233       }
8234 
operator *() const8235       VULKAN_HPP_NAMESPACE::ShaderModule const & operator*() const VULKAN_HPP_NOEXCEPT
8236       {
8237         return m_shaderModule;
8238       }
8239 
getDispatcher() const8240       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8241       {
8242         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8243         return m_dispatcher;
8244       }
8245 
8246     private:
8247       VULKAN_HPP_NAMESPACE::ShaderModule                                        m_shaderModule;
8248       VkDevice                                                                  m_device;
8249       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
8250       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8251     };
8252 
8253     class SurfaceKHR
8254     {
8255     public:
8256       using CType = VkSurfaceKHR;
8257 
8258       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8259         VULKAN_HPP_NAMESPACE::ObjectType::eSurfaceKHR;
8260       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8261         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSurfaceKHR;
8262 
8263     public:
8264 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8265       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8266                   VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const &                       createInfo,
8267                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8268         : m_instance( *instance )
8269         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8270             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8271         , m_dispatcher( instance.getDispatcher() )
8272       {
8273         VULKAN_HPP_NAMESPACE::Result result =
8274           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAndroidSurfaceKHR(
8275             static_cast<VkInstance>( *instance ),
8276             reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR *>( &createInfo ),
8277             m_allocator,
8278             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8279         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8280         {
8281           throwResultException( result, "vkCreateAndroidSurfaceKHR" );
8282         }
8283       }
8284 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8285 
8286 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8287       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8288                   VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const &                      createInfo,
8289                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8290         : m_instance( *instance )
8291         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8292             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8293         , m_dispatcher( instance.getDispatcher() )
8294       {
8295         VULKAN_HPP_NAMESPACE::Result result =
8296           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDirectFBSurfaceEXT(
8297             static_cast<VkInstance>( *instance ),
8298             reinterpret_cast<const VkDirectFBSurfaceCreateInfoEXT *>( &createInfo ),
8299             m_allocator,
8300             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8301         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8302         {
8303           throwResultException( result, "vkCreateDirectFBSurfaceEXT" );
8304         }
8305       }
8306 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
8307 
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8308       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8309                   VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const &                       createInfo,
8310                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8311         : m_instance( *instance )
8312         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8313             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8314         , m_dispatcher( instance.getDispatcher() )
8315       {
8316         VULKAN_HPP_NAMESPACE::Result result =
8317           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDisplayPlaneSurfaceKHR(
8318             static_cast<VkInstance>( *instance ),
8319             reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR *>( &createInfo ),
8320             m_allocator,
8321             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8322         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8323         {
8324           throwResultException( result, "vkCreateDisplayPlaneSurfaceKHR" );
8325         }
8326       }
8327 
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8328       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8329                   VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const &                      createInfo,
8330                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8331         : m_instance( *instance )
8332         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8333             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8334         , m_dispatcher( instance.getDispatcher() )
8335       {
8336         VULKAN_HPP_NAMESPACE::Result result =
8337           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateHeadlessSurfaceEXT(
8338             static_cast<VkInstance>( *instance ),
8339             reinterpret_cast<const VkHeadlessSurfaceCreateInfoEXT *>( &createInfo ),
8340             m_allocator,
8341             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8342         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8343         {
8344           throwResultException( result, "vkCreateHeadlessSurfaceEXT" );
8345         }
8346       }
8347 
8348 #  if defined( VK_USE_PLATFORM_IOS_MVK )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8349       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8350                   VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const &                           createInfo,
8351                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8352         : m_instance( *instance )
8353         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8354             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8355         , m_dispatcher( instance.getDispatcher() )
8356       {
8357         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8358           getDispatcher()->vkCreateIOSSurfaceMVK( static_cast<VkInstance>( *instance ),
8359                                                   reinterpret_cast<const VkIOSSurfaceCreateInfoMVK *>( &createInfo ),
8360                                                   m_allocator,
8361                                                   reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8362         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8363         {
8364           throwResultException( result, "vkCreateIOSSurfaceMVK" );
8365         }
8366       }
8367 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
8368 
8369 #  if defined( VK_USE_PLATFORM_FUCHSIA )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8370       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8371                   VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const &                 createInfo,
8372                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8373         : m_instance( *instance )
8374         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8375             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8376         , m_dispatcher( instance.getDispatcher() )
8377       {
8378         VULKAN_HPP_NAMESPACE::Result result =
8379           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateImagePipeSurfaceFUCHSIA(
8380             static_cast<VkInstance>( *instance ),
8381             reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA *>( &createInfo ),
8382             m_allocator,
8383             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8384         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8385         {
8386           throwResultException( result, "vkCreateImagePipeSurfaceFUCHSIA" );
8387         }
8388       }
8389 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
8390 
8391 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8392       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8393                   VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const &                         createInfo,
8394                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8395         : m_instance( *instance )
8396         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8397             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8398         , m_dispatcher( instance.getDispatcher() )
8399       {
8400         VULKAN_HPP_NAMESPACE::Result result =
8401           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateMacOSSurfaceMVK(
8402             static_cast<VkInstance>( *instance ),
8403             reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK *>( &createInfo ),
8404             m_allocator,
8405             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8406         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8407         {
8408           throwResultException( result, "vkCreateMacOSSurfaceMVK" );
8409         }
8410       }
8411 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
8412 
8413 #  if defined( VK_USE_PLATFORM_METAL_EXT )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8414       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8415                   VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const &                         createInfo,
8416                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8417         : m_instance( *instance )
8418         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8419             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8420         , m_dispatcher( instance.getDispatcher() )
8421       {
8422         VULKAN_HPP_NAMESPACE::Result result =
8423           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateMetalSurfaceEXT(
8424             static_cast<VkInstance>( *instance ),
8425             reinterpret_cast<const VkMetalSurfaceCreateInfoEXT *>( &createInfo ),
8426             m_allocator,
8427             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8428         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8429         {
8430           throwResultException( result, "vkCreateMetalSurfaceEXT" );
8431         }
8432       }
8433 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
8434 
8435 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8436       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8437                   VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const &                        createInfo,
8438                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8439         : m_instance( *instance )
8440         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8441             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8442         , m_dispatcher( instance.getDispatcher() )
8443       {
8444         VULKAN_HPP_NAMESPACE::Result result =
8445           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateScreenSurfaceQNX(
8446             static_cast<VkInstance>( *instance ),
8447             reinterpret_cast<const VkScreenSurfaceCreateInfoQNX *>( &createInfo ),
8448             m_allocator,
8449             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8450         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8451         {
8452           throwResultException( result, "vkCreateScreenSurfaceQNX" );
8453         }
8454       }
8455 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
8456 
8457 #  if defined( VK_USE_PLATFORM_GGP )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8458       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8459                   VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const &              createInfo,
8460                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8461         : m_instance( *instance )
8462         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8463             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8464         , m_dispatcher( instance.getDispatcher() )
8465       {
8466         VULKAN_HPP_NAMESPACE::Result result =
8467           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateStreamDescriptorSurfaceGGP(
8468             static_cast<VkInstance>( *instance ),
8469             reinterpret_cast<const VkStreamDescriptorSurfaceCreateInfoGGP *>( &createInfo ),
8470             m_allocator,
8471             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8472         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8473         {
8474           throwResultException( result, "vkCreateStreamDescriptorSurfaceGGP" );
8475         }
8476       }
8477 #  endif /*VK_USE_PLATFORM_GGP*/
8478 
8479 #  if defined( VK_USE_PLATFORM_VI_NN )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8480       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8481                   VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const &                             createInfo,
8482                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8483         : m_instance( *instance )
8484         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8485             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8486         , m_dispatcher( instance.getDispatcher() )
8487       {
8488         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8489           getDispatcher()->vkCreateViSurfaceNN( static_cast<VkInstance>( *instance ),
8490                                                 reinterpret_cast<const VkViSurfaceCreateInfoNN *>( &createInfo ),
8491                                                 m_allocator,
8492                                                 reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8493         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8494         {
8495           throwResultException( result, "vkCreateViSurfaceNN" );
8496         }
8497       }
8498 #  endif /*VK_USE_PLATFORM_VI_NN*/
8499 
8500 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8501       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8502                   VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const &                       createInfo,
8503                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8504         : m_instance( *instance )
8505         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8506             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8507         , m_dispatcher( instance.getDispatcher() )
8508       {
8509         VULKAN_HPP_NAMESPACE::Result result =
8510           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateWaylandSurfaceKHR(
8511             static_cast<VkInstance>( *instance ),
8512             reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR *>( &createInfo ),
8513             m_allocator,
8514             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8515         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8516         {
8517           throwResultException( result, "vkCreateWaylandSurfaceKHR" );
8518         }
8519       }
8520 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
8521 
8522 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8523       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8524                   VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const &                         createInfo,
8525                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8526         : m_instance( *instance )
8527         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8528             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8529         , m_dispatcher( instance.getDispatcher() )
8530       {
8531         VULKAN_HPP_NAMESPACE::Result result =
8532           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateWin32SurfaceKHR(
8533             static_cast<VkInstance>( *instance ),
8534             reinterpret_cast<const VkWin32SurfaceCreateInfoKHR *>( &createInfo ),
8535             m_allocator,
8536             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8537         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8538         {
8539           throwResultException( result, "vkCreateWin32SurfaceKHR" );
8540         }
8541       }
8542 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
8543 
8544 #  if defined( VK_USE_PLATFORM_XCB_KHR )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8545       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8546                   VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const &                           createInfo,
8547                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8548         : m_instance( *instance )
8549         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8550             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8551         , m_dispatcher( instance.getDispatcher() )
8552       {
8553         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8554           getDispatcher()->vkCreateXcbSurfaceKHR( static_cast<VkInstance>( *instance ),
8555                                                   reinterpret_cast<const VkXcbSurfaceCreateInfoKHR *>( &createInfo ),
8556                                                   m_allocator,
8557                                                   reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8558         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8559         {
8560           throwResultException( result, "vkCreateXcbSurfaceKHR" );
8561         }
8562       }
8563 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
8564 
8565 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8566       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8567                   VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const &                          createInfo,
8568                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8569         : m_instance( *instance )
8570         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8571             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8572         , m_dispatcher( instance.getDispatcher() )
8573       {
8574         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8575           getDispatcher()->vkCreateXlibSurfaceKHR( static_cast<VkInstance>( *instance ),
8576                                                    reinterpret_cast<const VkXlibSurfaceCreateInfoKHR *>( &createInfo ),
8577                                                    m_allocator,
8578                                                    reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8579         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8580         {
8581           throwResultException( result, "vkCreateXlibSurfaceKHR" );
8582         }
8583       }
8584 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
8585 
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkSurfaceKHR surfaceKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8586       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8587                   VkSurfaceKHR                                                                    surfaceKHR,
8588                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8589         : m_surfaceKHR( surfaceKHR )
8590         , m_instance( *instance )
8591         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8592             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8593         , m_dispatcher( instance.getDispatcher() )
8594       {}
8595 
SurfaceKHR(std::nullptr_t)8596       SurfaceKHR( std::nullptr_t ) {}
8597 
~SurfaceKHR()8598       ~SurfaceKHR()
8599       {
8600         if ( m_surfaceKHR )
8601         {
8602           getDispatcher()->vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( m_surfaceKHR ), m_allocator );
8603         }
8604       }
8605 
8606       SurfaceKHR()                     = delete;
8607       SurfaceKHR( SurfaceKHR const & ) = delete;
SurfaceKHR(SurfaceKHR && rhs)8608       SurfaceKHR( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT
8609         : m_surfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_surfaceKHR, {} ) )
8610         , m_instance( rhs.m_instance )
8611         , m_allocator( rhs.m_allocator )
8612         , m_dispatcher( rhs.m_dispatcher )
8613       {}
8614       SurfaceKHR & operator=( SurfaceKHR const & ) = delete;
operator =(SurfaceKHR && rhs)8615       SurfaceKHR & operator                        =( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT
8616       {
8617         if ( this != &rhs )
8618         {
8619           if ( m_surfaceKHR )
8620           {
8621             getDispatcher()->vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( m_surfaceKHR ), m_allocator );
8622           }
8623           m_surfaceKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_surfaceKHR, {} );
8624           m_instance   = rhs.m_instance;
8625           m_allocator  = rhs.m_allocator;
8626           m_dispatcher = rhs.m_dispatcher;
8627         }
8628         return *this;
8629       }
8630 
operator *() const8631       VULKAN_HPP_NAMESPACE::SurfaceKHR const & operator*() const VULKAN_HPP_NOEXCEPT
8632       {
8633         return m_surfaceKHR;
8634       }
8635 
getDispatcher() const8636       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
8637       {
8638         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8639         return m_dispatcher;
8640       }
8641 
8642     private:
8643       VULKAN_HPP_NAMESPACE::SurfaceKHR                                            m_surfaceKHR;
8644       VkInstance                                                                  m_instance;
8645       const VkAllocationCallbacks *                                               m_allocator  = nullptr;
8646       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
8647     };
8648 
8649     class SwapchainKHR
8650     {
8651     public:
8652       using CType = VkSwapchainKHR;
8653 
8654       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8655         VULKAN_HPP_NAMESPACE::ObjectType::eSwapchainKHR;
8656       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8657         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSwapchainKHR;
8658 
8659     public:
SwapchainKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8660       SwapchainKHR(
8661         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8662         VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const &                            createInfo,
8663         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8664         : m_device( *device )
8665         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8666             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8667         , m_dispatcher( device.getDispatcher() )
8668       {
8669         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8670           getDispatcher()->vkCreateSwapchainKHR( static_cast<VkDevice>( *device ),
8671                                                  reinterpret_cast<const VkSwapchainCreateInfoKHR *>( &createInfo ),
8672                                                  m_allocator,
8673                                                  reinterpret_cast<VkSwapchainKHR *>( &m_swapchainKHR ) ) );
8674         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8675         {
8676           throwResultException( result, "vkCreateSwapchainKHR" );
8677         }
8678       }
8679 
SwapchainKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSwapchainKHR swapchainKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8680       SwapchainKHR(
8681         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8682         VkSwapchainKHR                                                                  swapchainKHR,
8683         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8684         : m_swapchainKHR( swapchainKHR )
8685         , m_device( *device )
8686         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8687             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8688         , m_dispatcher( device.getDispatcher() )
8689       {}
8690 
SwapchainKHR(VkSwapchainKHR swapchainKHR,VkDevice device,VkAllocationCallbacks const * allocator,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher)8691       SwapchainKHR( VkSwapchainKHR                                                            swapchainKHR,
8692                     VkDevice                                                                  device,
8693                     VkAllocationCallbacks const *                                             allocator,
8694                     VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher )
8695         : m_swapchainKHR( swapchainKHR ), m_device( device ), m_allocator( allocator ), m_dispatcher( dispatcher )
8696       {}
SwapchainKHR(std::nullptr_t)8697       SwapchainKHR( std::nullptr_t ) {}
8698 
~SwapchainKHR()8699       ~SwapchainKHR()
8700       {
8701         if ( m_swapchainKHR )
8702         {
8703           getDispatcher()->vkDestroySwapchainKHR(
8704             m_device, static_cast<VkSwapchainKHR>( m_swapchainKHR ), m_allocator );
8705         }
8706       }
8707 
8708       SwapchainKHR()                       = delete;
8709       SwapchainKHR( SwapchainKHR const & ) = delete;
SwapchainKHR(SwapchainKHR && rhs)8710       SwapchainKHR( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT
8711         : m_swapchainKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_swapchainKHR, {} ) )
8712         , m_device( rhs.m_device )
8713         , m_allocator( rhs.m_allocator )
8714         , m_dispatcher( rhs.m_dispatcher )
8715       {}
8716       SwapchainKHR & operator=( SwapchainKHR const & ) = delete;
operator =(SwapchainKHR && rhs)8717       SwapchainKHR & operator                          =( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT
8718       {
8719         if ( this != &rhs )
8720         {
8721           if ( m_swapchainKHR )
8722           {
8723             getDispatcher()->vkDestroySwapchainKHR(
8724               m_device, static_cast<VkSwapchainKHR>( m_swapchainKHR ), m_allocator );
8725           }
8726           m_swapchainKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_swapchainKHR, {} );
8727           m_device       = rhs.m_device;
8728           m_allocator    = rhs.m_allocator;
8729           m_dispatcher   = rhs.m_dispatcher;
8730         }
8731         return *this;
8732       }
8733 
operator *() const8734       VULKAN_HPP_NAMESPACE::SwapchainKHR const & operator*() const VULKAN_HPP_NOEXCEPT
8735       {
8736         return m_swapchainKHR;
8737       }
8738 
getDispatcher() const8739       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8740       {
8741         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8742         return m_dispatcher;
8743       }
8744 
8745       //=== VK_KHR_swapchain ===
8746 
8747       VULKAN_HPP_NODISCARD std::vector<VkImage> getImages() const;
8748 
8749       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
8750                            acquireNextImage( uint64_t                                  timeout,
8751                                              VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
8752                                              VULKAN_HPP_NAMESPACE::Fence fence         VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
8753 
8754       //=== VK_EXT_display_control ===
8755 
8756       VULKAN_HPP_NODISCARD uint64_t getCounterEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter ) const;
8757 
8758       //=== VK_GOOGLE_display_timing ===
8759 
8760       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE getRefreshCycleDurationGOOGLE() const;
8761 
8762       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE>
8763                            getPastPresentationTimingGOOGLE() const;
8764 
8765       //=== VK_KHR_shared_presentable_image ===
8766 
8767       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
8768 
8769       //=== VK_AMD_display_native_hdr ===
8770 
8771       void setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT;
8772 
8773       //=== VK_KHR_present_wait ===
8774 
8775       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result waitForPresent( uint64_t presentId, uint64_t timeout ) const;
8776 
8777 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
8778       //=== VK_EXT_full_screen_exclusive ===
8779 
8780       void acquireFullScreenExclusiveModeEXT() const;
8781 
8782       void releaseFullScreenExclusiveModeEXT() const;
8783 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
8784 
8785     private:
8786       VULKAN_HPP_NAMESPACE::SwapchainKHR                                        m_swapchainKHR;
8787       VkDevice                                                                  m_device;
8788       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
8789       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8790     };
8791 
8792     class SwapchainKHRs : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>
8793     {
8794     public:
SwapchainKHRs(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8795       SwapchainKHRs(
8796         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                        device,
8797         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR> const & createInfos,
8798         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>        allocator = nullptr )
8799       {
8800         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
8801         std::vector<VkSwapchainKHR>                                               swapchains( createInfos.size() );
8802         VULKAN_HPP_NAMESPACE::Result                                              result =
8803           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateSharedSwapchainsKHR(
8804             static_cast<VkDevice>( *device ),
8805             createInfos.size(),
8806             reinterpret_cast<const VkSwapchainCreateInfoKHR *>( createInfos.data() ),
8807             reinterpret_cast<const VkAllocationCallbacks *>(
8808               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
8809             swapchains.data() ) );
8810         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
8811         {
8812           this->reserve( createInfos.size() );
8813           for ( auto const & swapchainKHR : swapchains )
8814           {
8815             this->emplace_back( swapchainKHR,
8816                                 static_cast<VkDevice>( *device ),
8817                                 reinterpret_cast<const VkAllocationCallbacks *>(
8818                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
8819                                 dispatcher );
8820           }
8821         }
8822         else
8823         {
8824           throwResultException( result, "vkCreateSharedSwapchainsKHR" );
8825         }
8826       }
8827 
8828       SwapchainKHRs()                        = delete;
8829       SwapchainKHRs( SwapchainKHRs const & ) = delete;
8830       SwapchainKHRs( SwapchainKHRs && rhs )  = default;
8831       SwapchainKHRs & operator=( SwapchainKHRs const & ) = delete;
8832       SwapchainKHRs & operator=( SwapchainKHRs && rhs ) = default;
8833     };
8834 
8835     class ValidationCacheEXT
8836     {
8837     public:
8838       using CType = VkValidationCacheEXT;
8839 
8840       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8841         VULKAN_HPP_NAMESPACE::ObjectType::eValidationCacheEXT;
8842       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8843         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eValidationCacheEXT;
8844 
8845     public:
ValidationCacheEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8846       ValidationCacheEXT(
8847         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8848         VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const &                      createInfo,
8849         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8850         : m_device( *device )
8851         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8852             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8853         , m_dispatcher( device.getDispatcher() )
8854       {
8855         VULKAN_HPP_NAMESPACE::Result result =
8856           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateValidationCacheEXT(
8857             static_cast<VkDevice>( *device ),
8858             reinterpret_cast<const VkValidationCacheCreateInfoEXT *>( &createInfo ),
8859             m_allocator,
8860             reinterpret_cast<VkValidationCacheEXT *>( &m_validationCacheEXT ) ) );
8861         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8862         {
8863           throwResultException( result, "vkCreateValidationCacheEXT" );
8864         }
8865       }
8866 
ValidationCacheEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkValidationCacheEXT validationCacheEXT,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8867       ValidationCacheEXT(
8868         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8869         VkValidationCacheEXT                                                            validationCacheEXT,
8870         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8871         : m_validationCacheEXT( validationCacheEXT )
8872         , m_device( *device )
8873         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8874             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8875         , m_dispatcher( device.getDispatcher() )
8876       {}
8877 
ValidationCacheEXT(std::nullptr_t)8878       ValidationCacheEXT( std::nullptr_t ) {}
8879 
~ValidationCacheEXT()8880       ~ValidationCacheEXT()
8881       {
8882         if ( m_validationCacheEXT )
8883         {
8884           getDispatcher()->vkDestroyValidationCacheEXT(
8885             m_device, static_cast<VkValidationCacheEXT>( m_validationCacheEXT ), m_allocator );
8886         }
8887       }
8888 
8889       ValidationCacheEXT()                             = delete;
8890       ValidationCacheEXT( ValidationCacheEXT const & ) = delete;
ValidationCacheEXT(ValidationCacheEXT && rhs)8891       ValidationCacheEXT( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT
8892         : m_validationCacheEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_validationCacheEXT,
8893                                                                                            {} ) )
8894         , m_device( rhs.m_device )
8895         , m_allocator( rhs.m_allocator )
8896         , m_dispatcher( rhs.m_dispatcher )
8897       {}
8898       ValidationCacheEXT & operator=( ValidationCacheEXT const & ) = delete;
operator =(ValidationCacheEXT && rhs)8899       ValidationCacheEXT & operator                                =( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT
8900       {
8901         if ( this != &rhs )
8902         {
8903           if ( m_validationCacheEXT )
8904           {
8905             getDispatcher()->vkDestroyValidationCacheEXT(
8906               m_device, static_cast<VkValidationCacheEXT>( m_validationCacheEXT ), m_allocator );
8907           }
8908           m_validationCacheEXT =
8909             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_validationCacheEXT, {} );
8910           m_device     = rhs.m_device;
8911           m_allocator  = rhs.m_allocator;
8912           m_dispatcher = rhs.m_dispatcher;
8913         }
8914         return *this;
8915       }
8916 
operator *() const8917       VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & operator*() const VULKAN_HPP_NOEXCEPT
8918       {
8919         return m_validationCacheEXT;
8920       }
8921 
getDispatcher() const8922       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8923       {
8924         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8925         return m_dispatcher;
8926       }
8927 
8928       //=== VK_EXT_validation_cache ===
8929 
8930       void merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches ) const;
8931 
8932       VULKAN_HPP_NODISCARD std::vector<uint8_t> getData() const;
8933 
8934     private:
8935       VULKAN_HPP_NAMESPACE::ValidationCacheEXT                                  m_validationCacheEXT;
8936       VkDevice                                                                  m_device;
8937       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
8938       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8939     };
8940 
8941 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
8942     class VideoSessionKHR
8943     {
8944     public:
8945       using CType = VkVideoSessionKHR;
8946 
8947       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8948         VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionKHR;
8949       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8950         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
8951 
8952     public:
VideoSessionKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8953       VideoSessionKHR(
8954         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8955         VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const &                         createInfo,
8956         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8957         : m_device( *device )
8958         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8959             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8960         , m_dispatcher( device.getDispatcher() )
8961       {
8962         VULKAN_HPP_NAMESPACE::Result result =
8963           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateVideoSessionKHR(
8964             static_cast<VkDevice>( *device ),
8965             reinterpret_cast<const VkVideoSessionCreateInfoKHR *>( &createInfo ),
8966             m_allocator,
8967             reinterpret_cast<VkVideoSessionKHR *>( &m_videoSessionKHR ) ) );
8968         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8969         {
8970           throwResultException( result, "vkCreateVideoSessionKHR" );
8971         }
8972       }
8973 
VideoSessionKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkVideoSessionKHR videoSessionKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8974       VideoSessionKHR(
8975         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8976         VkVideoSessionKHR                                                               videoSessionKHR,
8977         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8978         : m_videoSessionKHR( videoSessionKHR )
8979         , m_device( *device )
8980         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8981             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8982         , m_dispatcher( device.getDispatcher() )
8983       {}
8984 
VideoSessionKHR(std::nullptr_t)8985       VideoSessionKHR( std::nullptr_t ) {}
8986 
~VideoSessionKHR()8987       ~VideoSessionKHR()
8988       {
8989         if ( m_videoSessionKHR )
8990         {
8991           getDispatcher()->vkDestroyVideoSessionKHR(
8992             m_device, static_cast<VkVideoSessionKHR>( m_videoSessionKHR ), m_allocator );
8993         }
8994       }
8995 
8996       VideoSessionKHR()                          = delete;
8997       VideoSessionKHR( VideoSessionKHR const & ) = delete;
VideoSessionKHR(VideoSessionKHR && rhs)8998       VideoSessionKHR( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT
8999         : m_videoSessionKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionKHR, {} ) )
9000         , m_device( rhs.m_device )
9001         , m_allocator( rhs.m_allocator )
9002         , m_dispatcher( rhs.m_dispatcher )
9003       {}
9004       VideoSessionKHR & operator=( VideoSessionKHR const & ) = delete;
operator =(VideoSessionKHR && rhs)9005       VideoSessionKHR & operator                             =( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT
9006       {
9007         if ( this != &rhs )
9008         {
9009           if ( m_videoSessionKHR )
9010           {
9011             getDispatcher()->vkDestroyVideoSessionKHR(
9012               m_device, static_cast<VkVideoSessionKHR>( m_videoSessionKHR ), m_allocator );
9013           }
9014           m_videoSessionKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionKHR, {} );
9015           m_device          = rhs.m_device;
9016           m_allocator       = rhs.m_allocator;
9017           m_dispatcher      = rhs.m_dispatcher;
9018         }
9019         return *this;
9020       }
9021 
operator *() const9022       VULKAN_HPP_NAMESPACE::VideoSessionKHR const & operator*() const VULKAN_HPP_NOEXCEPT
9023       {
9024         return m_videoSessionKHR;
9025       }
9026 
getDispatcher() const9027       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9028       {
9029         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9030         return m_dispatcher;
9031       }
9032 
9033       //=== VK_KHR_video_queue ===
9034 
9035       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR> getMemoryRequirements() const;
9036 
9037       void
9038         bindMemory( ArrayProxy<const VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR> const & videoSessionBindMemories ) const;
9039 
9040     private:
9041       VULKAN_HPP_NAMESPACE::VideoSessionKHR                                     m_videoSessionKHR;
9042       VkDevice                                                                  m_device;
9043       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
9044       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
9045     };
9046 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
9047 
9048 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
9049     class VideoSessionParametersKHR
9050     {
9051     public:
9052       using CType = VkVideoSessionParametersKHR;
9053 
9054       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
9055         VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionParametersKHR;
9056       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
9057         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
9058 
9059     public:
VideoSessionParametersKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9060       VideoSessionParametersKHR(
9061         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9062         VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const &               createInfo,
9063         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9064         : m_device( *device )
9065         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
9066             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
9067         , m_dispatcher( device.getDispatcher() )
9068       {
9069         VULKAN_HPP_NAMESPACE::Result result =
9070           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateVideoSessionParametersKHR(
9071             static_cast<VkDevice>( *device ),
9072             reinterpret_cast<const VkVideoSessionParametersCreateInfoKHR *>( &createInfo ),
9073             m_allocator,
9074             reinterpret_cast<VkVideoSessionParametersKHR *>( &m_videoSessionParametersKHR ) ) );
9075         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9076         {
9077           throwResultException( result, "vkCreateVideoSessionParametersKHR" );
9078         }
9079       }
9080 
VideoSessionParametersKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkVideoSessionParametersKHR videoSessionParametersKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9081       VideoSessionParametersKHR(
9082         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9083         VkVideoSessionParametersKHR                                                     videoSessionParametersKHR,
9084         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9085         : m_videoSessionParametersKHR( videoSessionParametersKHR )
9086         , m_device( *device )
9087         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
9088             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
9089         , m_dispatcher( device.getDispatcher() )
9090       {}
9091 
VideoSessionParametersKHR(std::nullptr_t)9092       VideoSessionParametersKHR( std::nullptr_t ) {}
9093 
~VideoSessionParametersKHR()9094       ~VideoSessionParametersKHR()
9095       {
9096         if ( m_videoSessionParametersKHR )
9097         {
9098           getDispatcher()->vkDestroyVideoSessionParametersKHR(
9099             m_device, static_cast<VkVideoSessionParametersKHR>( m_videoSessionParametersKHR ), m_allocator );
9100         }
9101       }
9102 
9103       VideoSessionParametersKHR()                                    = delete;
9104       VideoSessionParametersKHR( VideoSessionParametersKHR const & ) = delete;
VideoSessionParametersKHR(VideoSessionParametersKHR && rhs)9105       VideoSessionParametersKHR( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT
9106         : m_videoSessionParametersKHR(
9107             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionParametersKHR, {} ) )
9108         , m_device( rhs.m_device )
9109         , m_allocator( rhs.m_allocator )
9110         , m_dispatcher( rhs.m_dispatcher )
9111       {}
9112       VideoSessionParametersKHR & operator=( VideoSessionParametersKHR const & ) = delete;
operator =(VideoSessionParametersKHR && rhs)9113       VideoSessionParametersKHR & operator=( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT
9114       {
9115         if ( this != &rhs )
9116         {
9117           if ( m_videoSessionParametersKHR )
9118           {
9119             getDispatcher()->vkDestroyVideoSessionParametersKHR(
9120               m_device, static_cast<VkVideoSessionParametersKHR>( m_videoSessionParametersKHR ), m_allocator );
9121           }
9122           m_videoSessionParametersKHR =
9123             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionParametersKHR, {} );
9124           m_device     = rhs.m_device;
9125           m_allocator  = rhs.m_allocator;
9126           m_dispatcher = rhs.m_dispatcher;
9127         }
9128         return *this;
9129       }
9130 
operator *() const9131       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & operator*() const VULKAN_HPP_NOEXCEPT
9132       {
9133         return m_videoSessionParametersKHR;
9134       }
9135 
getDispatcher() const9136       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9137       {
9138         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9139         return m_dispatcher;
9140       }
9141 
9142       //=== VK_KHR_video_queue ===
9143 
9144       void update( const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo ) const;
9145 
9146     private:
9147       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR                           m_videoSessionParametersKHR;
9148       VkDevice                                                                  m_device;
9149       const VkAllocationCallbacks *                                             m_allocator  = nullptr;
9150       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
9151     };
9152 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
9153 
9154     //===========================
9155     //=== COMMAND Definitions ===
9156     //===========================
9157 
9158     //=== VK_VERSION_1_0 ===
9159 
9160     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures
getFeatures() const9161                                            PhysicalDevice::getFeatures() const VULKAN_HPP_NOEXCEPT
9162     {
9163       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features;
9164       getDispatcher()->vkGetPhysicalDeviceFeatures( static_cast<VkPhysicalDevice>( m_physicalDevice ),
9165                                                     reinterpret_cast<VkPhysicalDeviceFeatures *>( &features ) );
9166       return features;
9167     }
9168 
9169     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties
getFormatProperties(VULKAN_HPP_NAMESPACE::Format format) const9170       PhysicalDevice::getFormatProperties( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
9171     {
9172       VULKAN_HPP_NAMESPACE::FormatProperties formatProperties;
9173       getDispatcher()->vkGetPhysicalDeviceFormatProperties(
9174         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9175         static_cast<VkFormat>( format ),
9176         reinterpret_cast<VkFormatProperties *>( &formatProperties ) );
9177       return formatProperties;
9178     }
9179 
9180     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties
getImageFormatProperties(VULKAN_HPP_NAMESPACE::Format format,VULKAN_HPP_NAMESPACE::ImageType type,VULKAN_HPP_NAMESPACE::ImageTiling tiling,VULKAN_HPP_NAMESPACE::ImageUsageFlags usage,VULKAN_HPP_NAMESPACE::ImageCreateFlags flags) const9181       PhysicalDevice::getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format           format,
9182                                                 VULKAN_HPP_NAMESPACE::ImageType        type,
9183                                                 VULKAN_HPP_NAMESPACE::ImageTiling      tiling,
9184                                                 VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage,
9185                                                 VULKAN_HPP_NAMESPACE::ImageCreateFlags flags ) const
9186     {
9187       VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties;
9188       VULKAN_HPP_NAMESPACE::Result                result =
9189         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties(
9190           static_cast<VkPhysicalDevice>( m_physicalDevice ),
9191           static_cast<VkFormat>( format ),
9192           static_cast<VkImageType>( type ),
9193           static_cast<VkImageTiling>( tiling ),
9194           static_cast<VkImageUsageFlags>( usage ),
9195           static_cast<VkImageCreateFlags>( flags ),
9196           reinterpret_cast<VkImageFormatProperties *>( &imageFormatProperties ) ) );
9197       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9198       {
9199         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" );
9200       }
9201       return imageFormatProperties;
9202     }
9203 
9204     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties
getProperties() const9205                                            PhysicalDevice::getProperties() const VULKAN_HPP_NOEXCEPT
9206     {
9207       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties;
9208       getDispatcher()->vkGetPhysicalDeviceProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
9209                                                       reinterpret_cast<VkPhysicalDeviceProperties *>( &properties ) );
9210       return properties;
9211     }
9212 
9213     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties>
getQueueFamilyProperties() const9214                                            PhysicalDevice::getQueueFamilyProperties() const VULKAN_HPP_NOEXCEPT
9215     {
9216       uint32_t queueFamilyPropertyCount;
9217       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties(
9218         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
9219       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties> queueFamilyProperties( queueFamilyPropertyCount );
9220       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties(
9221         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9222         &queueFamilyPropertyCount,
9223         reinterpret_cast<VkQueueFamilyProperties *>( queueFamilyProperties.data() ) );
9224       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
9225       return queueFamilyProperties;
9226     }
9227 
9228     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties
getMemoryProperties() const9229                                            PhysicalDevice::getMemoryProperties() const VULKAN_HPP_NOEXCEPT
9230     {
9231       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties;
9232       getDispatcher()->vkGetPhysicalDeviceMemoryProperties(
9233         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9234         reinterpret_cast<VkPhysicalDeviceMemoryProperties *>( &memoryProperties ) );
9235       return memoryProperties;
9236     }
9237 
9238     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_vkVoidFunction
getProcAddr(const std::string & name) const9239       Instance::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT
9240     {
9241       return getDispatcher()->vkGetInstanceProcAddr( static_cast<VkInstance>( m_instance ), name.c_str() );
9242     }
9243 
9244     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_vkVoidFunction
getProcAddr(const std::string & name) const9245       Device::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT
9246     {
9247       return getDispatcher()->vkGetDeviceProcAddr( static_cast<VkDevice>( m_device ), name.c_str() );
9248     }
9249 
9250     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties>
enumerateInstanceExtensionProperties(Optional<const std::string> layerName) const9251       Context::enumerateInstanceExtensionProperties( Optional<const std::string> layerName ) const
9252     {
9253       std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> properties;
9254       uint32_t                                               propertyCount;
9255       VULKAN_HPP_NAMESPACE::Result                           result;
9256       do
9257       {
9258         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceExtensionProperties(
9259           layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
9260         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
9261         {
9262           properties.resize( propertyCount );
9263           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceExtensionProperties(
9264             layerName ? layerName->c_str() : nullptr,
9265             &propertyCount,
9266             reinterpret_cast<VkExtensionProperties *>( properties.data() ) ) );
9267           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9268         }
9269       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9270       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
9271       {
9272         properties.resize( propertyCount );
9273       }
9274       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9275       {
9276         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceExtensionProperties" );
9277       }
9278       return properties;
9279     }
9280 
9281     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties>
enumerateDeviceExtensionProperties(Optional<const std::string> layerName) const9282       PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
9283     {
9284       std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> properties;
9285       uint32_t                                               propertyCount;
9286       VULKAN_HPP_NAMESPACE::Result                           result;
9287       do
9288       {
9289         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9290           getDispatcher()->vkEnumerateDeviceExtensionProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
9291                                                                  layerName ? layerName->c_str() : nullptr,
9292                                                                  &propertyCount,
9293                                                                  nullptr ) );
9294         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
9295         {
9296           properties.resize( propertyCount );
9297           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateDeviceExtensionProperties(
9298             static_cast<VkPhysicalDevice>( m_physicalDevice ),
9299             layerName ? layerName->c_str() : nullptr,
9300             &propertyCount,
9301             reinterpret_cast<VkExtensionProperties *>( properties.data() ) ) );
9302           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9303         }
9304       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9305       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
9306       {
9307         properties.resize( propertyCount );
9308       }
9309       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9310       {
9311         throwResultException( result,
9312                               VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" );
9313       }
9314       return properties;
9315     }
9316 
9317     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::LayerProperties>
enumerateInstanceLayerProperties() const9318                                            Context::enumerateInstanceLayerProperties() const
9319     {
9320       std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> properties;
9321       uint32_t                                           propertyCount;
9322       VULKAN_HPP_NAMESPACE::Result                       result;
9323       do
9324       {
9325         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9326           getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
9327         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
9328         {
9329           properties.resize( propertyCount );
9330           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceLayerProperties(
9331             &propertyCount, reinterpret_cast<VkLayerProperties *>( properties.data() ) ) );
9332           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9333         }
9334       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9335       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
9336       {
9337         properties.resize( propertyCount );
9338       }
9339       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9340       {
9341         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceLayerProperties" );
9342       }
9343       return properties;
9344     }
9345 
9346     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::LayerProperties>
enumerateDeviceLayerProperties() const9347                                            PhysicalDevice::enumerateDeviceLayerProperties() const
9348     {
9349       std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> properties;
9350       uint32_t                                           propertyCount;
9351       VULKAN_HPP_NAMESPACE::Result                       result;
9352       do
9353       {
9354         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateDeviceLayerProperties(
9355           static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
9356         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
9357         {
9358           properties.resize( propertyCount );
9359           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateDeviceLayerProperties(
9360             static_cast<VkPhysicalDevice>( m_physicalDevice ),
9361             &propertyCount,
9362             reinterpret_cast<VkLayerProperties *>( properties.data() ) ) );
9363           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9364         }
9365       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9366       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
9367       {
9368         properties.resize( propertyCount );
9369       }
9370       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9371       {
9372         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" );
9373       }
9374       return properties;
9375     }
9376 
submit(ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,VULKAN_HPP_NAMESPACE::Fence fence) const9377     VULKAN_HPP_INLINE void Queue::submit( ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,
9378                                           VULKAN_HPP_NAMESPACE::Fence                                fence ) const
9379     {
9380       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9381         getDispatcher()->vkQueueSubmit( static_cast<VkQueue>( m_queue ),
9382                                         submits.size(),
9383                                         reinterpret_cast<const VkSubmitInfo *>( submits.data() ),
9384                                         static_cast<VkFence>( fence ) ) );
9385       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9386       {
9387         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit" );
9388       }
9389     }
9390 
waitIdle() const9391     VULKAN_HPP_INLINE void Queue::waitIdle() const
9392     {
9393       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9394         getDispatcher()->vkQueueWaitIdle( static_cast<VkQueue>( m_queue ) ) );
9395       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9396       {
9397         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::waitIdle" );
9398       }
9399     }
9400 
waitIdle() const9401     VULKAN_HPP_INLINE void Device::waitIdle() const
9402     {
9403       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9404         getDispatcher()->vkDeviceWaitIdle( static_cast<VkDevice>( m_device ) ) );
9405       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9406       {
9407         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitIdle" );
9408       }
9409     }
9410 
9411     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void *
mapMemory(VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::DeviceSize size,VULKAN_HPP_NAMESPACE::MemoryMapFlags flags) const9412                          DeviceMemory::mapMemory( VULKAN_HPP_NAMESPACE::DeviceSize     offset,
9413                                VULKAN_HPP_NAMESPACE::DeviceSize     size,
9414                                VULKAN_HPP_NAMESPACE::MemoryMapFlags flags ) const
9415     {
9416       void *                       pData;
9417       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9418         getDispatcher()->vkMapMemory( static_cast<VkDevice>( m_device ),
9419                                       static_cast<VkDeviceMemory>( m_deviceMemory ),
9420                                       static_cast<VkDeviceSize>( offset ),
9421                                       static_cast<VkDeviceSize>( size ),
9422                                       static_cast<VkMemoryMapFlags>( flags ),
9423                                       &pData ) );
9424       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9425       {
9426         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeviceMemory::mapMemory" );
9427       }
9428       return pData;
9429     }
9430 
unmapMemory() const9431     VULKAN_HPP_INLINE void DeviceMemory::unmapMemory() const VULKAN_HPP_NOEXCEPT
9432     {
9433       getDispatcher()->vkUnmapMemory( static_cast<VkDevice>( m_device ),
9434                                       static_cast<VkDeviceMemory>( m_deviceMemory ) );
9435     }
9436 
flushMappedMemoryRanges(ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges) const9437     VULKAN_HPP_INLINE void Device::flushMappedMemoryRanges(
9438       ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const
9439     {
9440       VULKAN_HPP_NAMESPACE::Result result =
9441         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkFlushMappedMemoryRanges(
9442           static_cast<VkDevice>( m_device ),
9443           memoryRanges.size(),
9444           reinterpret_cast<const VkMappedMemoryRange *>( memoryRanges.data() ) ) );
9445       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9446       {
9447         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" );
9448       }
9449     }
9450 
invalidateMappedMemoryRanges(ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges) const9451     VULKAN_HPP_INLINE void Device::invalidateMappedMemoryRanges(
9452       ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const
9453     {
9454       VULKAN_HPP_NAMESPACE::Result result =
9455         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkInvalidateMappedMemoryRanges(
9456           static_cast<VkDevice>( m_device ),
9457           memoryRanges.size(),
9458           reinterpret_cast<const VkMappedMemoryRange *>( memoryRanges.data() ) ) );
9459       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9460       {
9461         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" );
9462       }
9463     }
9464 
9465     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize
getCommitment() const9466                                            DeviceMemory::getCommitment() const VULKAN_HPP_NOEXCEPT
9467     {
9468       VULKAN_HPP_NAMESPACE::DeviceSize committedMemoryInBytes;
9469       getDispatcher()->vkGetDeviceMemoryCommitment( static_cast<VkDevice>( m_device ),
9470                                                     static_cast<VkDeviceMemory>( m_deviceMemory ),
9471                                                     reinterpret_cast<VkDeviceSize *>( &committedMemoryInBytes ) );
9472       return committedMemoryInBytes;
9473     }
9474 
bindMemory(VULKAN_HPP_NAMESPACE::DeviceMemory memory,VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset) const9475     VULKAN_HPP_INLINE void Buffer::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory,
9476                                                VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset ) const
9477     {
9478       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9479         getDispatcher()->vkBindBufferMemory( static_cast<VkDevice>( m_device ),
9480                                              static_cast<VkBuffer>( m_buffer ),
9481                                              static_cast<VkDeviceMemory>( memory ),
9482                                              static_cast<VkDeviceSize>( memoryOffset ) ) );
9483       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9484       {
9485         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Buffer::bindMemory" );
9486       }
9487     }
9488 
bindMemory(VULKAN_HPP_NAMESPACE::DeviceMemory memory,VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset) const9489     VULKAN_HPP_INLINE void Image::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory,
9490                                               VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset ) const
9491     {
9492       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9493         getDispatcher()->vkBindImageMemory( static_cast<VkDevice>( m_device ),
9494                                             static_cast<VkImage>( m_image ),
9495                                             static_cast<VkDeviceMemory>( memory ),
9496                                             static_cast<VkDeviceSize>( memoryOffset ) ) );
9497       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9498       {
9499         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Image::bindMemory" );
9500       }
9501     }
9502 
9503     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements
getMemoryRequirements() const9504                                            Buffer::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT
9505     {
9506       VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements;
9507       getDispatcher()->vkGetBufferMemoryRequirements( static_cast<VkDevice>( m_device ),
9508                                                       static_cast<VkBuffer>( m_buffer ),
9509                                                       reinterpret_cast<VkMemoryRequirements *>( &memoryRequirements ) );
9510       return memoryRequirements;
9511     }
9512 
9513     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements
getMemoryRequirements() const9514                                            Image::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT
9515     {
9516       VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements;
9517       getDispatcher()->vkGetImageMemoryRequirements( static_cast<VkDevice>( m_device ),
9518                                                      static_cast<VkImage>( m_image ),
9519                                                      reinterpret_cast<VkMemoryRequirements *>( &memoryRequirements ) );
9520       return memoryRequirements;
9521     }
9522 
9523     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements>
getSparseMemoryRequirements() const9524                                            Image::getSparseMemoryRequirements() const VULKAN_HPP_NOEXCEPT
9525     {
9526       uint32_t sparseMemoryRequirementCount;
9527       getDispatcher()->vkGetImageSparseMemoryRequirements(
9528         static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), &sparseMemoryRequirementCount, nullptr );
9529       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements> sparseMemoryRequirements(
9530         sparseMemoryRequirementCount );
9531       getDispatcher()->vkGetImageSparseMemoryRequirements(
9532         static_cast<VkDevice>( m_device ),
9533         static_cast<VkImage>( m_image ),
9534         &sparseMemoryRequirementCount,
9535         reinterpret_cast<VkSparseImageMemoryRequirements *>( sparseMemoryRequirements.data() ) );
9536       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
9537       return sparseMemoryRequirements;
9538     }
9539 
9540     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties>
getSparseImageFormatProperties(VULKAN_HPP_NAMESPACE::Format format,VULKAN_HPP_NAMESPACE::ImageType type,VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,VULKAN_HPP_NAMESPACE::ImageUsageFlags usage,VULKAN_HPP_NAMESPACE::ImageTiling tiling) const9541       PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format              format,
9542                                                       VULKAN_HPP_NAMESPACE::ImageType           type,
9543                                                       VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,
9544                                                       VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage,
9545                                                       VULKAN_HPP_NAMESPACE::ImageTiling         tiling ) const
9546       VULKAN_HPP_NOEXCEPT
9547     {
9548       uint32_t propertyCount;
9549       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties(
9550         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9551         static_cast<VkFormat>( format ),
9552         static_cast<VkImageType>( type ),
9553         static_cast<VkSampleCountFlagBits>( samples ),
9554         static_cast<VkImageUsageFlags>( usage ),
9555         static_cast<VkImageTiling>( tiling ),
9556         &propertyCount,
9557         nullptr );
9558       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties> properties( propertyCount );
9559       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties(
9560         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9561         static_cast<VkFormat>( format ),
9562         static_cast<VkImageType>( type ),
9563         static_cast<VkSampleCountFlagBits>( samples ),
9564         static_cast<VkImageUsageFlags>( usage ),
9565         static_cast<VkImageTiling>( tiling ),
9566         &propertyCount,
9567         reinterpret_cast<VkSparseImageFormatProperties *>( properties.data() ) );
9568       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9569       return properties;
9570     }
9571 
bindSparse(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,VULKAN_HPP_NAMESPACE::Fence fence) const9572     VULKAN_HPP_INLINE void Queue::bindSparse( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,
9573                                               VULKAN_HPP_NAMESPACE::Fence fence ) const
9574     {
9575       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9576         getDispatcher()->vkQueueBindSparse( static_cast<VkQueue>( m_queue ),
9577                                             bindInfo.size(),
9578                                             reinterpret_cast<const VkBindSparseInfo *>( bindInfo.data() ),
9579                                             static_cast<VkFence>( fence ) ) );
9580       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9581       {
9582         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::bindSparse" );
9583       }
9584     }
9585 
resetFences(ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences) const9586     VULKAN_HPP_INLINE void Device::resetFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences ) const
9587     {
9588       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkResetFences(
9589         static_cast<VkDevice>( m_device ), fences.size(), reinterpret_cast<const VkFence *>( fences.data() ) ) );
9590       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9591       {
9592         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetFences" );
9593       }
9594     }
9595 
getStatus() const9596     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Fence::getStatus() const
9597     {
9598       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9599         getDispatcher()->vkGetFenceStatus( static_cast<VkDevice>( m_device ), static_cast<VkFence>( m_fence ) ) );
9600       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
9601            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) )
9602       {
9603         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Fence::getStatus" );
9604       }
9605       return result;
9606     }
9607 
9608     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
waitForFences(ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,VULKAN_HPP_NAMESPACE::Bool32 waitAll,uint64_t timeout) const9609       Device::waitForFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,
9610                              VULKAN_HPP_NAMESPACE::Bool32                          waitAll,
9611                              uint64_t                                              timeout ) const
9612     {
9613       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9614         getDispatcher()->vkWaitForFences( static_cast<VkDevice>( m_device ),
9615                                           fences.size(),
9616                                           reinterpret_cast<const VkFence *>( fences.data() ),
9617                                           static_cast<VkBool32>( waitAll ),
9618                                           timeout ) );
9619       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
9620            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) )
9621       {
9622         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitForFences" );
9623       }
9624       return result;
9625     }
9626 
getStatus() const9627     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Event::getStatus() const
9628     {
9629       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9630         getDispatcher()->vkGetEventStatus( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
9631       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eEventSet ) &&
9632            ( result != VULKAN_HPP_NAMESPACE::Result::eEventReset ) )
9633       {
9634         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::getStatus" );
9635       }
9636       return result;
9637     }
9638 
set() const9639     VULKAN_HPP_INLINE void Event::set() const
9640     {
9641       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9642         getDispatcher()->vkSetEvent( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
9643       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9644       {
9645         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::set" );
9646       }
9647     }
9648 
reset() const9649     VULKAN_HPP_INLINE void Event::reset() const
9650     {
9651       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9652         getDispatcher()->vkResetEvent( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
9653       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9654       {
9655         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::reset" );
9656       }
9657     }
9658 
9659     template <typename T>
9660     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, std::vector<T>>
getResults(uint32_t firstQuery,uint32_t queryCount,size_t dataSize,VULKAN_HPP_NAMESPACE::DeviceSize stride,VULKAN_HPP_NAMESPACE::QueryResultFlags flags) const9661                                            QueryPool::getResults( uint32_t                               firstQuery,
9662                              uint32_t                               queryCount,
9663                              size_t                                 dataSize,
9664                              VULKAN_HPP_NAMESPACE::DeviceSize       stride,
9665                              VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const
9666     {
9667       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
9668       std::vector<T> data( dataSize / sizeof( T ) );
9669       Result         result =
9670         static_cast<Result>( getDispatcher()->vkGetQueryPoolResults( static_cast<VkDevice>( m_device ),
9671                                                                      static_cast<VkQueryPool>( m_queryPool ),
9672                                                                      firstQuery,
9673                                                                      queryCount,
9674                                                                      data.size() * sizeof( T ),
9675                                                                      reinterpret_cast<void *>( data.data() ),
9676                                                                      static_cast<VkDeviceSize>( stride ),
9677                                                                      static_cast<VkQueryResultFlags>( flags ) ) );
9678       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
9679            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) )
9680       {
9681         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::QueryPool::getResults" );
9682       }
9683       return std::make_pair( result, data );
9684     }
9685 
9686     template <typename T>
9687     VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, T>
getResult(uint32_t firstQuery,uint32_t queryCount,VULKAN_HPP_NAMESPACE::DeviceSize stride,VULKAN_HPP_NAMESPACE::QueryResultFlags flags) const9688                          QueryPool::getResult( uint32_t                               firstQuery,
9689                             uint32_t                               queryCount,
9690                             VULKAN_HPP_NAMESPACE::DeviceSize       stride,
9691                             VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const
9692     {
9693       T      data;
9694       Result result =
9695         static_cast<Result>( getDispatcher()->vkGetQueryPoolResults( static_cast<VkDevice>( m_device ),
9696                                                                      static_cast<VkQueryPool>( m_queryPool ),
9697                                                                      firstQuery,
9698                                                                      queryCount,
9699                                                                      sizeof( T ),
9700                                                                      reinterpret_cast<void *>( &data ),
9701                                                                      static_cast<VkDeviceSize>( stride ),
9702                                                                      static_cast<VkQueryResultFlags>( flags ) ) );
9703       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
9704            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) )
9705       {
9706         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::QueryPool::getResult" );
9707       }
9708       return std::make_pair( result, data );
9709     }
9710 
getSubresourceLayout(const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource) const9711     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout Image::getSubresourceLayout(
9712       const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT
9713     {
9714       VULKAN_HPP_NAMESPACE::SubresourceLayout layout;
9715       getDispatcher()->vkGetImageSubresourceLayout( static_cast<VkDevice>( m_device ),
9716                                                     static_cast<VkImage>( m_image ),
9717                                                     reinterpret_cast<const VkImageSubresource *>( &subresource ),
9718                                                     reinterpret_cast<VkSubresourceLayout *>( &layout ) );
9719       return layout;
9720     }
9721 
getData() const9722     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> PipelineCache::getData() const
9723     {
9724       std::vector<uint8_t>         data;
9725       size_t                       dataSize;
9726       VULKAN_HPP_NAMESPACE::Result result;
9727       do
9728       {
9729         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineCacheData(
9730           static_cast<VkDevice>( m_device ), static_cast<VkPipelineCache>( m_pipelineCache ), &dataSize, nullptr ) );
9731         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
9732         {
9733           data.resize( dataSize );
9734           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9735             getDispatcher()->vkGetPipelineCacheData( static_cast<VkDevice>( m_device ),
9736                                                      static_cast<VkPipelineCache>( m_pipelineCache ),
9737                                                      &dataSize,
9738                                                      reinterpret_cast<void *>( data.data() ) ) );
9739           VULKAN_HPP_ASSERT( dataSize <= data.size() );
9740         }
9741       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9742       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( dataSize < data.size() ) )
9743       {
9744         data.resize( dataSize );
9745       }
9746       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9747       {
9748         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PipelineCache::getData" );
9749       }
9750       return data;
9751     }
9752 
9753     VULKAN_HPP_INLINE void
merge(ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches) const9754       PipelineCache::merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches ) const
9755     {
9756       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9757         getDispatcher()->vkMergePipelineCaches( static_cast<VkDevice>( m_device ),
9758                                                 static_cast<VkPipelineCache>( m_pipelineCache ),
9759                                                 srcCaches.size(),
9760                                                 reinterpret_cast<const VkPipelineCache *>( srcCaches.data() ) ) );
9761       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9762       {
9763         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PipelineCache::merge" );
9764       }
9765     }
9766 
9767     VULKAN_HPP_INLINE void
reset(VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags) const9768       DescriptorPool::reset( VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT
9769     {
9770       getDispatcher()->vkResetDescriptorPool( static_cast<VkDevice>( m_device ),
9771                                               static_cast<VkDescriptorPool>( m_descriptorPool ),
9772                                               static_cast<VkDescriptorPoolResetFlags>( flags ) );
9773     }
9774 
updateDescriptorSets(ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const & descriptorCopies) const9775     VULKAN_HPP_INLINE void Device::updateDescriptorSets(
9776       ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,
9777       ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const &  descriptorCopies ) const VULKAN_HPP_NOEXCEPT
9778     {
9779       getDispatcher()->vkUpdateDescriptorSets(
9780         static_cast<VkDevice>( m_device ),
9781         descriptorWrites.size(),
9782         reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ),
9783         descriptorCopies.size(),
9784         reinterpret_cast<const VkCopyDescriptorSet *>( descriptorCopies.data() ) );
9785     }
9786 
9787     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Extent2D
getRenderAreaGranularity() const9788                                            RenderPass::getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT
9789     {
9790       VULKAN_HPP_NAMESPACE::Extent2D granularity;
9791       getDispatcher()->vkGetRenderAreaGranularity( static_cast<VkDevice>( m_device ),
9792                                                    static_cast<VkRenderPass>( m_renderPass ),
9793                                                    reinterpret_cast<VkExtent2D *>( &granularity ) );
9794       return granularity;
9795     }
9796 
reset(VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags) const9797     VULKAN_HPP_INLINE void CommandPool::reset( VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags ) const
9798     {
9799       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9800         getDispatcher()->vkResetCommandPool( static_cast<VkDevice>( m_device ),
9801                                              static_cast<VkCommandPool>( m_commandPool ),
9802                                              static_cast<VkCommandPoolResetFlags>( flags ) ) );
9803       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9804       {
9805         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandPool::reset" );
9806       }
9807     }
9808 
begin(const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo) const9809     VULKAN_HPP_INLINE void CommandBuffer::begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo ) const
9810     {
9811       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9812         getDispatcher()->vkBeginCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
9813                                                reinterpret_cast<const VkCommandBufferBeginInfo *>( &beginInfo ) ) );
9814       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9815       {
9816         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::begin" );
9817       }
9818     }
9819 
end() const9820     VULKAN_HPP_INLINE void CommandBuffer::end() const
9821     {
9822       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9823         getDispatcher()->vkEndCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ) ) );
9824       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9825       {
9826         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::end" );
9827       }
9828     }
9829 
reset(VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags) const9830     VULKAN_HPP_INLINE void CommandBuffer::reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags ) const
9831     {
9832       VULKAN_HPP_NAMESPACE::Result result =
9833         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkResetCommandBuffer(
9834           static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCommandBufferResetFlags>( flags ) ) );
9835       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9836       {
9837         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::reset" );
9838       }
9839     }
9840 
9841     VULKAN_HPP_INLINE void
bindPipeline(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::Pipeline pipeline) const9842       CommandBuffer::bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
9843                                    VULKAN_HPP_NAMESPACE::Pipeline          pipeline ) const VULKAN_HPP_NOEXCEPT
9844     {
9845       getDispatcher()->vkCmdBindPipeline( static_cast<VkCommandBuffer>( m_commandBuffer ),
9846                                           static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
9847                                           static_cast<VkPipeline>( pipeline ) );
9848     }
9849 
setViewport(uint32_t firstViewport,ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports) const9850     VULKAN_HPP_INLINE void CommandBuffer::setViewport(
9851       uint32_t                                                 firstViewport,
9852       ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
9853     {
9854       getDispatcher()->vkCmdSetViewport( static_cast<VkCommandBuffer>( m_commandBuffer ),
9855                                          firstViewport,
9856                                          viewports.size(),
9857                                          reinterpret_cast<const VkViewport *>( viewports.data() ) );
9858     }
9859 
setScissor(uint32_t firstScissor,ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors) const9860     VULKAN_HPP_INLINE void CommandBuffer::setScissor(
9861       uint32_t firstScissor, ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
9862     {
9863       getDispatcher()->vkCmdSetScissor( static_cast<VkCommandBuffer>( m_commandBuffer ),
9864                                         firstScissor,
9865                                         scissors.size(),
9866                                         reinterpret_cast<const VkRect2D *>( scissors.data() ) );
9867     }
9868 
setLineWidth(float lineWidth) const9869     VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT
9870     {
9871       getDispatcher()->vkCmdSetLineWidth( static_cast<VkCommandBuffer>( m_commandBuffer ), lineWidth );
9872     }
9873 
setDepthBias(float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor) const9874     VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor,
9875                                                         float depthBiasClamp,
9876                                                         float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT
9877     {
9878       getDispatcher()->vkCmdSetDepthBias( static_cast<VkCommandBuffer>( m_commandBuffer ),
9879                                           depthBiasConstantFactor,
9880                                           depthBiasClamp,
9881                                           depthBiasSlopeFactor );
9882     }
9883 
setBlendConstants(const float blendConstants[4]) const9884     VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT
9885     {
9886       getDispatcher()->vkCmdSetBlendConstants( static_cast<VkCommandBuffer>( m_commandBuffer ), blendConstants );
9887     }
9888 
setDepthBounds(float minDepthBounds,float maxDepthBounds) const9889     VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds,
9890                                                           float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT
9891     {
9892       getDispatcher()->vkCmdSetDepthBounds(
9893         static_cast<VkCommandBuffer>( m_commandBuffer ), minDepthBounds, maxDepthBounds );
9894     }
9895 
setStencilCompareMask(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t compareMask) const9896     VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
9897                                                                  uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT
9898     {
9899       getDispatcher()->vkCmdSetStencilCompareMask(
9900         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
9901     }
9902 
setStencilWriteMask(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t writeMask) const9903     VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
9904                                                                uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT
9905     {
9906       getDispatcher()->vkCmdSetStencilWriteMask(
9907         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
9908     }
9909 
setStencilReference(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t reference) const9910     VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
9911                                                                uint32_t reference ) const VULKAN_HPP_NOEXCEPT
9912     {
9913       getDispatcher()->vkCmdSetStencilReference(
9914         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), reference );
9915     }
9916 
9917     VULKAN_HPP_INLINE void
bindDescriptorSets(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t firstSet,ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,ArrayProxy<const uint32_t> const & dynamicOffsets) const9918       CommandBuffer::bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
9919                                          VULKAN_HPP_NAMESPACE::PipelineLayout    layout,
9920                                          uint32_t                                firstSet,
9921                                          ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,
9922                                          ArrayProxy<const uint32_t> const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT
9923     {
9924       getDispatcher()->vkCmdBindDescriptorSets( static_cast<VkCommandBuffer>( m_commandBuffer ),
9925                                                 static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
9926                                                 static_cast<VkPipelineLayout>( layout ),
9927                                                 firstSet,
9928                                                 descriptorSets.size(),
9929                                                 reinterpret_cast<const VkDescriptorSet *>( descriptorSets.data() ),
9930                                                 dynamicOffsets.size(),
9931                                                 dynamicOffsets.data() );
9932     }
9933 
9934     VULKAN_HPP_INLINE void
bindIndexBuffer(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::IndexType indexType) const9935       CommandBuffer::bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer     buffer,
9936                                       VULKAN_HPP_NAMESPACE::DeviceSize offset,
9937                                       VULKAN_HPP_NAMESPACE::IndexType  indexType ) const VULKAN_HPP_NOEXCEPT
9938     {
9939       getDispatcher()->vkCmdBindIndexBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
9940                                              static_cast<VkBuffer>( buffer ),
9941                                              static_cast<VkDeviceSize>( offset ),
9942                                              static_cast<VkIndexType>( indexType ) );
9943     }
9944 
bindVertexBuffers(uint32_t firstBinding,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets) const9945     VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers(
9946       uint32_t                                                   firstBinding,
9947       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
9948       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
9949     {
9950 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
9951       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
9952 #  else
9953       if ( buffers.size() != offsets.size() )
9954       {
9955         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
9956                           "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
9957       }
9958 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
9959 
9960       getDispatcher()->vkCmdBindVertexBuffers( static_cast<VkCommandBuffer>( m_commandBuffer ),
9961                                                firstBinding,
9962                                                buffers.size(),
9963                                                reinterpret_cast<const VkBuffer *>( buffers.data() ),
9964                                                reinterpret_cast<const VkDeviceSize *>( offsets.data() ) );
9965     }
9966 
draw(uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance) const9967     VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount,
9968                                                 uint32_t instanceCount,
9969                                                 uint32_t firstVertex,
9970                                                 uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
9971     {
9972       getDispatcher()->vkCmdDraw(
9973         static_cast<VkCommandBuffer>( m_commandBuffer ), vertexCount, instanceCount, firstVertex, firstInstance );
9974     }
9975 
drawIndexed(uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance) const9976     VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount,
9977                                                        uint32_t instanceCount,
9978                                                        uint32_t firstIndex,
9979                                                        int32_t  vertexOffset,
9980                                                        uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
9981     {
9982       getDispatcher()->vkCmdDrawIndexed( static_cast<VkCommandBuffer>( m_commandBuffer ),
9983                                          indexCount,
9984                                          instanceCount,
9985                                          firstIndex,
9986                                          vertexOffset,
9987                                          firstInstance );
9988     }
9989 
drawIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const9990     VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
9991                                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
9992                                                         uint32_t                         drawCount,
9993                                                         uint32_t stride ) const VULKAN_HPP_NOEXCEPT
9994     {
9995       getDispatcher()->vkCmdDrawIndirect( static_cast<VkCommandBuffer>( m_commandBuffer ),
9996                                           static_cast<VkBuffer>( buffer ),
9997                                           static_cast<VkDeviceSize>( offset ),
9998                                           drawCount,
9999                                           stride );
10000     }
10001 
drawIndexedIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const10002     VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
10003                                                                VULKAN_HPP_NAMESPACE::DeviceSize offset,
10004                                                                uint32_t                         drawCount,
10005                                                                uint32_t stride ) const VULKAN_HPP_NOEXCEPT
10006     {
10007       getDispatcher()->vkCmdDrawIndexedIndirect( static_cast<VkCommandBuffer>( m_commandBuffer ),
10008                                                  static_cast<VkBuffer>( buffer ),
10009                                                  static_cast<VkDeviceSize>( offset ),
10010                                                  drawCount,
10011                                                  stride );
10012     }
10013 
dispatch(uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const10014     VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX,
10015                                                     uint32_t groupCountY,
10016                                                     uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
10017     {
10018       getDispatcher()->vkCmdDispatch(
10019         static_cast<VkCommandBuffer>( m_commandBuffer ), groupCountX, groupCountY, groupCountZ );
10020     }
10021 
10022     VULKAN_HPP_INLINE void
dispatchIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset) const10023       CommandBuffer::dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
10024                                        VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT
10025     {
10026       getDispatcher()->vkCmdDispatchIndirect( static_cast<VkCommandBuffer>( m_commandBuffer ),
10027                                               static_cast<VkBuffer>( buffer ),
10028                                               static_cast<VkDeviceSize>( offset ) );
10029     }
10030 
copyBuffer(VULKAN_HPP_NAMESPACE::Buffer srcBuffer,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions) const10031     VULKAN_HPP_INLINE void CommandBuffer::copyBuffer(
10032       VULKAN_HPP_NAMESPACE::Buffer                               srcBuffer,
10033       VULKAN_HPP_NAMESPACE::Buffer                               dstBuffer,
10034       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
10035     {
10036       getDispatcher()->vkCmdCopyBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
10037                                         static_cast<VkBuffer>( srcBuffer ),
10038                                         static_cast<VkBuffer>( dstBuffer ),
10039                                         regions.size(),
10040                                         reinterpret_cast<const VkBufferCopy *>( regions.data() ) );
10041     }
10042 
copyImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions) const10043     VULKAN_HPP_INLINE void CommandBuffer::copyImage(
10044       VULKAN_HPP_NAMESPACE::Image                               srcImage,
10045       VULKAN_HPP_NAMESPACE::ImageLayout                         srcImageLayout,
10046       VULKAN_HPP_NAMESPACE::Image                               dstImage,
10047       VULKAN_HPP_NAMESPACE::ImageLayout                         dstImageLayout,
10048       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
10049     {
10050       getDispatcher()->vkCmdCopyImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
10051                                        static_cast<VkImage>( srcImage ),
10052                                        static_cast<VkImageLayout>( srcImageLayout ),
10053                                        static_cast<VkImage>( dstImage ),
10054                                        static_cast<VkImageLayout>( dstImageLayout ),
10055                                        regions.size(),
10056                                        reinterpret_cast<const VkImageCopy *>( regions.data() ) );
10057     }
10058 
blitImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,VULKAN_HPP_NAMESPACE::Filter filter) const10059     VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image       srcImage,
10060                                                      VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,
10061                                                      VULKAN_HPP_NAMESPACE::Image       dstImage,
10062                                                      VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,
10063                                                      ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,
10064                                                      VULKAN_HPP_NAMESPACE::Filter filter ) const VULKAN_HPP_NOEXCEPT
10065     {
10066       getDispatcher()->vkCmdBlitImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
10067                                        static_cast<VkImage>( srcImage ),
10068                                        static_cast<VkImageLayout>( srcImageLayout ),
10069                                        static_cast<VkImage>( dstImage ),
10070                                        static_cast<VkImageLayout>( dstImageLayout ),
10071                                        regions.size(),
10072                                        reinterpret_cast<const VkImageBlit *>( regions.data() ),
10073                                        static_cast<VkFilter>( filter ) );
10074     }
10075 
copyBufferToImage(VULKAN_HPP_NAMESPACE::Buffer srcBuffer,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions) const10076     VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage(
10077       VULKAN_HPP_NAMESPACE::Buffer                                    srcBuffer,
10078       VULKAN_HPP_NAMESPACE::Image                                     dstImage,
10079       VULKAN_HPP_NAMESPACE::ImageLayout                               dstImageLayout,
10080       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
10081     {
10082       getDispatcher()->vkCmdCopyBufferToImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
10083                                                static_cast<VkBuffer>( srcBuffer ),
10084                                                static_cast<VkImage>( dstImage ),
10085                                                static_cast<VkImageLayout>( dstImageLayout ),
10086                                                regions.size(),
10087                                                reinterpret_cast<const VkBufferImageCopy *>( regions.data() ) );
10088     }
10089 
copyImageToBuffer(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions) const10090     VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer(
10091       VULKAN_HPP_NAMESPACE::Image                                     srcImage,
10092       VULKAN_HPP_NAMESPACE::ImageLayout                               srcImageLayout,
10093       VULKAN_HPP_NAMESPACE::Buffer                                    dstBuffer,
10094       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
10095     {
10096       getDispatcher()->vkCmdCopyImageToBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
10097                                                static_cast<VkImage>( srcImage ),
10098                                                static_cast<VkImageLayout>( srcImageLayout ),
10099                                                static_cast<VkBuffer>( dstBuffer ),
10100                                                regions.size(),
10101                                                reinterpret_cast<const VkBufferImageCopy *>( regions.data() ) );
10102     }
10103 
10104     template <typename T>
updateBuffer(VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,ArrayProxy<const T> const & data) const10105     VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
10106                                                         VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
10107                                                         ArrayProxy<const T> const & data ) const VULKAN_HPP_NOEXCEPT
10108     {
10109       getDispatcher()->vkCmdUpdateBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
10110                                           static_cast<VkBuffer>( dstBuffer ),
10111                                           static_cast<VkDeviceSize>( dstOffset ),
10112                                           data.size() * sizeof( T ),
10113                                           reinterpret_cast<const void *>( data.data() ) );
10114     }
10115 
fillBuffer(VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,VULKAN_HPP_NAMESPACE::DeviceSize size,uint32_t data) const10116     VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
10117                                                       VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
10118                                                       VULKAN_HPP_NAMESPACE::DeviceSize size,
10119                                                       uint32_t                         data ) const VULKAN_HPP_NOEXCEPT
10120     {
10121       getDispatcher()->vkCmdFillBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
10122                                         static_cast<VkBuffer>( dstBuffer ),
10123                                         static_cast<VkDeviceSize>( dstOffset ),
10124                                         static_cast<VkDeviceSize>( size ),
10125                                         data );
10126     }
10127 
clearColorImage(VULKAN_HPP_NAMESPACE::Image image,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout,const VULKAN_HPP_NAMESPACE::ClearColorValue & color,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges) const10128     VULKAN_HPP_INLINE void CommandBuffer::clearColorImage(
10129       VULKAN_HPP_NAMESPACE::Image                                           image,
10130       VULKAN_HPP_NAMESPACE::ImageLayout                                     imageLayout,
10131       const VULKAN_HPP_NAMESPACE::ClearColorValue &                         color,
10132       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT
10133     {
10134       getDispatcher()->vkCmdClearColorImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
10135                                              static_cast<VkImage>( image ),
10136                                              static_cast<VkImageLayout>( imageLayout ),
10137                                              reinterpret_cast<const VkClearColorValue *>( &color ),
10138                                              ranges.size(),
10139                                              reinterpret_cast<const VkImageSubresourceRange *>( ranges.data() ) );
10140     }
10141 
clearDepthStencilImage(VULKAN_HPP_NAMESPACE::Image image,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout,const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue & depthStencil,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges) const10142     VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage(
10143       VULKAN_HPP_NAMESPACE::Image                                           image,
10144       VULKAN_HPP_NAMESPACE::ImageLayout                                     imageLayout,
10145       const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue &                  depthStencil,
10146       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT
10147     {
10148       getDispatcher()->vkCmdClearDepthStencilImage(
10149         static_cast<VkCommandBuffer>( m_commandBuffer ),
10150         static_cast<VkImage>( image ),
10151         static_cast<VkImageLayout>( imageLayout ),
10152         reinterpret_cast<const VkClearDepthStencilValue *>( &depthStencil ),
10153         ranges.size(),
10154         reinterpret_cast<const VkImageSubresourceRange *>( ranges.data() ) );
10155     }
10156 
clearAttachments(ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const & rects) const10157     VULKAN_HPP_INLINE void CommandBuffer::clearAttachments(
10158       ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,
10159       ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const &       rects ) const VULKAN_HPP_NOEXCEPT
10160     {
10161       getDispatcher()->vkCmdClearAttachments( static_cast<VkCommandBuffer>( m_commandBuffer ),
10162                                               attachments.size(),
10163                                               reinterpret_cast<const VkClearAttachment *>( attachments.data() ),
10164                                               rects.size(),
10165                                               reinterpret_cast<const VkClearRect *>( rects.data() ) );
10166     }
10167 
resolveImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions) const10168     VULKAN_HPP_INLINE void CommandBuffer::resolveImage(
10169       VULKAN_HPP_NAMESPACE::Image                                  srcImage,
10170       VULKAN_HPP_NAMESPACE::ImageLayout                            srcImageLayout,
10171       VULKAN_HPP_NAMESPACE::Image                                  dstImage,
10172       VULKAN_HPP_NAMESPACE::ImageLayout                            dstImageLayout,
10173       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions ) const VULKAN_HPP_NOEXCEPT
10174     {
10175       getDispatcher()->vkCmdResolveImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
10176                                           static_cast<VkImage>( srcImage ),
10177                                           static_cast<VkImageLayout>( srcImageLayout ),
10178                                           static_cast<VkImage>( dstImage ),
10179                                           static_cast<VkImageLayout>( dstImageLayout ),
10180                                           regions.size(),
10181                                           reinterpret_cast<const VkImageResolve *>( regions.data() ) );
10182     }
10183 
10184     VULKAN_HPP_INLINE void
setEvent(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask) const10185       CommandBuffer::setEvent( VULKAN_HPP_NAMESPACE::Event              event,
10186                                VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT
10187     {
10188       getDispatcher()->vkCmdSetEvent( static_cast<VkCommandBuffer>( m_commandBuffer ),
10189                                       static_cast<VkEvent>( event ),
10190                                       static_cast<VkPipelineStageFlags>( stageMask ) );
10191     }
10192 
10193     VULKAN_HPP_INLINE void
resetEvent(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask) const10194       CommandBuffer::resetEvent( VULKAN_HPP_NAMESPACE::Event              event,
10195                                  VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT
10196     {
10197       getDispatcher()->vkCmdResetEvent( static_cast<VkCommandBuffer>( m_commandBuffer ),
10198                                         static_cast<VkEvent>( event ),
10199                                         static_cast<VkPipelineStageFlags>( stageMask ) );
10200     }
10201 
waitEvents(ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask,VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask,ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const & memoryBarriers,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers) const10202     VULKAN_HPP_INLINE void CommandBuffer::waitEvents(
10203       ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &               events,
10204       VULKAN_HPP_NAMESPACE::PipelineStageFlags                            srcStageMask,
10205       VULKAN_HPP_NAMESPACE::PipelineStageFlags                            dstStageMask,
10206       ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
10207       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
10208       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT
10209     {
10210       getDispatcher()->vkCmdWaitEvents( static_cast<VkCommandBuffer>( m_commandBuffer ),
10211                                         events.size(),
10212                                         reinterpret_cast<const VkEvent *>( events.data() ),
10213                                         static_cast<VkPipelineStageFlags>( srcStageMask ),
10214                                         static_cast<VkPipelineStageFlags>( dstStageMask ),
10215                                         memoryBarriers.size(),
10216                                         reinterpret_cast<const VkMemoryBarrier *>( memoryBarriers.data() ),
10217                                         bufferMemoryBarriers.size(),
10218                                         reinterpret_cast<const VkBufferMemoryBarrier *>( bufferMemoryBarriers.data() ),
10219                                         imageMemoryBarriers.size(),
10220                                         reinterpret_cast<const VkImageMemoryBarrier *>( imageMemoryBarriers.data() ) );
10221     }
10222 
pipelineBarrier(VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask,VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask,VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags,ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const & memoryBarriers,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers) const10223     VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier(
10224       VULKAN_HPP_NAMESPACE::PipelineStageFlags                            srcStageMask,
10225       VULKAN_HPP_NAMESPACE::PipelineStageFlags                            dstStageMask,
10226       VULKAN_HPP_NAMESPACE::DependencyFlags                               dependencyFlags,
10227       ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
10228       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
10229       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT
10230     {
10231       getDispatcher()->vkCmdPipelineBarrier(
10232         static_cast<VkCommandBuffer>( m_commandBuffer ),
10233         static_cast<VkPipelineStageFlags>( srcStageMask ),
10234         static_cast<VkPipelineStageFlags>( dstStageMask ),
10235         static_cast<VkDependencyFlags>( dependencyFlags ),
10236         memoryBarriers.size(),
10237         reinterpret_cast<const VkMemoryBarrier *>( memoryBarriers.data() ),
10238         bufferMemoryBarriers.size(),
10239         reinterpret_cast<const VkBufferMemoryBarrier *>( bufferMemoryBarriers.data() ),
10240         imageMemoryBarriers.size(),
10241         reinterpret_cast<const VkImageMemoryBarrier *>( imageMemoryBarriers.data() ) );
10242     }
10243 
10244     VULKAN_HPP_INLINE void
beginQuery(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,VULKAN_HPP_NAMESPACE::QueryControlFlags flags) const10245       CommandBuffer::beginQuery( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
10246                                  uint32_t                                query,
10247                                  VULKAN_HPP_NAMESPACE::QueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT
10248     {
10249       getDispatcher()->vkCmdBeginQuery( static_cast<VkCommandBuffer>( m_commandBuffer ),
10250                                         static_cast<VkQueryPool>( queryPool ),
10251                                         query,
10252                                         static_cast<VkQueryControlFlags>( flags ) );
10253     }
10254 
endQuery(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const10255     VULKAN_HPP_INLINE void CommandBuffer::endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
10256                                                     uint32_t                        query ) const VULKAN_HPP_NOEXCEPT
10257     {
10258       getDispatcher()->vkCmdEndQuery(
10259         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query );
10260     }
10261 
resetQueryPool(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery,uint32_t queryCount) const10262     VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
10263                                                           uint32_t                        firstQuery,
10264                                                           uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
10265     {
10266       getDispatcher()->vkCmdResetQueryPool( static_cast<VkCommandBuffer>( m_commandBuffer ),
10267                                             static_cast<VkQueryPool>( queryPool ),
10268                                             firstQuery,
10269                                             queryCount );
10270     }
10271 
writeTimestamp(VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const10272     VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
10273                                                           VULKAN_HPP_NAMESPACE::QueryPool             queryPool,
10274                                                           uint32_t query ) const VULKAN_HPP_NOEXCEPT
10275     {
10276       getDispatcher()->vkCmdWriteTimestamp( static_cast<VkCommandBuffer>( m_commandBuffer ),
10277                                             static_cast<VkPipelineStageFlagBits>( pipelineStage ),
10278                                             static_cast<VkQueryPool>( queryPool ),
10279                                             query );
10280     }
10281 
10282     VULKAN_HPP_INLINE void
copyQueryPoolResults(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,VULKAN_HPP_NAMESPACE::DeviceSize stride,VULKAN_HPP_NAMESPACE::QueryResultFlags flags) const10283       CommandBuffer::copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool        queryPool,
10284                                            uint32_t                               firstQuery,
10285                                            uint32_t                               queryCount,
10286                                            VULKAN_HPP_NAMESPACE::Buffer           dstBuffer,
10287                                            VULKAN_HPP_NAMESPACE::DeviceSize       dstOffset,
10288                                            VULKAN_HPP_NAMESPACE::DeviceSize       stride,
10289                                            VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT
10290     {
10291       getDispatcher()->vkCmdCopyQueryPoolResults( static_cast<VkCommandBuffer>( m_commandBuffer ),
10292                                                   static_cast<VkQueryPool>( queryPool ),
10293                                                   firstQuery,
10294                                                   queryCount,
10295                                                   static_cast<VkBuffer>( dstBuffer ),
10296                                                   static_cast<VkDeviceSize>( dstOffset ),
10297                                                   static_cast<VkDeviceSize>( stride ),
10298                                                   static_cast<VkQueryResultFlags>( flags ) );
10299     }
10300 
10301     template <typename T>
pushConstants(VULKAN_HPP_NAMESPACE::PipelineLayout layout,VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags,uint32_t offset,ArrayProxy<const T> const & values) const10302     VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout   layout,
10303                                                          VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags,
10304                                                          uint32_t                               offset,
10305                                                          ArrayProxy<const T> const & values ) const VULKAN_HPP_NOEXCEPT
10306     {
10307       getDispatcher()->vkCmdPushConstants( static_cast<VkCommandBuffer>( m_commandBuffer ),
10308                                            static_cast<VkPipelineLayout>( layout ),
10309                                            static_cast<VkShaderStageFlags>( stageFlags ),
10310                                            offset,
10311                                            values.size() * sizeof( T ),
10312                                            reinterpret_cast<const void *>( values.data() ) );
10313     }
10314 
10315     VULKAN_HPP_INLINE void
beginRenderPass(const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,VULKAN_HPP_NAMESPACE::SubpassContents contents) const10316       CommandBuffer::beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
10317                                       VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT
10318     {
10319       getDispatcher()->vkCmdBeginRenderPass( static_cast<VkCommandBuffer>( m_commandBuffer ),
10320                                              reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
10321                                              static_cast<VkSubpassContents>( contents ) );
10322     }
10323 
10324     VULKAN_HPP_INLINE void
nextSubpass(VULKAN_HPP_NAMESPACE::SubpassContents contents) const10325       CommandBuffer::nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT
10326     {
10327       getDispatcher()->vkCmdNextSubpass( static_cast<VkCommandBuffer>( m_commandBuffer ),
10328                                          static_cast<VkSubpassContents>( contents ) );
10329     }
10330 
endRenderPass() const10331     VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const VULKAN_HPP_NOEXCEPT
10332     {
10333       getDispatcher()->vkCmdEndRenderPass( static_cast<VkCommandBuffer>( m_commandBuffer ) );
10334     }
10335 
executeCommands(ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers) const10336     VULKAN_HPP_INLINE void CommandBuffer::executeCommands(
10337       ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers ) const VULKAN_HPP_NOEXCEPT
10338     {
10339       getDispatcher()->vkCmdExecuteCommands( static_cast<VkCommandBuffer>( m_commandBuffer ),
10340                                              commandBuffers.size(),
10341                                              reinterpret_cast<const VkCommandBuffer *>( commandBuffers.data() ) );
10342     }
10343 
10344     //=== VK_VERSION_1_1 ===
10345 
enumerateInstanceVersion() const10346     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t Context::enumerateInstanceVersion() const
10347     {
10348       uint32_t                     apiVersion;
10349       VULKAN_HPP_NAMESPACE::Result result =
10350         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceVersion( &apiVersion ) );
10351       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10352       {
10353         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceVersion" );
10354       }
10355       return apiVersion;
10356     }
10357 
10358     VULKAN_HPP_INLINE void
bindBufferMemory2(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos) const10359       Device::bindBufferMemory2( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const
10360     {
10361       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10362         getDispatcher()->vkBindBufferMemory2( static_cast<VkDevice>( m_device ),
10363                                               bindInfos.size(),
10364                                               reinterpret_cast<const VkBindBufferMemoryInfo *>( bindInfos.data() ) ) );
10365       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10366       {
10367         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2" );
10368       }
10369     }
10370 
10371     VULKAN_HPP_INLINE void
bindImageMemory2(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos) const10372       Device::bindImageMemory2( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const
10373     {
10374       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10375         getDispatcher()->vkBindImageMemory2( static_cast<VkDevice>( m_device ),
10376                                              bindInfos.size(),
10377                                              reinterpret_cast<const VkBindImageMemoryInfo *>( bindInfos.data() ) ) );
10378       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10379       {
10380         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2" );
10381       }
10382     }
10383 
10384     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags
getGroupPeerMemoryFeatures(uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex) const10385                                            Device::getGroupPeerMemoryFeatures( uint32_t heapIndex,
10386                                           uint32_t localDeviceIndex,
10387                                           uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT
10388     {
10389       VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures;
10390       getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures(
10391         static_cast<VkDevice>( m_device ),
10392         heapIndex,
10393         localDeviceIndex,
10394         remoteDeviceIndex,
10395         reinterpret_cast<VkPeerMemoryFeatureFlags *>( &peerMemoryFeatures ) );
10396       return peerMemoryFeatures;
10397     }
10398 
setDeviceMask(uint32_t deviceMask) const10399     VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT
10400     {
10401       getDispatcher()->vkCmdSetDeviceMask( static_cast<VkCommandBuffer>( m_commandBuffer ), deviceMask );
10402     }
10403 
dispatchBase(uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const10404     VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX,
10405                                                         uint32_t baseGroupY,
10406                                                         uint32_t baseGroupZ,
10407                                                         uint32_t groupCountX,
10408                                                         uint32_t groupCountY,
10409                                                         uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
10410     {
10411       getDispatcher()->vkCmdDispatchBase( static_cast<VkCommandBuffer>( m_commandBuffer ),
10412                                           baseGroupX,
10413                                           baseGroupY,
10414                                           baseGroupZ,
10415                                           groupCountX,
10416                                           groupCountY,
10417                                           groupCountZ );
10418     }
10419 
10420     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
enumeratePhysicalDeviceGroups() const10421                                            Instance::enumeratePhysicalDeviceGroups() const
10422     {
10423       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> physicalDeviceGroupProperties;
10424       uint32_t                                                         physicalDeviceGroupCount;
10425       VULKAN_HPP_NAMESPACE::Result                                     result;
10426       do
10427       {
10428         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroups(
10429           static_cast<VkInstance>( m_instance ), &physicalDeviceGroupCount, nullptr ) );
10430         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceGroupCount )
10431         {
10432           physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
10433           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroups(
10434             static_cast<VkInstance>( m_instance ),
10435             &physicalDeviceGroupCount,
10436             reinterpret_cast<VkPhysicalDeviceGroupProperties *>( physicalDeviceGroupProperties.data() ) ) );
10437           VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
10438         }
10439       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
10440       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
10441            ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) )
10442       {
10443         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
10444       }
10445       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10446       {
10447         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" );
10448       }
10449       return physicalDeviceGroupProperties;
10450     }
10451 
10452     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirements2(const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info) const10453       Device::getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const
10454       VULKAN_HPP_NOEXCEPT
10455     {
10456       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
10457       getDispatcher()->vkGetImageMemoryRequirements2(
10458         static_cast<VkDevice>( m_device ),
10459         reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
10460         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
10461       return memoryRequirements;
10462     }
10463 
10464     template <typename X, typename Y, typename... Z>
getImageMemoryRequirements2(const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info) const10465     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getImageMemoryRequirements2(
10466       const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
10467     {
10468       StructureChain<X, Y, Z...>                  structureChain;
10469       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
10470         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
10471       getDispatcher()->vkGetImageMemoryRequirements2(
10472         static_cast<VkDevice>( m_device ),
10473         reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
10474         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
10475       return structureChain;
10476     }
10477 
10478     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirements2(const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info) const10479       Device::getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const
10480       VULKAN_HPP_NOEXCEPT
10481     {
10482       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
10483       getDispatcher()->vkGetBufferMemoryRequirements2(
10484         static_cast<VkDevice>( m_device ),
10485         reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
10486         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
10487       return memoryRequirements;
10488     }
10489 
10490     template <typename X, typename Y, typename... Z>
getBufferMemoryRequirements2(const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info) const10491     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getBufferMemoryRequirements2(
10492       const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
10493     {
10494       StructureChain<X, Y, Z...>                  structureChain;
10495       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
10496         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
10497       getDispatcher()->vkGetBufferMemoryRequirements2(
10498         static_cast<VkDevice>( m_device ),
10499         reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
10500         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
10501       return structureChain;
10502     }
10503 
10504     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirements2(const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info) const10505                                            Device::getImageSparseMemoryRequirements2(
10506         const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
10507     {
10508       uint32_t sparseMemoryRequirementCount;
10509       getDispatcher()->vkGetImageSparseMemoryRequirements2(
10510         static_cast<VkDevice>( m_device ),
10511         reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
10512         &sparseMemoryRequirementCount,
10513         nullptr );
10514       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements(
10515         sparseMemoryRequirementCount );
10516       getDispatcher()->vkGetImageSparseMemoryRequirements2(
10517         static_cast<VkDevice>( m_device ),
10518         reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
10519         &sparseMemoryRequirementCount,
10520         reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
10521       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
10522       return sparseMemoryRequirements;
10523     }
10524 
10525     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2
getFeatures2() const10526                                            PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT
10527     {
10528       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features;
10529       getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10530                                                      reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
10531       return features;
10532     }
10533 
10534     template <typename X, typename Y, typename... Z>
10535     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getFeatures2() const10536                                            PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT
10537     {
10538       StructureChain<X, Y, Z...>                      structureChain;
10539       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features =
10540         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>();
10541       getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10542                                                      reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
10543       return structureChain;
10544     }
10545 
10546     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2
getProperties2() const10547                                            PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT
10548     {
10549       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties;
10550       getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10551                                                        reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
10552       return properties;
10553     }
10554 
10555     template <typename X, typename Y, typename... Z>
10556     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getProperties2() const10557                                            PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT
10558     {
10559       StructureChain<X, Y, Z...>                        structureChain;
10560       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties =
10561         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>();
10562       getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10563                                                        reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
10564       return structureChain;
10565     }
10566 
10567     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2
getFormatProperties2(VULKAN_HPP_NAMESPACE::Format format) const10568       PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
10569     {
10570       VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties;
10571       getDispatcher()->vkGetPhysicalDeviceFormatProperties2(
10572         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10573         static_cast<VkFormat>( format ),
10574         reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
10575       return formatProperties;
10576     }
10577 
10578     template <typename X, typename Y, typename... Z>
10579     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getFormatProperties2(VULKAN_HPP_NAMESPACE::Format format) const10580       PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
10581     {
10582       StructureChain<X, Y, Z...>                structureChain;
10583       VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties =
10584         structureChain.template get<VULKAN_HPP_NAMESPACE::FormatProperties2>();
10585       getDispatcher()->vkGetPhysicalDeviceFormatProperties2(
10586         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10587         static_cast<VkFormat>( format ),
10588         reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
10589       return structureChain;
10590     }
10591 
10592     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties2
getImageFormatProperties2(const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const10593                                            PhysicalDevice::getImageFormatProperties2(
10594         const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
10595     {
10596       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties;
10597       VULKAN_HPP_NAMESPACE::Result                 result =
10598         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2(
10599           static_cast<VkPhysicalDevice>( m_physicalDevice ),
10600           reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
10601           reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
10602       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10603       {
10604         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" );
10605       }
10606       return imageFormatProperties;
10607     }
10608 
10609     template <typename X, typename Y, typename... Z>
getImageFormatProperties2(const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const10610     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> PhysicalDevice::getImageFormatProperties2(
10611       const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
10612     {
10613       StructureChain<X, Y, Z...>                     structureChain;
10614       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties =
10615         structureChain.template get<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>();
10616       VULKAN_HPP_NAMESPACE::Result result =
10617         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2(
10618           static_cast<VkPhysicalDevice>( m_physicalDevice ),
10619           reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
10620           reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
10621       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10622       {
10623         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" );
10624       }
10625       return structureChain;
10626     }
10627 
10628     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
getQueueFamilyProperties2() const10629                                            PhysicalDevice::getQueueFamilyProperties2() const VULKAN_HPP_NOEXCEPT
10630     {
10631       uint32_t queueFamilyPropertyCount;
10632       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2(
10633         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
10634       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties( queueFamilyPropertyCount );
10635       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2(
10636         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10637         &queueFamilyPropertyCount,
10638         reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
10639       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
10640       return queueFamilyProperties;
10641     }
10642 
10643     template <typename StructureChain>
getQueueFamilyProperties2() const10644     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain> PhysicalDevice::getQueueFamilyProperties2() const
10645     {
10646       uint32_t queueFamilyPropertyCount;
10647       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2(
10648         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
10649       std::vector<StructureChain>                               returnVector( queueFamilyPropertyCount );
10650       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties( queueFamilyPropertyCount );
10651       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
10652       {
10653         queueFamilyProperties[i].pNext =
10654           returnVector[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>().pNext;
10655       }
10656       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2(
10657         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10658         &queueFamilyPropertyCount,
10659         reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
10660       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
10661       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
10662       {
10663         returnVector[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>() = queueFamilyProperties[i];
10664       }
10665       return returnVector;
10666     }
10667 
10668     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
getMemoryProperties2() const10669                                            PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT
10670     {
10671       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties;
10672       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2(
10673         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10674         reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
10675       return memoryProperties;
10676     }
10677 
10678     template <typename X, typename Y, typename... Z>
10679     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getMemoryProperties2() const10680                                            PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT
10681     {
10682       StructureChain<X, Y, Z...>                              structureChain;
10683       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties =
10684         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>();
10685       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2(
10686         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10687         reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
10688       return structureChain;
10689     }
10690 
10691     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
getSparseImageFormatProperties2(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo) const10692                                            PhysicalDevice::getSparseImageFormatProperties2(
10693         const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT
10694     {
10695       uint32_t propertyCount;
10696       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2(
10697         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10698         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
10699         &propertyCount,
10700         nullptr );
10701       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2> properties( propertyCount );
10702       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2(
10703         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10704         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
10705         &propertyCount,
10706         reinterpret_cast<VkSparseImageFormatProperties2 *>( properties.data() ) );
10707       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
10708       return properties;
10709     }
10710 
10711     VULKAN_HPP_INLINE void
trim(VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags) const10712       CommandPool::trim( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT
10713     {
10714       getDispatcher()->vkTrimCommandPool( static_cast<VkDevice>( m_device ),
10715                                           static_cast<VkCommandPool>( m_commandPool ),
10716                                           static_cast<VkCommandPoolTrimFlags>( flags ) );
10717     }
10718 
10719     VULKAN_HPP_INLINE void
updateWithTemplate(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData) const10720       DescriptorSet::updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
10721                                          const void * pData ) const VULKAN_HPP_NOEXCEPT
10722     {
10723       getDispatcher()->vkUpdateDescriptorSetWithTemplate(
10724         static_cast<VkDevice>( m_device ),
10725         static_cast<VkDescriptorSet>( m_descriptorSet ),
10726         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
10727         pData );
10728     }
10729 
10730     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties
getExternalBufferProperties(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo) const10731                                            PhysicalDevice::getExternalBufferProperties(
10732         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT
10733     {
10734       VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties;
10735       getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties(
10736         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10737         reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( &externalBufferInfo ),
10738         reinterpret_cast<VkExternalBufferProperties *>( &externalBufferProperties ) );
10739       return externalBufferProperties;
10740     }
10741 
10742     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties
getExternalFenceProperties(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo) const10743                                            PhysicalDevice::getExternalFenceProperties(
10744         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT
10745     {
10746       VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties;
10747       getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties(
10748         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10749         reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( &externalFenceInfo ),
10750         reinterpret_cast<VkExternalFenceProperties *>( &externalFenceProperties ) );
10751       return externalFenceProperties;
10752     }
10753 
10754     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties
getExternalSemaphoreProperties(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo) const10755       PhysicalDevice::getExternalSemaphoreProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo &
10756                                                         externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT
10757     {
10758       VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties;
10759       getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties(
10760         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10761         reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( &externalSemaphoreInfo ),
10762         reinterpret_cast<VkExternalSemaphoreProperties *>( &externalSemaphoreProperties ) );
10763       return externalSemaphoreProperties;
10764     }
10765 
10766     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
getDescriptorSetLayoutSupport(const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo) const10767                                            Device::getDescriptorSetLayoutSupport(
10768         const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
10769     {
10770       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support;
10771       getDispatcher()->vkGetDescriptorSetLayoutSupport(
10772         static_cast<VkDevice>( m_device ),
10773         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
10774         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
10775       return support;
10776     }
10777 
10778     template <typename X, typename Y, typename... Z>
getDescriptorSetLayoutSupport(const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo) const10779     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getDescriptorSetLayoutSupport(
10780       const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
10781     {
10782       StructureChain<X, Y, Z...>                         structureChain;
10783       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support =
10784         structureChain.template get<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>();
10785       getDispatcher()->vkGetDescriptorSetLayoutSupport(
10786         static_cast<VkDevice>( m_device ),
10787         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
10788         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
10789       return structureChain;
10790     }
10791 
10792     //=== VK_VERSION_1_2 ===
10793 
drawIndirectCount(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const10794     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
10795                                                              VULKAN_HPP_NAMESPACE::DeviceSize offset,
10796                                                              VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
10797                                                              VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
10798                                                              uint32_t                         maxDrawCount,
10799                                                              uint32_t stride ) const VULKAN_HPP_NOEXCEPT
10800     {
10801       getDispatcher()->vkCmdDrawIndirectCount( static_cast<VkCommandBuffer>( m_commandBuffer ),
10802                                                static_cast<VkBuffer>( buffer ),
10803                                                static_cast<VkDeviceSize>( offset ),
10804                                                static_cast<VkBuffer>( countBuffer ),
10805                                                static_cast<VkDeviceSize>( countBufferOffset ),
10806                                                maxDrawCount,
10807                                                stride );
10808     }
10809 
drawIndexedIndirectCount(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const10810     VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
10811                                                                     VULKAN_HPP_NAMESPACE::DeviceSize offset,
10812                                                                     VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
10813                                                                     VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
10814                                                                     uint32_t                         maxDrawCount,
10815                                                                     uint32_t stride ) const VULKAN_HPP_NOEXCEPT
10816     {
10817       getDispatcher()->vkCmdDrawIndexedIndirectCount( static_cast<VkCommandBuffer>( m_commandBuffer ),
10818                                                       static_cast<VkBuffer>( buffer ),
10819                                                       static_cast<VkDeviceSize>( offset ),
10820                                                       static_cast<VkBuffer>( countBuffer ),
10821                                                       static_cast<VkDeviceSize>( countBufferOffset ),
10822                                                       maxDrawCount,
10823                                                       stride );
10824     }
10825 
beginRenderPass2(const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo) const10826     VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2(
10827       const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
10828       const VULKAN_HPP_NAMESPACE::SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT
10829     {
10830       getDispatcher()->vkCmdBeginRenderPass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
10831                                               reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
10832                                               reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ) );
10833     }
10834 
nextSubpass2(const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo) const10835     VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2(
10836       const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,
10837       const VULKAN_HPP_NAMESPACE::SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
10838     {
10839       getDispatcher()->vkCmdNextSubpass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
10840                                           reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ),
10841                                           reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
10842     }
10843 
endRenderPass2(const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo) const10844     VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2(
10845       const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
10846     {
10847       getDispatcher()->vkCmdEndRenderPass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
10848                                             reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
10849     }
10850 
reset(uint32_t firstQuery,uint32_t queryCount) const10851     VULKAN_HPP_INLINE void QueryPool::reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
10852     {
10853       getDispatcher()->vkResetQueryPool(
10854         static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), firstQuery, queryCount );
10855     }
10856 
getCounterValue() const10857     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Semaphore::getCounterValue() const
10858     {
10859       uint64_t                     value;
10860       VULKAN_HPP_NAMESPACE::Result result =
10861         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreCounterValue(
10862           static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), &value ) );
10863       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10864       {
10865         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Semaphore::getCounterValue" );
10866       }
10867       return value;
10868     }
10869 
10870     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
waitSemaphores(const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo,uint64_t timeout) const10871       Device::waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const
10872     {
10873       VULKAN_HPP_NAMESPACE::Result result =
10874         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkWaitSemaphores(
10875           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreWaitInfo *>( &waitInfo ), timeout ) );
10876       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
10877            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) )
10878       {
10879         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphores" );
10880       }
10881       return result;
10882     }
10883 
signalSemaphore(const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo) const10884     VULKAN_HPP_INLINE void Device::signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const
10885     {
10886       VULKAN_HPP_NAMESPACE::Result result =
10887         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSignalSemaphore(
10888           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreSignalInfo *>( &signalInfo ) ) );
10889       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10890       {
10891         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphore" );
10892       }
10893     }
10894 
10895     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getBufferAddress(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const10896       Device::getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
10897     {
10898       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( getDispatcher()->vkGetBufferDeviceAddress(
10899         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) ) );
10900     }
10901 
getBufferOpaqueCaptureAddress(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const10902     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress(
10903       const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
10904     {
10905       return getDispatcher()->vkGetBufferOpaqueCaptureAddress(
10906         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
10907     }
10908 
getMemoryOpaqueCaptureAddress(const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info) const10909     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddress(
10910       const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
10911     {
10912       return getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress(
10913         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( &info ) );
10914     }
10915 
10916     //=== VK_KHR_surface ===
10917 
10918     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getSurfaceSupportKHR(uint32_t queueFamilyIndex,VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const10919       PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
10920     {
10921       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR &&
10922                          "Function <vkGetPhysicalDeviceSurfaceSupportKHR> needs extension <VK_KHR_surface> enabled!" );
10923 
10924       VULKAN_HPP_NAMESPACE::Bool32 supported;
10925       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10926         getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10927                                                                queueFamilyIndex,
10928                                                                static_cast<VkSurfaceKHR>( surface ),
10929                                                                reinterpret_cast<VkBool32 *>( &supported ) ) );
10930       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10931       {
10932         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" );
10933       }
10934       return supported;
10935     }
10936 
10937     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR
getSurfaceCapabilitiesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const10938       PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
10939     {
10940       VULKAN_HPP_ASSERT(
10941         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR &&
10942         "Function <vkGetPhysicalDeviceSurfaceCapabilitiesKHR> needs extension <VK_KHR_surface> enabled!" );
10943 
10944       VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities;
10945       VULKAN_HPP_NAMESPACE::Result                 result =
10946         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
10947           static_cast<VkPhysicalDevice>( m_physicalDevice ),
10948           static_cast<VkSurfaceKHR>( surface ),
10949           reinterpret_cast<VkSurfaceCapabilitiesKHR *>( &surfaceCapabilities ) ) );
10950       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10951       {
10952         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" );
10953       }
10954       return surfaceCapabilities;
10955     }
10956 
10957     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>
getSurfaceFormatsKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const10958       PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
10959     {
10960       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR &&
10961                          "Function <vkGetPhysicalDeviceSurfaceFormatsKHR> needs extension <VK_KHR_surface> enabled!" );
10962 
10963       std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR> surfaceFormats;
10964       uint32_t                                            surfaceFormatCount;
10965       VULKAN_HPP_NAMESPACE::Result                        result;
10966       do
10967       {
10968         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10969           getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10970                                                                  static_cast<VkSurfaceKHR>( surface ),
10971                                                                  &surfaceFormatCount,
10972                                                                  nullptr ) );
10973         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount )
10974         {
10975           surfaceFormats.resize( surfaceFormatCount );
10976           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR(
10977             static_cast<VkPhysicalDevice>( m_physicalDevice ),
10978             static_cast<VkSurfaceKHR>( surface ),
10979             &surfaceFormatCount,
10980             reinterpret_cast<VkSurfaceFormatKHR *>( surfaceFormats.data() ) ) );
10981           VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
10982         }
10983       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
10984       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( surfaceFormatCount < surfaceFormats.size() ) )
10985       {
10986         surfaceFormats.resize( surfaceFormatCount );
10987       }
10988       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10989       {
10990         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" );
10991       }
10992       return surfaceFormats;
10993     }
10994 
10995     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
getSurfacePresentModesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const10996       PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
10997     {
10998       VULKAN_HPP_ASSERT(
10999         getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR &&
11000         "Function <vkGetPhysicalDeviceSurfacePresentModesKHR> needs extension <VK_KHR_surface> enabled!" );
11001 
11002       std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR> presentModes;
11003       uint32_t                                          presentModeCount;
11004       VULKAN_HPP_NAMESPACE::Result                      result;
11005       do
11006       {
11007         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11008           getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11009                                                                       static_cast<VkSurfaceKHR>( surface ),
11010                                                                       &presentModeCount,
11011                                                                       nullptr ) );
11012         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentModeCount )
11013         {
11014           presentModes.resize( presentModeCount );
11015           result =
11016             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR(
11017               static_cast<VkPhysicalDevice>( m_physicalDevice ),
11018               static_cast<VkSurfaceKHR>( surface ),
11019               &presentModeCount,
11020               reinterpret_cast<VkPresentModeKHR *>( presentModes.data() ) ) );
11021           VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
11022         }
11023       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11024       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( presentModeCount < presentModes.size() ) )
11025       {
11026         presentModes.resize( presentModeCount );
11027       }
11028       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11029       {
11030         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" );
11031       }
11032       return presentModes;
11033     }
11034 
11035     //=== VK_KHR_swapchain ===
11036 
getImages() const11037     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VkImage> SwapchainKHR::getImages() const
11038     {
11039       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainImagesKHR &&
11040                          "Function <vkGetSwapchainImagesKHR> needs extension <VK_KHR_swapchain> enabled!" );
11041 
11042       std::vector<VkImage>         swapchainImages;
11043       uint32_t                     swapchainImageCount;
11044       VULKAN_HPP_NAMESPACE::Result result;
11045       do
11046       {
11047         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11048           getDispatcher()->vkGetSwapchainImagesKHR( static_cast<VkDevice>( m_device ),
11049                                                     static_cast<VkSwapchainKHR>( m_swapchainKHR ),
11050                                                     &swapchainImageCount,
11051                                                     nullptr ) );
11052         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && swapchainImageCount )
11053         {
11054           swapchainImages.resize( swapchainImageCount );
11055           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11056             getDispatcher()->vkGetSwapchainImagesKHR( static_cast<VkDevice>( m_device ),
11057                                                       static_cast<VkSwapchainKHR>( m_swapchainKHR ),
11058                                                       &swapchainImageCount,
11059                                                       swapchainImages.data() ) );
11060           VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() );
11061         }
11062       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11063       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( swapchainImageCount < swapchainImages.size() ) )
11064       {
11065         swapchainImages.resize( swapchainImageCount );
11066       }
11067       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11068       {
11069         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getImages" );
11070       }
11071       return swapchainImages;
11072     }
11073 
11074     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
acquireNextImage(uint64_t timeout,VULKAN_HPP_NAMESPACE::Semaphore semaphore,VULKAN_HPP_NAMESPACE::Fence fence) const11075                                            SwapchainKHR::acquireNextImage( uint64_t                        timeout,
11076                                       VULKAN_HPP_NAMESPACE::Semaphore semaphore,
11077                                       VULKAN_HPP_NAMESPACE::Fence     fence ) const
11078     {
11079       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImageKHR &&
11080                          "Function <vkAcquireNextImageKHR> needs extension <VK_KHR_swapchain> enabled!" );
11081 
11082       uint32_t                     imageIndex;
11083       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11084         getDispatcher()->vkAcquireNextImageKHR( static_cast<VkDevice>( m_device ),
11085                                                 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
11086                                                 timeout,
11087                                                 static_cast<VkSemaphore>( semaphore ),
11088                                                 static_cast<VkFence>( fence ),
11089                                                 &imageIndex ) );
11090       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11091            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) &&
11092            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) &&
11093            ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) )
11094       {
11095         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::acquireNextImage" );
11096       }
11097       return std::make_pair( result, imageIndex );
11098     }
11099 
11100     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
presentKHR(const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo) const11101       Queue::presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo ) const
11102     {
11103       VULKAN_HPP_ASSERT( getDispatcher()->vkQueuePresentKHR &&
11104                          "Function <vkQueuePresentKHR> needs extension <VK_KHR_swapchain> enabled!" );
11105 
11106       VULKAN_HPP_NAMESPACE::Result result =
11107         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueuePresentKHR(
11108           static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkPresentInfoKHR *>( &presentInfo ) ) );
11109       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11110            ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) )
11111       {
11112         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::presentKHR" );
11113       }
11114       return result;
11115     }
11116 
11117     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR
getGroupPresentCapabilitiesKHR() const11118                                            Device::getGroupPresentCapabilitiesKHR() const
11119     {
11120       VULKAN_HPP_ASSERT(
11121         getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR &&
11122         "Function <vkGetDeviceGroupPresentCapabilitiesKHR> needs extension <VK_KHR_swapchain> enabled!" );
11123 
11124       VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities;
11125       VULKAN_HPP_NAMESPACE::Result                            result =
11126         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR(
11127           static_cast<VkDevice>( m_device ),
11128           reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR *>( &deviceGroupPresentCapabilities ) ) );
11129       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11130       {
11131         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" );
11132       }
11133       return deviceGroupPresentCapabilities;
11134     }
11135 
11136     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
getGroupSurfacePresentModesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const11137       Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
11138     {
11139       VULKAN_HPP_ASSERT(
11140         getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR &&
11141         "Function <vkGetDeviceGroupSurfacePresentModesKHR> needs extension <VK_KHR_swapchain> enabled!" );
11142 
11143       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes;
11144       VULKAN_HPP_NAMESPACE::Result                         result =
11145         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR(
11146           static_cast<VkDevice>( m_device ),
11147           static_cast<VkSurfaceKHR>( surface ),
11148           reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR *>( &modes ) ) );
11149       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11150       {
11151         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" );
11152       }
11153       return modes;
11154     }
11155 
11156     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::Rect2D>
getPresentRectanglesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const11157       PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
11158     {
11159       VULKAN_HPP_ASSERT(
11160         getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR &&
11161         "Function <vkGetPhysicalDevicePresentRectanglesKHR> needs extension <VK_KHR_swapchain> enabled!" );
11162 
11163       std::vector<VULKAN_HPP_NAMESPACE::Rect2D> rects;
11164       uint32_t                                  rectCount;
11165       VULKAN_HPP_NAMESPACE::Result              result;
11166       do
11167       {
11168         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11169           getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11170                                                                     static_cast<VkSurfaceKHR>( surface ),
11171                                                                     &rectCount,
11172                                                                     nullptr ) );
11173         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && rectCount )
11174         {
11175           rects.resize( rectCount );
11176           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11177             getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11178                                                                       static_cast<VkSurfaceKHR>( surface ),
11179                                                                       &rectCount,
11180                                                                       reinterpret_cast<VkRect2D *>( rects.data() ) ) );
11181           VULKAN_HPP_ASSERT( rectCount <= rects.size() );
11182         }
11183       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11184       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( rectCount < rects.size() ) )
11185       {
11186         rects.resize( rectCount );
11187       }
11188       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11189       {
11190         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" );
11191       }
11192       return rects;
11193     }
11194 
11195     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
acquireNextImage2KHR(const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo) const11196       Device::acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo ) const
11197     {
11198       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImage2KHR &&
11199                          "Function <vkAcquireNextImage2KHR> needs extension <VK_KHR_swapchain> enabled!" );
11200 
11201       uint32_t                     imageIndex;
11202       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11203         getDispatcher()->vkAcquireNextImage2KHR( static_cast<VkDevice>( m_device ),
11204                                                  reinterpret_cast<const VkAcquireNextImageInfoKHR *>( &acquireInfo ),
11205                                                  &imageIndex ) );
11206       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11207            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) &&
11208            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) &&
11209            ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) )
11210       {
11211         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImage2KHR" );
11212       }
11213       return std::make_pair( result, imageIndex );
11214     }
11215 
11216     //=== VK_KHR_display ===
11217 
11218     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR>
getDisplayPropertiesKHR() const11219                                            PhysicalDevice::getDisplayPropertiesKHR() const
11220     {
11221       VULKAN_HPP_ASSERT(
11222         getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR &&
11223         "Function <vkGetPhysicalDeviceDisplayPropertiesKHR> needs extension <VK_KHR_display> enabled!" );
11224 
11225       std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR> properties;
11226       uint32_t                                                propertyCount;
11227       VULKAN_HPP_NAMESPACE::Result                            result;
11228       do
11229       {
11230         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR(
11231           static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
11232         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
11233         {
11234           properties.resize( propertyCount );
11235           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR(
11236             static_cast<VkPhysicalDevice>( m_physicalDevice ),
11237             &propertyCount,
11238             reinterpret_cast<VkDisplayPropertiesKHR *>( properties.data() ) ) );
11239           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
11240         }
11241       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11242       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
11243       {
11244         properties.resize( propertyCount );
11245       }
11246       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11247       {
11248         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" );
11249       }
11250       return properties;
11251     }
11252 
11253     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR>
getDisplayPlanePropertiesKHR() const11254                                            PhysicalDevice::getDisplayPlanePropertiesKHR() const
11255     {
11256       VULKAN_HPP_ASSERT(
11257         getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR &&
11258         "Function <vkGetPhysicalDeviceDisplayPlanePropertiesKHR> needs extension <VK_KHR_display> enabled!" );
11259 
11260       std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR> properties;
11261       uint32_t                                                     propertyCount;
11262       VULKAN_HPP_NAMESPACE::Result                                 result;
11263       do
11264       {
11265         result =
11266           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
11267             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
11268         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
11269         {
11270           properties.resize( propertyCount );
11271           result =
11272             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
11273               static_cast<VkPhysicalDevice>( m_physicalDevice ),
11274               &propertyCount,
11275               reinterpret_cast<VkDisplayPlanePropertiesKHR *>( properties.data() ) ) );
11276           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
11277         }
11278       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11279       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
11280       {
11281         properties.resize( propertyCount );
11282       }
11283       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11284       {
11285         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" );
11286       }
11287       return properties;
11288     }
11289 
11290     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR>
getModeProperties() const11291                                            DisplayKHR::getModeProperties() const
11292     {
11293       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModePropertiesKHR &&
11294                          "Function <vkGetDisplayModePropertiesKHR> needs extension <VK_KHR_display> enabled!" );
11295 
11296       std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR> properties;
11297       uint32_t                                                    propertyCount;
11298       VULKAN_HPP_NAMESPACE::Result                                result;
11299       do
11300       {
11301         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11302           getDispatcher()->vkGetDisplayModePropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11303                                                           static_cast<VkDisplayKHR>( m_displayKHR ),
11304                                                           &propertyCount,
11305                                                           nullptr ) );
11306         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
11307         {
11308           properties.resize( propertyCount );
11309           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayModePropertiesKHR(
11310             static_cast<VkPhysicalDevice>( m_physicalDevice ),
11311             static_cast<VkDisplayKHR>( m_displayKHR ),
11312             &propertyCount,
11313             reinterpret_cast<VkDisplayModePropertiesKHR *>( properties.data() ) ) );
11314           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
11315         }
11316       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11317       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
11318       {
11319         properties.resize( propertyCount );
11320       }
11321       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11322       {
11323         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::getModeProperties" );
11324       }
11325       return properties;
11326     }
11327 
11328     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR
getDisplayPlaneCapabilities(uint32_t planeIndex) const11329                                            DisplayModeKHR::getDisplayPlaneCapabilities( uint32_t planeIndex ) const
11330     {
11331       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR &&
11332                          "Function <vkGetDisplayPlaneCapabilitiesKHR> needs extension <VK_KHR_display> enabled!" );
11333 
11334       VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities;
11335       VULKAN_HPP_NAMESPACE::Result                      result =
11336         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR(
11337           static_cast<VkPhysicalDevice>( m_physicalDevice ),
11338           static_cast<VkDisplayModeKHR>( m_displayModeKHR ),
11339           planeIndex,
11340           reinterpret_cast<VkDisplayPlaneCapabilitiesKHR *>( &capabilities ) ) );
11341       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11342       {
11343         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayModeKHR::getDisplayPlaneCapabilities" );
11344       }
11345       return capabilities;
11346     }
11347 
11348 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
11349     //=== VK_KHR_xlib_surface ===
11350 
getXlibPresentationSupportKHR(uint32_t queueFamilyIndex,Display & dpy,VisualID visualID) const11351     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 PhysicalDevice::getXlibPresentationSupportKHR(
11352       uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT
11353     {
11354       VULKAN_HPP_ASSERT(
11355         getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR &&
11356         "Function <vkGetPhysicalDeviceXlibPresentationSupportKHR> needs extension <VK_KHR_xlib_surface> enabled!" );
11357 
11358       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR(
11359         static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &dpy, visualID ) );
11360     }
11361 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
11362 
11363 #  if defined( VK_USE_PLATFORM_XCB_KHR )
11364     //=== VK_KHR_xcb_surface ===
11365 
getXcbPresentationSupportKHR(uint32_t queueFamilyIndex,xcb_connection_t & connection,xcb_visualid_t visual_id) const11366     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 PhysicalDevice::getXcbPresentationSupportKHR(
11367       uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT
11368     {
11369       VULKAN_HPP_ASSERT(
11370         getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR &&
11371         "Function <vkGetPhysicalDeviceXcbPresentationSupportKHR> needs extension <VK_KHR_xcb_surface> enabled!" );
11372 
11373       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR(
11374         static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &connection, visual_id ) );
11375     }
11376 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
11377 
11378 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
11379     //=== VK_KHR_wayland_surface ===
11380 
11381     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getWaylandPresentationSupportKHR(uint32_t queueFamilyIndex,struct wl_display & display) const11382                                            PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t            queueFamilyIndex,
11383                                                         struct wl_display & display ) const VULKAN_HPP_NOEXCEPT
11384     {
11385       VULKAN_HPP_ASSERT(
11386         getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR &&
11387         "Function <vkGetPhysicalDeviceWaylandPresentationSupportKHR> needs extension <VK_KHR_wayland_surface> enabled!" );
11388 
11389       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>(
11390         getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR(
11391           static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &display ) );
11392     }
11393 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
11394 
11395 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
11396     //=== VK_KHR_win32_surface ===
11397 
11398     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getWin32PresentationSupportKHR(uint32_t queueFamilyIndex) const11399       PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT
11400     {
11401       VULKAN_HPP_ASSERT(
11402         getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR &&
11403         "Function <vkGetPhysicalDeviceWin32PresentationSupportKHR> needs extension <VK_KHR_win32_surface> enabled!" );
11404 
11405       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR(
11406         static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex ) );
11407     }
11408 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
11409 
11410     //=== VK_EXT_debug_report ===
11411 
debugReportMessageEXT(VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags,VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_,uint64_t object,size_t location,int32_t messageCode,const std::string & layerPrefix,const std::string & message) const11412     VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT      flags,
11413                                                             VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_,
11414                                                             uint64_t                                       object,
11415                                                             size_t                                         location,
11416                                                             int32_t                                        messageCode,
11417                                                             const std::string &                            layerPrefix,
11418                                                             const std::string & message ) const VULKAN_HPP_NOEXCEPT
11419     {
11420       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugReportMessageEXT &&
11421                          "Function <vkDebugReportMessageEXT> needs extension <VK_EXT_debug_report> enabled!" );
11422 
11423       getDispatcher()->vkDebugReportMessageEXT( static_cast<VkInstance>( m_instance ),
11424                                                 static_cast<VkDebugReportFlagsEXT>( flags ),
11425                                                 static_cast<VkDebugReportObjectTypeEXT>( objectType_ ),
11426                                                 object,
11427                                                 location,
11428                                                 messageCode,
11429                                                 layerPrefix.c_str(),
11430                                                 message.c_str() );
11431     }
11432 
11433     //=== VK_EXT_debug_marker ===
11434 
11435     VULKAN_HPP_INLINE void
debugMarkerSetObjectTagEXT(const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo) const11436       Device::debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo ) const
11437     {
11438       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectTagEXT &&
11439                          "Function <vkDebugMarkerSetObjectTagEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11440 
11441       VULKAN_HPP_NAMESPACE::Result result =
11442         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDebugMarkerSetObjectTagEXT(
11443           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT *>( &tagInfo ) ) );
11444       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11445       {
11446         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" );
11447       }
11448     }
11449 
11450     VULKAN_HPP_INLINE void
debugMarkerSetObjectNameEXT(const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo) const11451       Device::debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo ) const
11452     {
11453       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectNameEXT &&
11454                          "Function <vkDebugMarkerSetObjectNameEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11455 
11456       VULKAN_HPP_NAMESPACE::Result result =
11457         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDebugMarkerSetObjectNameEXT(
11458           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT *>( &nameInfo ) ) );
11459       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11460       {
11461         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" );
11462       }
11463     }
11464 
debugMarkerBeginEXT(const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo) const11465     VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT(
11466       const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT
11467     {
11468       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerBeginEXT &&
11469                          "Function <vkCmdDebugMarkerBeginEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11470 
11471       getDispatcher()->vkCmdDebugMarkerBeginEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11472                                                  reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( &markerInfo ) );
11473     }
11474 
debugMarkerEndEXT() const11475     VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT
11476     {
11477       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerEndEXT &&
11478                          "Function <vkCmdDebugMarkerEndEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11479 
11480       getDispatcher()->vkCmdDebugMarkerEndEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
11481     }
11482 
debugMarkerInsertEXT(const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo) const11483     VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT(
11484       const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT
11485     {
11486       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerInsertEXT &&
11487                          "Function <vkCmdDebugMarkerInsertEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11488 
11489       getDispatcher()->vkCmdDebugMarkerInsertEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11490                                                   reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( &markerInfo ) );
11491     }
11492 
11493 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
11494     //=== VK_KHR_video_queue ===
11495 
11496     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR
getVideoCapabilitiesKHR(const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile) const11497       PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile ) const
11498     {
11499       VULKAN_HPP_ASSERT(
11500         getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR &&
11501         "Function <vkGetPhysicalDeviceVideoCapabilitiesKHR> needs extension <VK_KHR_video_queue> enabled!" );
11502 
11503       VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR capabilities;
11504       VULKAN_HPP_NAMESPACE::Result               result =
11505         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR(
11506           static_cast<VkPhysicalDevice>( m_physicalDevice ),
11507           reinterpret_cast<const VkVideoProfileKHR *>( &videoProfile ),
11508           reinterpret_cast<VkVideoCapabilitiesKHR *>( &capabilities ) ) );
11509       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11510       {
11511         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" );
11512       }
11513       return capabilities;
11514     }
11515 
11516     template <typename X, typename Y, typename... Z>
11517     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
getVideoCapabilitiesKHR(const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile) const11518       PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileKHR & videoProfile ) const
11519     {
11520       StructureChain<X, Y, Z...>                   structureChain;
11521       VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR & capabilities =
11522         structureChain.template get<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR>();
11523       VULKAN_HPP_NAMESPACE::Result result =
11524         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR(
11525           static_cast<VkPhysicalDevice>( m_physicalDevice ),
11526           reinterpret_cast<const VkVideoProfileKHR *>( &videoProfile ),
11527           reinterpret_cast<VkVideoCapabilitiesKHR *>( &capabilities ) ) );
11528       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11529       {
11530         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" );
11531       }
11532       return structureChain;
11533     }
11534 
11535     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR>
getVideoFormatPropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo) const11536                                            PhysicalDevice::getVideoFormatPropertiesKHR(
11537         const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const
11538     {
11539       VULKAN_HPP_ASSERT(
11540         getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR &&
11541         "Function <vkGetPhysicalDeviceVideoFormatPropertiesKHR> needs extension <VK_KHR_video_queue> enabled!" );
11542 
11543       std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR> videoFormatProperties;
11544       uint32_t                                                    videoFormatPropertyCount;
11545       VULKAN_HPP_NAMESPACE::Result                                result;
11546       do
11547       {
11548         result =
11549           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR(
11550             static_cast<VkPhysicalDevice>( m_physicalDevice ),
11551             reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
11552             &videoFormatPropertyCount,
11553             nullptr ) );
11554         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && videoFormatPropertyCount )
11555         {
11556           videoFormatProperties.resize( videoFormatPropertyCount );
11557           result =
11558             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR(
11559               static_cast<VkPhysicalDevice>( m_physicalDevice ),
11560               reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
11561               &videoFormatPropertyCount,
11562               reinterpret_cast<VkVideoFormatPropertiesKHR *>( videoFormatProperties.data() ) ) );
11563           VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() );
11564         }
11565       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11566       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11567            ( videoFormatPropertyCount < videoFormatProperties.size() ) )
11568       {
11569         videoFormatProperties.resize( videoFormatPropertyCount );
11570       }
11571       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11572       {
11573         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" );
11574       }
11575       return videoFormatProperties;
11576     }
11577 
11578     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR>
getMemoryRequirements() const11579                                            VideoSessionKHR::getMemoryRequirements() const
11580     {
11581       VULKAN_HPP_ASSERT(
11582         getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR &&
11583         "Function <vkGetVideoSessionMemoryRequirementsKHR> needs extension <VK_KHR_video_queue> enabled!" );
11584 
11585       std::vector<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR> videoSessionMemoryRequirements;
11586       uint32_t                                                       videoSessionMemoryRequirementsCount;
11587       VULKAN_HPP_NAMESPACE::Result                                   result;
11588       do
11589       {
11590         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11591           getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
11592                                                                    static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
11593                                                                    &videoSessionMemoryRequirementsCount,
11594                                                                    nullptr ) );
11595         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && videoSessionMemoryRequirementsCount )
11596         {
11597           videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount );
11598           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR(
11599             static_cast<VkDevice>( m_device ),
11600             static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
11601             &videoSessionMemoryRequirementsCount,
11602             reinterpret_cast<VkVideoGetMemoryPropertiesKHR *>( videoSessionMemoryRequirements.data() ) ) );
11603           VULKAN_HPP_ASSERT( videoSessionMemoryRequirementsCount <= videoSessionMemoryRequirements.size() );
11604         }
11605       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11606       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11607            ( videoSessionMemoryRequirementsCount < videoSessionMemoryRequirements.size() ) )
11608       {
11609         videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount );
11610       }
11611       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11612       {
11613         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionKHR::getMemoryRequirements" );
11614       }
11615       return videoSessionMemoryRequirements;
11616     }
11617 
bindMemory(ArrayProxy<const VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR> const & videoSessionBindMemories) const11618     VULKAN_HPP_INLINE void VideoSessionKHR::bindMemory(
11619       ArrayProxy<const VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR> const & videoSessionBindMemories ) const
11620     {
11621       VULKAN_HPP_ASSERT( getDispatcher()->vkBindVideoSessionMemoryKHR &&
11622                          "Function <vkBindVideoSessionMemoryKHR> needs extension <VK_KHR_video_queue> enabled!" );
11623 
11624       VULKAN_HPP_NAMESPACE::Result result =
11625         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindVideoSessionMemoryKHR(
11626           static_cast<VkDevice>( m_device ),
11627           static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
11628           videoSessionBindMemories.size(),
11629           reinterpret_cast<const VkVideoBindMemoryKHR *>( videoSessionBindMemories.data() ) ) );
11630       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11631       {
11632         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionKHR::bindMemory" );
11633       }
11634     }
11635 
update(const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo) const11636     VULKAN_HPP_INLINE void VideoSessionParametersKHR::update(
11637       const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo ) const
11638     {
11639       VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateVideoSessionParametersKHR &&
11640                          "Function <vkUpdateVideoSessionParametersKHR> needs extension <VK_KHR_video_queue> enabled!" );
11641 
11642       VULKAN_HPP_NAMESPACE::Result result =
11643         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkUpdateVideoSessionParametersKHR(
11644           static_cast<VkDevice>( m_device ),
11645           static_cast<VkVideoSessionParametersKHR>( m_videoSessionParametersKHR ),
11646           reinterpret_cast<const VkVideoSessionParametersUpdateInfoKHR *>( &updateInfo ) ) );
11647       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11648       {
11649         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionParametersKHR::update" );
11650       }
11651     }
11652 
beginVideoCodingKHR(const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo) const11653     VULKAN_HPP_INLINE void CommandBuffer::beginVideoCodingKHR(
11654       const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo ) const VULKAN_HPP_NOEXCEPT
11655     {
11656       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginVideoCodingKHR &&
11657                          "Function <vkCmdBeginVideoCodingKHR> needs extension <VK_KHR_video_queue> enabled!" );
11658 
11659       getDispatcher()->vkCmdBeginVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
11660                                                  reinterpret_cast<const VkVideoBeginCodingInfoKHR *>( &beginInfo ) );
11661     }
11662 
endVideoCodingKHR(const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo) const11663     VULKAN_HPP_INLINE void CommandBuffer::endVideoCodingKHR(
11664       const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo ) const VULKAN_HPP_NOEXCEPT
11665     {
11666       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndVideoCodingKHR &&
11667                          "Function <vkCmdEndVideoCodingKHR> needs extension <VK_KHR_video_queue> enabled!" );
11668 
11669       getDispatcher()->vkCmdEndVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
11670                                                reinterpret_cast<const VkVideoEndCodingInfoKHR *>( &endCodingInfo ) );
11671     }
11672 
controlVideoCodingKHR(const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo) const11673     VULKAN_HPP_INLINE void CommandBuffer::controlVideoCodingKHR(
11674       const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo ) const VULKAN_HPP_NOEXCEPT
11675     {
11676       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdControlVideoCodingKHR &&
11677                          "Function <vkCmdControlVideoCodingKHR> needs extension <VK_KHR_video_queue> enabled!" );
11678 
11679       getDispatcher()->vkCmdControlVideoCodingKHR(
11680         static_cast<VkCommandBuffer>( m_commandBuffer ),
11681         reinterpret_cast<const VkVideoCodingControlInfoKHR *>( &codingControlInfo ) );
11682     }
11683 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
11684 
11685 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
11686     //=== VK_KHR_video_decode_queue ===
11687 
decodeVideoKHR(const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & frameInfo) const11688     VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR(
11689       const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & frameInfo ) const VULKAN_HPP_NOEXCEPT
11690     {
11691       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecodeVideoKHR &&
11692                          "Function <vkCmdDecodeVideoKHR> needs extension <VK_KHR_video_decode_queue> enabled!" );
11693 
11694       getDispatcher()->vkCmdDecodeVideoKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
11695                                             reinterpret_cast<const VkVideoDecodeInfoKHR *>( &frameInfo ) );
11696     }
11697 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
11698 
11699     //=== VK_EXT_transform_feedback ===
11700 
bindTransformFeedbackBuffersEXT(uint32_t firstBinding,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes) const11701     VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT(
11702       uint32_t                                                   firstBinding,
11703       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
11704       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
11705       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
11706     {
11707       VULKAN_HPP_ASSERT(
11708         getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT &&
11709         "Function <vkCmdBindTransformFeedbackBuffersEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11710 
11711 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
11712       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
11713       VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
11714 #  else
11715       if ( buffers.size() != offsets.size() )
11716       {
11717         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
11718                           "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" );
11719       }
11720       if ( !sizes.empty() && buffers.size() != sizes.size() )
11721       {
11722         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
11723                           "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" );
11724       }
11725 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
11726 
11727       getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11728                                                              firstBinding,
11729                                                              buffers.size(),
11730                                                              reinterpret_cast<const VkBuffer *>( buffers.data() ),
11731                                                              reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
11732                                                              reinterpret_cast<const VkDeviceSize *>( sizes.data() ) );
11733     }
11734 
beginTransformFeedbackEXT(uint32_t firstCounterBuffer,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets) const11735     VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT(
11736       uint32_t                                                   firstCounterBuffer,
11737       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     counterBuffers,
11738       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets ) const
11739       VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
11740     {
11741       VULKAN_HPP_ASSERT(
11742         getDispatcher()->vkCmdBeginTransformFeedbackEXT &&
11743         "Function <vkCmdBeginTransformFeedbackEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11744 
11745 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
11746       VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() );
11747 #  else
11748       if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() )
11749       {
11750         throw LogicError(
11751           VULKAN_HPP_NAMESPACE_STRING
11752           "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
11753       }
11754 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
11755 
11756       getDispatcher()->vkCmdBeginTransformFeedbackEXT(
11757         static_cast<VkCommandBuffer>( m_commandBuffer ),
11758         firstCounterBuffer,
11759         counterBuffers.size(),
11760         reinterpret_cast<const VkBuffer *>( counterBuffers.data() ),
11761         reinterpret_cast<const VkDeviceSize *>( counterBufferOffsets.data() ) );
11762     }
11763 
endTransformFeedbackEXT(uint32_t firstCounterBuffer,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets) const11764     VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT(
11765       uint32_t                                                   firstCounterBuffer,
11766       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     counterBuffers,
11767       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets ) const
11768       VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
11769     {
11770       VULKAN_HPP_ASSERT(
11771         getDispatcher()->vkCmdEndTransformFeedbackEXT &&
11772         "Function <vkCmdEndTransformFeedbackEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11773 
11774 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
11775       VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() );
11776 #  else
11777       if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() )
11778       {
11779         throw LogicError(
11780           VULKAN_HPP_NAMESPACE_STRING
11781           "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
11782       }
11783 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
11784 
11785       getDispatcher()->vkCmdEndTransformFeedbackEXT(
11786         static_cast<VkCommandBuffer>( m_commandBuffer ),
11787         firstCounterBuffer,
11788         counterBuffers.size(),
11789         reinterpret_cast<const VkBuffer *>( counterBuffers.data() ),
11790         reinterpret_cast<const VkDeviceSize *>( counterBufferOffsets.data() ) );
11791     }
11792 
beginQueryIndexedEXT(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,VULKAN_HPP_NAMESPACE::QueryControlFlags flags,uint32_t index) const11793     VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
11794                                                                 uint32_t                                query,
11795                                                                 VULKAN_HPP_NAMESPACE::QueryControlFlags flags,
11796                                                                 uint32_t index ) const VULKAN_HPP_NOEXCEPT
11797     {
11798       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQueryIndexedEXT &&
11799                          "Function <vkCmdBeginQueryIndexedEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11800 
11801       getDispatcher()->vkCmdBeginQueryIndexedEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11802                                                   static_cast<VkQueryPool>( queryPool ),
11803                                                   query,
11804                                                   static_cast<VkQueryControlFlags>( flags ),
11805                                                   index );
11806     }
11807 
endQueryIndexedEXT(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,uint32_t index) const11808     VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
11809                                                               uint32_t                        query,
11810                                                               uint32_t index ) const VULKAN_HPP_NOEXCEPT
11811     {
11812       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQueryIndexedEXT &&
11813                          "Function <vkCmdEndQueryIndexedEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11814 
11815       getDispatcher()->vkCmdEndQueryIndexedEXT(
11816         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query, index );
11817     }
11818 
11819     VULKAN_HPP_INLINE void
drawIndirectByteCountEXT(uint32_t instanceCount,uint32_t firstInstance,VULKAN_HPP_NAMESPACE::Buffer counterBuffer,VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride) const11820       CommandBuffer::drawIndirectByteCountEXT( uint32_t                         instanceCount,
11821                                                uint32_t                         firstInstance,
11822                                                VULKAN_HPP_NAMESPACE::Buffer     counterBuffer,
11823                                                VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,
11824                                                uint32_t                         counterOffset,
11825                                                uint32_t                         vertexStride ) const VULKAN_HPP_NOEXCEPT
11826     {
11827       VULKAN_HPP_ASSERT(
11828         getDispatcher()->vkCmdDrawIndirectByteCountEXT &&
11829         "Function <vkCmdDrawIndirectByteCountEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11830 
11831       getDispatcher()->vkCmdDrawIndirectByteCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11832                                                       instanceCount,
11833                                                       firstInstance,
11834                                                       static_cast<VkBuffer>( counterBuffer ),
11835                                                       static_cast<VkDeviceSize>( counterBufferOffset ),
11836                                                       counterOffset,
11837                                                       vertexStride );
11838     }
11839 
11840     //=== VK_NVX_binary_import ===
11841 
cuLaunchKernelNVX(const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo) const11842     VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX(
11843       const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT
11844     {
11845       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCuLaunchKernelNVX &&
11846                          "Function <vkCmdCuLaunchKernelNVX> needs extension <VK_NVX_binary_import> enabled!" );
11847 
11848       getDispatcher()->vkCmdCuLaunchKernelNVX( static_cast<VkCommandBuffer>( m_commandBuffer ),
11849                                                reinterpret_cast<const VkCuLaunchInfoNVX *>( &launchInfo ) );
11850     }
11851 
11852     //=== VK_NVX_image_view_handle ===
11853 
getImageViewHandleNVX(const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info) const11854     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX(
11855       const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT
11856     {
11857       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewHandleNVX &&
11858                          "Function <vkGetImageViewHandleNVX> needs extension <VK_NVX_image_view_handle> enabled!" );
11859 
11860       return getDispatcher()->vkGetImageViewHandleNVX( static_cast<VkDevice>( m_device ),
11861                                                        reinterpret_cast<const VkImageViewHandleInfoNVX *>( &info ) );
11862     }
11863 
11864     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX
getAddressNVX() const11865                                            ImageView::getAddressNVX() const
11866     {
11867       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewAddressNVX &&
11868                          "Function <vkGetImageViewAddressNVX> needs extension <VK_NVX_image_view_handle> enabled!" );
11869 
11870       VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX properties;
11871       VULKAN_HPP_NAMESPACE::Result                        result =
11872         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetImageViewAddressNVX(
11873           static_cast<VkDevice>( m_device ),
11874           static_cast<VkImageView>( m_imageView ),
11875           reinterpret_cast<VkImageViewAddressPropertiesNVX *>( &properties ) ) );
11876       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11877       {
11878         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ImageView::getAddressNVX" );
11879       }
11880       return properties;
11881     }
11882 
11883     //=== VK_AMD_draw_indirect_count ===
11884 
drawIndirectCountAMD(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const11885     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
11886                                                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
11887                                                                 VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
11888                                                                 VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
11889                                                                 uint32_t                         maxDrawCount,
11890                                                                 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
11891     {
11892       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountAMD &&
11893                          "Function <vkCmdDrawIndirectCountAMD> needs extension <VK_AMD_draw_indirect_count> enabled!" );
11894 
11895       getDispatcher()->vkCmdDrawIndirectCountAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
11896                                                   static_cast<VkBuffer>( buffer ),
11897                                                   static_cast<VkDeviceSize>( offset ),
11898                                                   static_cast<VkBuffer>( countBuffer ),
11899                                                   static_cast<VkDeviceSize>( countBufferOffset ),
11900                                                   maxDrawCount,
11901                                                   stride );
11902     }
11903 
11904     VULKAN_HPP_INLINE void
drawIndexedIndirectCountAMD(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const11905       CommandBuffer::drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
11906                                                   VULKAN_HPP_NAMESPACE::DeviceSize offset,
11907                                                   VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
11908                                                   VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
11909                                                   uint32_t                         maxDrawCount,
11910                                                   uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
11911     {
11912       VULKAN_HPP_ASSERT(
11913         getDispatcher()->vkCmdDrawIndexedIndirectCountAMD &&
11914         "Function <vkCmdDrawIndexedIndirectCountAMD> needs extension <VK_AMD_draw_indirect_count> enabled!" );
11915 
11916       getDispatcher()->vkCmdDrawIndexedIndirectCountAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
11917                                                          static_cast<VkBuffer>( buffer ),
11918                                                          static_cast<VkDeviceSize>( offset ),
11919                                                          static_cast<VkBuffer>( countBuffer ),
11920                                                          static_cast<VkDeviceSize>( countBufferOffset ),
11921                                                          maxDrawCount,
11922                                                          stride );
11923     }
11924 
11925     //=== VK_AMD_shader_info ===
11926 
11927     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t>
getShaderInfoAMD(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType) const11928       Pipeline::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,
11929                                   VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD   infoType ) const
11930     {
11931       VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderInfoAMD &&
11932                          "Function <vkGetShaderInfoAMD> needs extension <VK_AMD_shader_info> enabled!" );
11933 
11934       std::vector<uint8_t>         info;
11935       size_t                       infoSize;
11936       VULKAN_HPP_NAMESPACE::Result result;
11937       do
11938       {
11939         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11940           getDispatcher()->vkGetShaderInfoAMD( static_cast<VkDevice>( m_device ),
11941                                                static_cast<VkPipeline>( m_pipeline ),
11942                                                static_cast<VkShaderStageFlagBits>( shaderStage ),
11943                                                static_cast<VkShaderInfoTypeAMD>( infoType ),
11944                                                &infoSize,
11945                                                nullptr ) );
11946         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && infoSize )
11947         {
11948           info.resize( infoSize );
11949           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11950             getDispatcher()->vkGetShaderInfoAMD( static_cast<VkDevice>( m_device ),
11951                                                  static_cast<VkPipeline>( m_pipeline ),
11952                                                  static_cast<VkShaderStageFlagBits>( shaderStage ),
11953                                                  static_cast<VkShaderInfoTypeAMD>( infoType ),
11954                                                  &infoSize,
11955                                                  reinterpret_cast<void *>( info.data() ) ) );
11956           VULKAN_HPP_ASSERT( infoSize <= info.size() );
11957         }
11958       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11959       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( infoSize < info.size() ) )
11960       {
11961         info.resize( infoSize );
11962       }
11963       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11964       {
11965         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getShaderInfoAMD" );
11966       }
11967       return info;
11968     }
11969 
11970     //=== VK_NV_external_memory_capabilities ===
11971 
11972     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV
getExternalImageFormatPropertiesNV(VULKAN_HPP_NAMESPACE::Format format,VULKAN_HPP_NAMESPACE::ImageType type,VULKAN_HPP_NAMESPACE::ImageTiling tiling,VULKAN_HPP_NAMESPACE::ImageUsageFlags usage,VULKAN_HPP_NAMESPACE::ImageCreateFlags flags,VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType) const11973                                            PhysicalDevice::getExternalImageFormatPropertiesNV(
11974         VULKAN_HPP_NAMESPACE::Format                          format,
11975         VULKAN_HPP_NAMESPACE::ImageType                       type,
11976         VULKAN_HPP_NAMESPACE::ImageTiling                     tiling,
11977         VULKAN_HPP_NAMESPACE::ImageUsageFlags                 usage,
11978         VULKAN_HPP_NAMESPACE::ImageCreateFlags                flags,
11979         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
11980     {
11981       VULKAN_HPP_ASSERT(
11982         getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV &&
11983         "Function <vkGetPhysicalDeviceExternalImageFormatPropertiesNV> needs extension <VK_NV_external_memory_capabilities> enabled!" );
11984 
11985       VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV externalImageFormatProperties;
11986       VULKAN_HPP_NAMESPACE::Result                          result =
11987         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
11988           static_cast<VkPhysicalDevice>( m_physicalDevice ),
11989           static_cast<VkFormat>( format ),
11990           static_cast<VkImageType>( type ),
11991           static_cast<VkImageTiling>( tiling ),
11992           static_cast<VkImageUsageFlags>( usage ),
11993           static_cast<VkImageCreateFlags>( flags ),
11994           static_cast<VkExternalMemoryHandleTypeFlagsNV>( externalHandleType ),
11995           reinterpret_cast<VkExternalImageFormatPropertiesNV *>( &externalImageFormatProperties ) ) );
11996       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11997       {
11998         throwResultException( result,
11999                               VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" );
12000       }
12001       return externalImageFormatProperties;
12002     }
12003 
12004 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
12005     //=== VK_NV_external_memory_win32 ===
12006 
12007     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE
getMemoryWin32HandleNV(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType) const12008       DeviceMemory::getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType ) const
12009     {
12010       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleNV &&
12011                          "Function <vkGetMemoryWin32HandleNV> needs extension <VK_NV_external_memory_win32> enabled!" );
12012 
12013       HANDLE                       handle;
12014       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12015         getDispatcher()->vkGetMemoryWin32HandleNV( static_cast<VkDevice>( m_device ),
12016                                                    static_cast<VkDeviceMemory>( m_deviceMemory ),
12017                                                    static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ),
12018                                                    &handle ) );
12019       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12020       {
12021         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeviceMemory::getMemoryWin32HandleNV" );
12022       }
12023       return handle;
12024     }
12025 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
12026 
12027     //=== VK_KHR_get_physical_device_properties2 ===
12028 
12029     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2
getFeatures2KHR() const12030                                            PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT
12031     {
12032       VULKAN_HPP_ASSERT(
12033         getDispatcher()->vkGetPhysicalDeviceFeatures2KHR &&
12034         "Function <vkGetPhysicalDeviceFeatures2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12035 
12036       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features;
12037       getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12038                                                         reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
12039       return features;
12040     }
12041 
12042     template <typename X, typename Y, typename... Z>
12043     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getFeatures2KHR() const12044                                            PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT
12045     {
12046       VULKAN_HPP_ASSERT(
12047         getDispatcher()->vkGetPhysicalDeviceFeatures2KHR &&
12048         "Function <vkGetPhysicalDeviceFeatures2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12049 
12050       StructureChain<X, Y, Z...>                      structureChain;
12051       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features =
12052         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>();
12053       getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12054                                                         reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
12055       return structureChain;
12056     }
12057 
12058     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2
getProperties2KHR() const12059                                            PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT
12060     {
12061       VULKAN_HPP_ASSERT(
12062         getDispatcher()->vkGetPhysicalDeviceProperties2KHR &&
12063         "Function <vkGetPhysicalDeviceProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12064 
12065       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties;
12066       getDispatcher()->vkGetPhysicalDeviceProperties2KHR(
12067         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12068         reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
12069       return properties;
12070     }
12071 
12072     template <typename X, typename Y, typename... Z>
12073     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getProperties2KHR() const12074                                            PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT
12075     {
12076       VULKAN_HPP_ASSERT(
12077         getDispatcher()->vkGetPhysicalDeviceProperties2KHR &&
12078         "Function <vkGetPhysicalDeviceProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12079 
12080       StructureChain<X, Y, Z...>                        structureChain;
12081       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties =
12082         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>();
12083       getDispatcher()->vkGetPhysicalDeviceProperties2KHR(
12084         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12085         reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
12086       return structureChain;
12087     }
12088 
12089     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2
getFormatProperties2KHR(VULKAN_HPP_NAMESPACE::Format format) const12090       PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
12091     {
12092       VULKAN_HPP_ASSERT(
12093         getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR &&
12094         "Function <vkGetPhysicalDeviceFormatProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12095 
12096       VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties;
12097       getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR(
12098         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12099         static_cast<VkFormat>( format ),
12100         reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
12101       return formatProperties;
12102     }
12103 
12104     template <typename X, typename Y, typename... Z>
12105     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getFormatProperties2KHR(VULKAN_HPP_NAMESPACE::Format format) const12106       PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
12107     {
12108       VULKAN_HPP_ASSERT(
12109         getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR &&
12110         "Function <vkGetPhysicalDeviceFormatProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12111 
12112       StructureChain<X, Y, Z...>                structureChain;
12113       VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties =
12114         structureChain.template get<VULKAN_HPP_NAMESPACE::FormatProperties2>();
12115       getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR(
12116         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12117         static_cast<VkFormat>( format ),
12118         reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
12119       return structureChain;
12120     }
12121 
12122     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties2
getImageFormatProperties2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const12123                                            PhysicalDevice::getImageFormatProperties2KHR(
12124         const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
12125     {
12126       VULKAN_HPP_ASSERT(
12127         getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR &&
12128         "Function <vkGetPhysicalDeviceImageFormatProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12129 
12130       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties;
12131       VULKAN_HPP_NAMESPACE::Result                 result =
12132         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR(
12133           static_cast<VkPhysicalDevice>( m_physicalDevice ),
12134           reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
12135           reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
12136       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12137       {
12138         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" );
12139       }
12140       return imageFormatProperties;
12141     }
12142 
12143     template <typename X, typename Y, typename... Z>
getImageFormatProperties2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const12144     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> PhysicalDevice::getImageFormatProperties2KHR(
12145       const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
12146     {
12147       StructureChain<X, Y, Z...>                     structureChain;
12148       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties =
12149         structureChain.template get<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>();
12150       VULKAN_HPP_NAMESPACE::Result result =
12151         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR(
12152           static_cast<VkPhysicalDevice>( m_physicalDevice ),
12153           reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
12154           reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
12155       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12156       {
12157         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" );
12158       }
12159       return structureChain;
12160     }
12161 
12162     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
getQueueFamilyProperties2KHR() const12163                                            PhysicalDevice::getQueueFamilyProperties2KHR() const VULKAN_HPP_NOEXCEPT
12164     {
12165       VULKAN_HPP_ASSERT(
12166         getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR &&
12167         "Function <vkGetPhysicalDeviceQueueFamilyProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12168 
12169       uint32_t queueFamilyPropertyCount;
12170       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12171         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
12172       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties( queueFamilyPropertyCount );
12173       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12174         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12175         &queueFamilyPropertyCount,
12176         reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
12177       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
12178       return queueFamilyProperties;
12179     }
12180 
12181     template <typename StructureChain>
12182     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain>
getQueueFamilyProperties2KHR() const12183                                            PhysicalDevice::getQueueFamilyProperties2KHR() const
12184     {
12185       VULKAN_HPP_ASSERT(
12186         getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR &&
12187         "Function <vkGetPhysicalDeviceQueueFamilyProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12188 
12189       uint32_t queueFamilyPropertyCount;
12190       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12191         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
12192       std::vector<StructureChain>                               returnVector( queueFamilyPropertyCount );
12193       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties( queueFamilyPropertyCount );
12194       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
12195       {
12196         queueFamilyProperties[i].pNext =
12197           returnVector[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>().pNext;
12198       }
12199       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12200         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12201         &queueFamilyPropertyCount,
12202         reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
12203       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
12204       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
12205       {
12206         returnVector[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>() = queueFamilyProperties[i];
12207       }
12208       return returnVector;
12209     }
12210 
12211     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
getMemoryProperties2KHR() const12212                                            PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT
12213     {
12214       VULKAN_HPP_ASSERT(
12215         getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR &&
12216         "Function <vkGetPhysicalDeviceMemoryProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12217 
12218       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties;
12219       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR(
12220         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12221         reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
12222       return memoryProperties;
12223     }
12224 
12225     template <typename X, typename Y, typename... Z>
12226     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getMemoryProperties2KHR() const12227                                            PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT
12228     {
12229       VULKAN_HPP_ASSERT(
12230         getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR &&
12231         "Function <vkGetPhysicalDeviceMemoryProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12232 
12233       StructureChain<X, Y, Z...>                              structureChain;
12234       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties =
12235         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>();
12236       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR(
12237         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12238         reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
12239       return structureChain;
12240     }
12241 
12242     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
getSparseImageFormatProperties2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo) const12243                                            PhysicalDevice::getSparseImageFormatProperties2KHR(
12244         const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT
12245     {
12246       VULKAN_HPP_ASSERT(
12247         getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR &&
12248         "Function <vkGetPhysicalDeviceSparseImageFormatProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12249 
12250       uint32_t propertyCount;
12251       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12252         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12253         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
12254         &propertyCount,
12255         nullptr );
12256       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2> properties( propertyCount );
12257       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12258         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12259         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
12260         &propertyCount,
12261         reinterpret_cast<VkSparseImageFormatProperties2 *>( properties.data() ) );
12262       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
12263       return properties;
12264     }
12265 
12266     //=== VK_KHR_device_group ===
12267 
12268     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags
getGroupPeerMemoryFeaturesKHR(uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex) const12269                                            Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex,
12270                                              uint32_t localDeviceIndex,
12271                                              uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT
12272     {
12273       VULKAN_HPP_ASSERT(
12274         getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR &&
12275         "Function <vkGetDeviceGroupPeerMemoryFeaturesKHR> needs extension <VK_KHR_device_group> enabled!" );
12276 
12277       VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures;
12278       getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR(
12279         static_cast<VkDevice>( m_device ),
12280         heapIndex,
12281         localDeviceIndex,
12282         remoteDeviceIndex,
12283         reinterpret_cast<VkPeerMemoryFeatureFlags *>( &peerMemoryFeatures ) );
12284       return peerMemoryFeatures;
12285     }
12286 
setDeviceMaskKHR(uint32_t deviceMask) const12287     VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT
12288     {
12289       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMaskKHR &&
12290                          "Function <vkCmdSetDeviceMaskKHR> needs extension <VK_KHR_device_group> enabled!" );
12291 
12292       getDispatcher()->vkCmdSetDeviceMaskKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), deviceMask );
12293     }
12294 
dispatchBaseKHR(uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const12295     VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX,
12296                                                            uint32_t baseGroupY,
12297                                                            uint32_t baseGroupZ,
12298                                                            uint32_t groupCountX,
12299                                                            uint32_t groupCountY,
12300                                                            uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
12301     {
12302       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBaseKHR &&
12303                          "Function <vkCmdDispatchBaseKHR> needs extension <VK_KHR_device_group> enabled!" );
12304 
12305       getDispatcher()->vkCmdDispatchBaseKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
12306                                              baseGroupX,
12307                                              baseGroupY,
12308                                              baseGroupZ,
12309                                              groupCountX,
12310                                              groupCountY,
12311                                              groupCountZ );
12312     }
12313 
12314     //=== VK_KHR_maintenance1 ===
12315 
12316     VULKAN_HPP_INLINE void
trimKHR(VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags) const12317       CommandPool::trimKHR( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT
12318     {
12319       VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPoolKHR &&
12320                          "Function <vkTrimCommandPoolKHR> needs extension <VK_KHR_maintenance1> enabled!" );
12321 
12322       getDispatcher()->vkTrimCommandPoolKHR( static_cast<VkDevice>( m_device ),
12323                                              static_cast<VkCommandPool>( m_commandPool ),
12324                                              static_cast<VkCommandPoolTrimFlags>( flags ) );
12325     }
12326 
12327     //=== VK_KHR_device_group_creation ===
12328 
12329     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
enumeratePhysicalDeviceGroupsKHR() const12330                                            Instance::enumeratePhysicalDeviceGroupsKHR() const
12331     {
12332       VULKAN_HPP_ASSERT(
12333         getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR &&
12334         "Function <vkEnumeratePhysicalDeviceGroupsKHR> needs extension <VK_KHR_device_group_creation> enabled!" );
12335 
12336       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> physicalDeviceGroupProperties;
12337       uint32_t                                                         physicalDeviceGroupCount;
12338       VULKAN_HPP_NAMESPACE::Result                                     result;
12339       do
12340       {
12341         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR(
12342           static_cast<VkInstance>( m_instance ), &physicalDeviceGroupCount, nullptr ) );
12343         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceGroupCount )
12344         {
12345           physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
12346           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR(
12347             static_cast<VkInstance>( m_instance ),
12348             &physicalDeviceGroupCount,
12349             reinterpret_cast<VkPhysicalDeviceGroupProperties *>( physicalDeviceGroupProperties.data() ) ) );
12350           VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
12351         }
12352       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12353       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
12354            ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) )
12355       {
12356         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
12357       }
12358       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12359       {
12360         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" );
12361       }
12362       return physicalDeviceGroupProperties;
12363     }
12364 
12365     //=== VK_KHR_external_memory_capabilities ===
12366 
12367     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties
getExternalBufferPropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo) const12368                                            PhysicalDevice::getExternalBufferPropertiesKHR(
12369         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT
12370     {
12371       VULKAN_HPP_ASSERT(
12372         getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR &&
12373         "Function <vkGetPhysicalDeviceExternalBufferPropertiesKHR> needs extension <VK_KHR_external_memory_capabilities> enabled!" );
12374 
12375       VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties;
12376       getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR(
12377         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12378         reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( &externalBufferInfo ),
12379         reinterpret_cast<VkExternalBufferProperties *>( &externalBufferProperties ) );
12380       return externalBufferProperties;
12381     }
12382 
12383 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
12384     //=== VK_KHR_external_memory_win32 ===
12385 
getMemoryWin32HandleKHR(const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo) const12386     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE Device::getMemoryWin32HandleKHR(
12387       const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
12388     {
12389       VULKAN_HPP_ASSERT(
12390         getDispatcher()->vkGetMemoryWin32HandleKHR &&
12391         "Function <vkGetMemoryWin32HandleKHR> needs extension <VK_KHR_external_memory_win32> enabled!" );
12392 
12393       HANDLE                       handle;
12394       VULKAN_HPP_NAMESPACE::Result result =
12395         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryWin32HandleKHR(
12396           static_cast<VkDevice>( m_device ),
12397           reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR *>( &getWin32HandleInfo ),
12398           &handle ) );
12399       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12400       {
12401         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" );
12402       }
12403       return handle;
12404     }
12405 
12406     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR
getMemoryWin32HandlePropertiesKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,HANDLE handle) const12407       Device::getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
12408                                                  HANDLE                                                 handle ) const
12409     {
12410       VULKAN_HPP_ASSERT(
12411         getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR &&
12412         "Function <vkGetMemoryWin32HandlePropertiesKHR> needs extension <VK_KHR_external_memory_win32> enabled!" );
12413 
12414       VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
12415       VULKAN_HPP_NAMESPACE::Result                         result =
12416         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR(
12417           static_cast<VkDevice>( m_device ),
12418           static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
12419           handle,
12420           reinterpret_cast<VkMemoryWin32HandlePropertiesKHR *>( &memoryWin32HandleProperties ) ) );
12421       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12422       {
12423         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" );
12424       }
12425       return memoryWin32HandleProperties;
12426     }
12427 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
12428 
12429     //=== VK_KHR_external_memory_fd ===
12430 
12431     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int
getMemoryFdKHR(const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo) const12432       Device::getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo ) const
12433     {
12434       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdKHR &&
12435                          "Function <vkGetMemoryFdKHR> needs extension <VK_KHR_external_memory_fd> enabled!" );
12436 
12437       int                          fd;
12438       VULKAN_HPP_NAMESPACE::Result result =
12439         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryFdKHR(
12440           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetFdInfoKHR *>( &getFdInfo ), &fd ) );
12441       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12442       {
12443         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdKHR" );
12444       }
12445       return fd;
12446     }
12447 
12448     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR
getMemoryFdPropertiesKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,int fd) const12449       Device::getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
12450                                         int                                                    fd ) const
12451     {
12452       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdPropertiesKHR &&
12453                          "Function <vkGetMemoryFdPropertiesKHR> needs extension <VK_KHR_external_memory_fd> enabled!" );
12454 
12455       VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR memoryFdProperties;
12456       VULKAN_HPP_NAMESPACE::Result                result =
12457         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryFdPropertiesKHR(
12458           static_cast<VkDevice>( m_device ),
12459           static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
12460           fd,
12461           reinterpret_cast<VkMemoryFdPropertiesKHR *>( &memoryFdProperties ) ) );
12462       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12463       {
12464         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" );
12465       }
12466       return memoryFdProperties;
12467     }
12468 
12469     //=== VK_KHR_external_semaphore_capabilities ===
12470 
12471     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties
getExternalSemaphorePropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo) const12472                                            PhysicalDevice::getExternalSemaphorePropertiesKHR(
12473         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const
12474       VULKAN_HPP_NOEXCEPT
12475     {
12476       VULKAN_HPP_ASSERT(
12477         getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR &&
12478         "Function <vkGetPhysicalDeviceExternalSemaphorePropertiesKHR> needs extension <VK_KHR_external_semaphore_capabilities> enabled!" );
12479 
12480       VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties;
12481       getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
12482         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12483         reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( &externalSemaphoreInfo ),
12484         reinterpret_cast<VkExternalSemaphoreProperties *>( &externalSemaphoreProperties ) );
12485       return externalSemaphoreProperties;
12486     }
12487 
12488 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
12489     //=== VK_KHR_external_semaphore_win32 ===
12490 
importSemaphoreWin32HandleKHR(const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo) const12491     VULKAN_HPP_INLINE void Device::importSemaphoreWin32HandleKHR(
12492       const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
12493     {
12494       VULKAN_HPP_ASSERT(
12495         getDispatcher()->vkImportSemaphoreWin32HandleKHR &&
12496         "Function <vkImportSemaphoreWin32HandleKHR> needs extension <VK_KHR_external_semaphore_win32> enabled!" );
12497 
12498       VULKAN_HPP_NAMESPACE::Result result =
12499         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreWin32HandleKHR(
12500           static_cast<VkDevice>( m_device ),
12501           reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR *>( &importSemaphoreWin32HandleInfo ) ) );
12502       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12503       {
12504         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" );
12505       }
12506     }
12507 
getSemaphoreWin32HandleKHR(const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo) const12508     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE Device::getSemaphoreWin32HandleKHR(
12509       const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
12510     {
12511       VULKAN_HPP_ASSERT(
12512         getDispatcher()->vkGetSemaphoreWin32HandleKHR &&
12513         "Function <vkGetSemaphoreWin32HandleKHR> needs extension <VK_KHR_external_semaphore_win32> enabled!" );
12514 
12515       HANDLE                       handle;
12516       VULKAN_HPP_NAMESPACE::Result result =
12517         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreWin32HandleKHR(
12518           static_cast<VkDevice>( m_device ),
12519           reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR *>( &getWin32HandleInfo ),
12520           &handle ) );
12521       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12522       {
12523         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" );
12524       }
12525       return handle;
12526     }
12527 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
12528 
12529     //=== VK_KHR_external_semaphore_fd ===
12530 
12531     VULKAN_HPP_INLINE void
importSemaphoreFdKHR(const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo) const12532       Device::importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
12533     {
12534       VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreFdKHR &&
12535                          "Function <vkImportSemaphoreFdKHR> needs extension <VK_KHR_external_semaphore_fd> enabled!" );
12536 
12537       VULKAN_HPP_NAMESPACE::Result result =
12538         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreFdKHR(
12539           static_cast<VkDevice>( m_device ),
12540           reinterpret_cast<const VkImportSemaphoreFdInfoKHR *>( &importSemaphoreFdInfo ) ) );
12541       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12542       {
12543         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" );
12544       }
12545     }
12546 
12547     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int
getSemaphoreFdKHR(const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo) const12548       Device::getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo ) const
12549     {
12550       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreFdKHR &&
12551                          "Function <vkGetSemaphoreFdKHR> needs extension <VK_KHR_external_semaphore_fd> enabled!" );
12552 
12553       int                          fd;
12554       VULKAN_HPP_NAMESPACE::Result result =
12555         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreFdKHR(
12556           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreGetFdInfoKHR *>( &getFdInfo ), &fd ) );
12557       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12558       {
12559         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" );
12560       }
12561       return fd;
12562     }
12563 
12564     //=== VK_KHR_push_descriptor ===
12565 
pushDescriptorSetKHR(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t set,ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites) const12566     VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR(
12567       VULKAN_HPP_NAMESPACE::PipelineBindPoint                            pipelineBindPoint,
12568       VULKAN_HPP_NAMESPACE::PipelineLayout                               layout,
12569       uint32_t                                                           set,
12570       ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT
12571     {
12572       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetKHR &&
12573                          "Function <vkCmdPushDescriptorSetKHR> needs extension <VK_KHR_push_descriptor> enabled!" );
12574 
12575       getDispatcher()->vkCmdPushDescriptorSetKHR(
12576         static_cast<VkCommandBuffer>( m_commandBuffer ),
12577         static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
12578         static_cast<VkPipelineLayout>( layout ),
12579         set,
12580         descriptorWrites.size(),
12581         reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ) );
12582     }
12583 
pushDescriptorSetWithTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t set,const void * pData) const12584     VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR(
12585       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
12586       VULKAN_HPP_NAMESPACE::PipelineLayout           layout,
12587       uint32_t                                       set,
12588       const void *                                   pData ) const VULKAN_HPP_NOEXCEPT
12589     {
12590       VULKAN_HPP_ASSERT(
12591         getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR &&
12592         "Function <vkCmdPushDescriptorSetWithTemplateKHR> needs extension <VK_KHR_push_descriptor> enabled!" );
12593 
12594       getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR(
12595         static_cast<VkCommandBuffer>( m_commandBuffer ),
12596         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
12597         static_cast<VkPipelineLayout>( layout ),
12598         set,
12599         pData );
12600     }
12601 
12602     //=== VK_EXT_conditional_rendering ===
12603 
beginConditionalRenderingEXT(const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin) const12604     VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT(
12605       const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin ) const
12606       VULKAN_HPP_NOEXCEPT
12607     {
12608       VULKAN_HPP_ASSERT(
12609         getDispatcher()->vkCmdBeginConditionalRenderingEXT &&
12610         "Function <vkCmdBeginConditionalRenderingEXT> needs extension <VK_EXT_conditional_rendering> enabled!" );
12611 
12612       getDispatcher()->vkCmdBeginConditionalRenderingEXT(
12613         static_cast<VkCommandBuffer>( m_commandBuffer ),
12614         reinterpret_cast<const VkConditionalRenderingBeginInfoEXT *>( &conditionalRenderingBegin ) );
12615     }
12616 
endConditionalRenderingEXT() const12617     VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT
12618     {
12619       VULKAN_HPP_ASSERT(
12620         getDispatcher()->vkCmdEndConditionalRenderingEXT &&
12621         "Function <vkCmdEndConditionalRenderingEXT> needs extension <VK_EXT_conditional_rendering> enabled!" );
12622 
12623       getDispatcher()->vkCmdEndConditionalRenderingEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
12624     }
12625 
12626     //=== VK_KHR_descriptor_update_template ===
12627 
destroyDescriptorUpdateTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12628     VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR(
12629       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate            descriptorUpdateTemplate,
12630       Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT
12631     {
12632       VULKAN_HPP_ASSERT(
12633         getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR &&
12634         "Function <vkDestroyDescriptorUpdateTemplateKHR> needs extension <VK_KHR_descriptor_update_template> enabled!" );
12635 
12636       getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR(
12637         static_cast<VkDevice>( m_device ),
12638         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
12639         reinterpret_cast<const VkAllocationCallbacks *>(
12640           static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) );
12641     }
12642 
12643     VULKAN_HPP_INLINE void
updateWithTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData) const12644       DescriptorSet::updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
12645                                             const void * pData ) const VULKAN_HPP_NOEXCEPT
12646     {
12647       VULKAN_HPP_ASSERT(
12648         getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR &&
12649         "Function <vkUpdateDescriptorSetWithTemplateKHR> needs extension <VK_KHR_descriptor_update_template> enabled!" );
12650 
12651       getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR(
12652         static_cast<VkDevice>( m_device ),
12653         static_cast<VkDescriptorSet>( m_descriptorSet ),
12654         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
12655         pData );
12656     }
12657 
12658     //=== VK_NV_clip_space_w_scaling ===
12659 
setViewportWScalingNV(uint32_t firstViewport,ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings) const12660     VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV(
12661       uint32_t                                                           firstViewport,
12662       ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings ) const VULKAN_HPP_NOEXCEPT
12663     {
12664       VULKAN_HPP_ASSERT(
12665         getDispatcher()->vkCmdSetViewportWScalingNV &&
12666         "Function <vkCmdSetViewportWScalingNV> needs extension <VK_NV_clip_space_w_scaling> enabled!" );
12667 
12668       getDispatcher()->vkCmdSetViewportWScalingNV(
12669         static_cast<VkCommandBuffer>( m_commandBuffer ),
12670         firstViewport,
12671         viewportWScalings.size(),
12672         reinterpret_cast<const VkViewportWScalingNV *>( viewportWScalings.data() ) );
12673     }
12674 
12675 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
12676     //=== VK_EXT_acquire_xlib_display ===
12677 
acquireXlibDisplayEXT(Display & dpy,VULKAN_HPP_NAMESPACE::DisplayKHR display) const12678     VULKAN_HPP_INLINE void PhysicalDevice::acquireXlibDisplayEXT( Display &                        dpy,
12679                                                                   VULKAN_HPP_NAMESPACE::DisplayKHR display ) const
12680     {
12681       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireXlibDisplayEXT &&
12682                          "Function <vkAcquireXlibDisplayEXT> needs extension <VK_EXT_acquire_xlib_display> enabled!" );
12683 
12684       VULKAN_HPP_NAMESPACE::Result result =
12685         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireXlibDisplayEXT(
12686           static_cast<VkPhysicalDevice>( m_physicalDevice ), &dpy, static_cast<VkDisplayKHR>( display ) ) );
12687       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12688       {
12689         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" );
12690       }
12691     }
12692 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
12693 
12694     //=== VK_EXT_display_surface_counter ===
12695 
12696     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT
getSurfaceCapabilities2EXT(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const12697       PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
12698     {
12699       VULKAN_HPP_ASSERT(
12700         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT &&
12701         "Function <vkGetPhysicalDeviceSurfaceCapabilities2EXT> needs extension <VK_EXT_display_surface_counter> enabled!" );
12702 
12703       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT surfaceCapabilities;
12704       VULKAN_HPP_NAMESPACE::Result                  result =
12705         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT(
12706           static_cast<VkPhysicalDevice>( m_physicalDevice ),
12707           static_cast<VkSurfaceKHR>( surface ),
12708           reinterpret_cast<VkSurfaceCapabilities2EXT *>( &surfaceCapabilities ) ) );
12709       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12710       {
12711         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" );
12712       }
12713       return surfaceCapabilities;
12714     }
12715 
12716     //=== VK_EXT_display_control ===
12717 
12718     VULKAN_HPP_INLINE void
displayPowerControlEXT(VULKAN_HPP_NAMESPACE::DisplayKHR display,const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo) const12719       Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR                  display,
12720                                       const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo ) const
12721     {
12722       VULKAN_HPP_ASSERT( getDispatcher()->vkDisplayPowerControlEXT &&
12723                          "Function <vkDisplayPowerControlEXT> needs extension <VK_EXT_display_control> enabled!" );
12724 
12725       VULKAN_HPP_NAMESPACE::Result result =
12726         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDisplayPowerControlEXT(
12727           static_cast<VkDevice>( m_device ),
12728           static_cast<VkDisplayKHR>( display ),
12729           reinterpret_cast<const VkDisplayPowerInfoEXT *>( &displayPowerInfo ) ) );
12730       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12731       {
12732         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::displayPowerControlEXT" );
12733       }
12734     }
12735 
12736     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getCounterEXT(VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter) const12737       SwapchainKHR::getCounterEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter ) const
12738     {
12739       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainCounterEXT &&
12740                          "Function <vkGetSwapchainCounterEXT> needs extension <VK_EXT_display_control> enabled!" );
12741 
12742       uint64_t                     counterValue;
12743       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12744         getDispatcher()->vkGetSwapchainCounterEXT( static_cast<VkDevice>( m_device ),
12745                                                    static_cast<VkSwapchainKHR>( m_swapchainKHR ),
12746                                                    static_cast<VkSurfaceCounterFlagBitsEXT>( counter ),
12747                                                    &counterValue ) );
12748       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12749       {
12750         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getCounterEXT" );
12751       }
12752       return counterValue;
12753     }
12754 
12755     //=== VK_GOOGLE_display_timing ===
12756 
12757     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE
getRefreshCycleDurationGOOGLE() const12758                                            SwapchainKHR::getRefreshCycleDurationGOOGLE() const
12759     {
12760       VULKAN_HPP_ASSERT(
12761         getDispatcher()->vkGetRefreshCycleDurationGOOGLE &&
12762         "Function <vkGetRefreshCycleDurationGOOGLE> needs extension <VK_GOOGLE_display_timing> enabled!" );
12763 
12764       VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE displayTimingProperties;
12765       VULKAN_HPP_NAMESPACE::Result                     result =
12766         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetRefreshCycleDurationGOOGLE(
12767           static_cast<VkDevice>( m_device ),
12768           static_cast<VkSwapchainKHR>( m_swapchainKHR ),
12769           reinterpret_cast<VkRefreshCycleDurationGOOGLE *>( &displayTimingProperties ) ) );
12770       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12771       {
12772         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getRefreshCycleDurationGOOGLE" );
12773       }
12774       return displayTimingProperties;
12775     }
12776 
12777     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE>
getPastPresentationTimingGOOGLE() const12778                                            SwapchainKHR::getPastPresentationTimingGOOGLE() const
12779     {
12780       VULKAN_HPP_ASSERT(
12781         getDispatcher()->vkGetPastPresentationTimingGOOGLE &&
12782         "Function <vkGetPastPresentationTimingGOOGLE> needs extension <VK_GOOGLE_display_timing> enabled!" );
12783 
12784       std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE> presentationTimings;
12785       uint32_t                                                        presentationTimingCount;
12786       VULKAN_HPP_NAMESPACE::Result                                    result;
12787       do
12788       {
12789         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12790           getDispatcher()->vkGetPastPresentationTimingGOOGLE( static_cast<VkDevice>( m_device ),
12791                                                               static_cast<VkSwapchainKHR>( m_swapchainKHR ),
12792                                                               &presentationTimingCount,
12793                                                               nullptr ) );
12794         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentationTimingCount )
12795         {
12796           presentationTimings.resize( presentationTimingCount );
12797           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPastPresentationTimingGOOGLE(
12798             static_cast<VkDevice>( m_device ),
12799             static_cast<VkSwapchainKHR>( m_swapchainKHR ),
12800             &presentationTimingCount,
12801             reinterpret_cast<VkPastPresentationTimingGOOGLE *>( presentationTimings.data() ) ) );
12802           VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() );
12803         }
12804       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12805       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
12806            ( presentationTimingCount < presentationTimings.size() ) )
12807       {
12808         presentationTimings.resize( presentationTimingCount );
12809       }
12810       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12811       {
12812         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getPastPresentationTimingGOOGLE" );
12813       }
12814       return presentationTimings;
12815     }
12816 
12817     //=== VK_EXT_discard_rectangles ===
12818 
setDiscardRectangleEXT(uint32_t firstDiscardRectangle,ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles) const12819     VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT(
12820       uint32_t                                               firstDiscardRectangle,
12821       ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles ) const VULKAN_HPP_NOEXCEPT
12822     {
12823       VULKAN_HPP_ASSERT(
12824         getDispatcher()->vkCmdSetDiscardRectangleEXT &&
12825         "Function <vkCmdSetDiscardRectangleEXT> needs extension <VK_EXT_discard_rectangles> enabled!" );
12826 
12827       getDispatcher()->vkCmdSetDiscardRectangleEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
12828                                                     firstDiscardRectangle,
12829                                                     discardRectangles.size(),
12830                                                     reinterpret_cast<const VkRect2D *>( discardRectangles.data() ) );
12831     }
12832 
12833     //=== VK_EXT_hdr_metadata ===
12834 
12835     VULKAN_HPP_INLINE void
setHdrMetadataEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains,ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata) const12836       Device::setHdrMetadataEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const &   swapchains,
12837                                  ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata ) const
12838       VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
12839     {
12840       VULKAN_HPP_ASSERT( getDispatcher()->vkSetHdrMetadataEXT &&
12841                          "Function <vkSetHdrMetadataEXT> needs extension <VK_EXT_hdr_metadata> enabled!" );
12842 
12843 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
12844       VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() );
12845 #  else
12846       if ( swapchains.size() != metadata.size() )
12847       {
12848         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
12849                           "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
12850       }
12851 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
12852 
12853       getDispatcher()->vkSetHdrMetadataEXT( static_cast<VkDevice>( m_device ),
12854                                             swapchains.size(),
12855                                             reinterpret_cast<const VkSwapchainKHR *>( swapchains.data() ),
12856                                             reinterpret_cast<const VkHdrMetadataEXT *>( metadata.data() ) );
12857     }
12858 
12859     //=== VK_KHR_create_renderpass2 ===
12860 
beginRenderPass2KHR(const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo) const12861     VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR(
12862       const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
12863       const VULKAN_HPP_NAMESPACE::SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT
12864     {
12865       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2KHR &&
12866                          "Function <vkCmdBeginRenderPass2KHR> needs extension <VK_KHR_create_renderpass2> enabled!" );
12867 
12868       getDispatcher()->vkCmdBeginRenderPass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
12869                                                  reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
12870                                                  reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ) );
12871     }
12872 
nextSubpass2KHR(const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo) const12873     VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR(
12874       const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,
12875       const VULKAN_HPP_NAMESPACE::SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
12876     {
12877       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2KHR &&
12878                          "Function <vkCmdNextSubpass2KHR> needs extension <VK_KHR_create_renderpass2> enabled!" );
12879 
12880       getDispatcher()->vkCmdNextSubpass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
12881                                              reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ),
12882                                              reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
12883     }
12884 
endRenderPass2KHR(const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo) const12885     VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR(
12886       const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
12887     {
12888       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2KHR &&
12889                          "Function <vkCmdEndRenderPass2KHR> needs extension <VK_KHR_create_renderpass2> enabled!" );
12890 
12891       getDispatcher()->vkCmdEndRenderPass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
12892                                                reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
12893     }
12894 
12895     //=== VK_KHR_shared_presentable_image ===
12896 
getStatus() const12897     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result SwapchainKHR::getStatus() const
12898     {
12899       VULKAN_HPP_ASSERT(
12900         getDispatcher()->vkGetSwapchainStatusKHR &&
12901         "Function <vkGetSwapchainStatusKHR> needs extension <VK_KHR_shared_presentable_image> enabled!" );
12902 
12903       VULKAN_HPP_NAMESPACE::Result result =
12904         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSwapchainStatusKHR(
12905           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
12906       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
12907            ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) )
12908       {
12909         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getStatus" );
12910       }
12911       return result;
12912     }
12913 
12914     //=== VK_KHR_external_fence_capabilities ===
12915 
12916     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties
getExternalFencePropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo) const12917                                            PhysicalDevice::getExternalFencePropertiesKHR(
12918         const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT
12919     {
12920       VULKAN_HPP_ASSERT(
12921         getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR &&
12922         "Function <vkGetPhysicalDeviceExternalFencePropertiesKHR> needs extension <VK_KHR_external_fence_capabilities> enabled!" );
12923 
12924       VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties;
12925       getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR(
12926         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12927         reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( &externalFenceInfo ),
12928         reinterpret_cast<VkExternalFenceProperties *>( &externalFenceProperties ) );
12929       return externalFenceProperties;
12930     }
12931 
12932 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
12933     //=== VK_KHR_external_fence_win32 ===
12934 
importFenceWin32HandleKHR(const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo) const12935     VULKAN_HPP_INLINE void Device::importFenceWin32HandleKHR(
12936       const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
12937     {
12938       VULKAN_HPP_ASSERT(
12939         getDispatcher()->vkImportFenceWin32HandleKHR &&
12940         "Function <vkImportFenceWin32HandleKHR> needs extension <VK_KHR_external_fence_win32> enabled!" );
12941 
12942       VULKAN_HPP_NAMESPACE::Result result =
12943         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportFenceWin32HandleKHR(
12944           static_cast<VkDevice>( m_device ),
12945           reinterpret_cast<const VkImportFenceWin32HandleInfoKHR *>( &importFenceWin32HandleInfo ) ) );
12946       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12947       {
12948         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" );
12949       }
12950     }
12951 
getFenceWin32HandleKHR(const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo) const12952     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE Device::getFenceWin32HandleKHR(
12953       const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
12954     {
12955       VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceWin32HandleKHR &&
12956                          "Function <vkGetFenceWin32HandleKHR> needs extension <VK_KHR_external_fence_win32> enabled!" );
12957 
12958       HANDLE                       handle;
12959       VULKAN_HPP_NAMESPACE::Result result =
12960         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetFenceWin32HandleKHR(
12961           static_cast<VkDevice>( m_device ),
12962           reinterpret_cast<const VkFenceGetWin32HandleInfoKHR *>( &getWin32HandleInfo ),
12963           &handle ) );
12964       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12965       {
12966         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" );
12967       }
12968       return handle;
12969     }
12970 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
12971 
12972     //=== VK_KHR_external_fence_fd ===
12973 
12974     VULKAN_HPP_INLINE void
importFenceFdKHR(const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo) const12975       Device::importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo ) const
12976     {
12977       VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceFdKHR &&
12978                          "Function <vkImportFenceFdKHR> needs extension <VK_KHR_external_fence_fd> enabled!" );
12979 
12980       VULKAN_HPP_NAMESPACE::Result result =
12981         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportFenceFdKHR(
12982           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportFenceFdInfoKHR *>( &importFenceFdInfo ) ) );
12983       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12984       {
12985         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceFdKHR" );
12986       }
12987     }
12988 
12989     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int
getFenceFdKHR(const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo) const12990       Device::getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo ) const
12991     {
12992       VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceFdKHR &&
12993                          "Function <vkGetFenceFdKHR> needs extension <VK_KHR_external_fence_fd> enabled!" );
12994 
12995       int                          fd;
12996       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetFenceFdKHR(
12997         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkFenceGetFdInfoKHR *>( &getFdInfo ), &fd ) );
12998       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12999       {
13000         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceFdKHR" );
13001       }
13002       return fd;
13003     }
13004 
13005     //=== VK_KHR_performance_query ===
13006 
13007     VULKAN_HPP_NODISCARD
13008       VULKAN_HPP_INLINE std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>>
enumerateQueueFamilyPerformanceQueryCountersKHR(uint32_t queueFamilyIndex) const13009       PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const
13010     {
13011       VULKAN_HPP_ASSERT(
13012         getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR &&
13013         "Function <vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR> needs extension <VK_KHR_performance_query> enabled!" );
13014 
13015       std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>> data;
13016       std::vector<PerformanceCounterKHR> &            counters            = data.first;
13017       std::vector<PerformanceCounterDescriptionKHR> & counterDescriptions = data.second;
13018       uint32_t                                        counterCount;
13019       VULKAN_HPP_NAMESPACE::Result                    result;
13020       do
13021       {
13022         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13023           getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
13024             static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &counterCount, nullptr, nullptr ) );
13025         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && counterCount )
13026         {
13027           counters.resize( counterCount );
13028           counterDescriptions.resize( counterCount );
13029           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13030             getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
13031               static_cast<VkPhysicalDevice>( m_physicalDevice ),
13032               queueFamilyIndex,
13033               &counterCount,
13034               reinterpret_cast<VkPerformanceCounterKHR *>( counters.data() ),
13035               reinterpret_cast<VkPerformanceCounterDescriptionKHR *>( counterDescriptions.data() ) ) );
13036           VULKAN_HPP_ASSERT( counterCount <= counters.size() );
13037         }
13038       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13039       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( counterCount < counters.size() ) )
13040       {
13041         counters.resize( counterCount );
13042         counterDescriptions.resize( counterCount );
13043       }
13044       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13045       {
13046         throwResultException(
13047           result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" );
13048       }
13049       return data;
13050     }
13051 
getQueueFamilyPerformanceQueryPassesKHR(const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo) const13052     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR(
13053       const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const
13054       VULKAN_HPP_NOEXCEPT
13055     {
13056       VULKAN_HPP_ASSERT(
13057         getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR &&
13058         "Function <vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR> needs extension <VK_KHR_performance_query> enabled!" );
13059 
13060       uint32_t numPasses;
13061       getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
13062         static_cast<VkPhysicalDevice>( m_physicalDevice ),
13063         reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR *>( &performanceQueryCreateInfo ),
13064         &numPasses );
13065       return numPasses;
13066     }
13067 
13068     VULKAN_HPP_INLINE void
acquireProfilingLockKHR(const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info) const13069       Device::acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info ) const
13070     {
13071       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireProfilingLockKHR &&
13072                          "Function <vkAcquireProfilingLockKHR> needs extension <VK_KHR_performance_query> enabled!" );
13073 
13074       VULKAN_HPP_NAMESPACE::Result result =
13075         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireProfilingLockKHR(
13076           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAcquireProfilingLockInfoKHR *>( &info ) ) );
13077       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13078       {
13079         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" );
13080       }
13081     }
13082 
releaseProfilingLockKHR() const13083     VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT
13084     {
13085       VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseProfilingLockKHR &&
13086                          "Function <vkReleaseProfilingLockKHR> needs extension <VK_KHR_performance_query> enabled!" );
13087 
13088       getDispatcher()->vkReleaseProfilingLockKHR( static_cast<VkDevice>( m_device ) );
13089     }
13090 
13091     //=== VK_KHR_get_surface_capabilities2 ===
13092 
13093     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR
getSurfaceCapabilities2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const13094                                            PhysicalDevice::getSurfaceCapabilities2KHR(
13095         const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
13096     {
13097       VULKAN_HPP_ASSERT(
13098         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR &&
13099         "Function <vkGetPhysicalDeviceSurfaceCapabilities2KHR> needs extension <VK_KHR_get_surface_capabilities2> enabled!" );
13100 
13101       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR surfaceCapabilities;
13102       VULKAN_HPP_NAMESPACE::Result                  result =
13103         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR(
13104           static_cast<VkPhysicalDevice>( m_physicalDevice ),
13105           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
13106           reinterpret_cast<VkSurfaceCapabilities2KHR *>( &surfaceCapabilities ) ) );
13107       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13108       {
13109         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" );
13110       }
13111       return surfaceCapabilities;
13112     }
13113 
13114     template <typename X, typename Y, typename... Z>
getSurfaceCapabilities2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const13115     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> PhysicalDevice::getSurfaceCapabilities2KHR(
13116       const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
13117     {
13118       StructureChain<X, Y, Z...>                      structureChain;
13119       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR & surfaceCapabilities =
13120         structureChain.template get<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR>();
13121       VULKAN_HPP_NAMESPACE::Result result =
13122         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR(
13123           static_cast<VkPhysicalDevice>( m_physicalDevice ),
13124           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
13125           reinterpret_cast<VkSurfaceCapabilities2KHR *>( &surfaceCapabilities ) ) );
13126       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13127       {
13128         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" );
13129       }
13130       return structureChain;
13131     }
13132 
13133     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>
getSurfaceFormats2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const13134                                            PhysicalDevice::getSurfaceFormats2KHR(
13135         const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
13136     {
13137       VULKAN_HPP_ASSERT(
13138         getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR &&
13139         "Function <vkGetPhysicalDeviceSurfaceFormats2KHR> needs extension <VK_KHR_get_surface_capabilities2> enabled!" );
13140 
13141       std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR> surfaceFormats;
13142       uint32_t                                             surfaceFormatCount;
13143       VULKAN_HPP_NAMESPACE::Result                         result;
13144       do
13145       {
13146         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR(
13147           static_cast<VkPhysicalDevice>( m_physicalDevice ),
13148           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
13149           &surfaceFormatCount,
13150           nullptr ) );
13151         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount )
13152         {
13153           surfaceFormats.resize( surfaceFormatCount );
13154           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR(
13155             static_cast<VkPhysicalDevice>( m_physicalDevice ),
13156             reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
13157             &surfaceFormatCount,
13158             reinterpret_cast<VkSurfaceFormat2KHR *>( surfaceFormats.data() ) ) );
13159           VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
13160         }
13161       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13162       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( surfaceFormatCount < surfaceFormats.size() ) )
13163       {
13164         surfaceFormats.resize( surfaceFormatCount );
13165       }
13166       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13167       {
13168         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" );
13169       }
13170       return surfaceFormats;
13171     }
13172 
13173     //=== VK_KHR_get_display_properties2 ===
13174 
13175     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR>
getDisplayProperties2KHR() const13176                                            PhysicalDevice::getDisplayProperties2KHR() const
13177     {
13178       VULKAN_HPP_ASSERT(
13179         getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR &&
13180         "Function <vkGetPhysicalDeviceDisplayProperties2KHR> needs extension <VK_KHR_get_display_properties2> enabled!" );
13181 
13182       std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR> properties;
13183       uint32_t                                                 propertyCount;
13184       VULKAN_HPP_NAMESPACE::Result                             result;
13185       do
13186       {
13187         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR(
13188           static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
13189         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
13190         {
13191           properties.resize( propertyCount );
13192           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR(
13193             static_cast<VkPhysicalDevice>( m_physicalDevice ),
13194             &propertyCount,
13195             reinterpret_cast<VkDisplayProperties2KHR *>( properties.data() ) ) );
13196           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
13197         }
13198       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13199       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
13200       {
13201         properties.resize( propertyCount );
13202       }
13203       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13204       {
13205         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" );
13206       }
13207       return properties;
13208     }
13209 
13210     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR>
getDisplayPlaneProperties2KHR() const13211                                            PhysicalDevice::getDisplayPlaneProperties2KHR() const
13212     {
13213       VULKAN_HPP_ASSERT(
13214         getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR &&
13215         "Function <vkGetPhysicalDeviceDisplayPlaneProperties2KHR> needs extension <VK_KHR_get_display_properties2> enabled!" );
13216 
13217       std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR> properties;
13218       uint32_t                                                      propertyCount;
13219       VULKAN_HPP_NAMESPACE::Result                                  result;
13220       do
13221       {
13222         result =
13223           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
13224             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
13225         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
13226         {
13227           properties.resize( propertyCount );
13228           result =
13229             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
13230               static_cast<VkPhysicalDevice>( m_physicalDevice ),
13231               &propertyCount,
13232               reinterpret_cast<VkDisplayPlaneProperties2KHR *>( properties.data() ) ) );
13233           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
13234         }
13235       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13236       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
13237       {
13238         properties.resize( propertyCount );
13239       }
13240       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13241       {
13242         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" );
13243       }
13244       return properties;
13245     }
13246 
13247     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR>
getModeProperties2() const13248                                            DisplayKHR::getModeProperties2() const
13249     {
13250       VULKAN_HPP_ASSERT(
13251         getDispatcher()->vkGetDisplayModeProperties2KHR &&
13252         "Function <vkGetDisplayModeProperties2KHR> needs extension <VK_KHR_get_display_properties2> enabled!" );
13253 
13254       std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR> properties;
13255       uint32_t                                                     propertyCount;
13256       VULKAN_HPP_NAMESPACE::Result                                 result;
13257       do
13258       {
13259         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13260           getDispatcher()->vkGetDisplayModeProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
13261                                                            static_cast<VkDisplayKHR>( m_displayKHR ),
13262                                                            &propertyCount,
13263                                                            nullptr ) );
13264         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
13265         {
13266           properties.resize( propertyCount );
13267           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayModeProperties2KHR(
13268             static_cast<VkPhysicalDevice>( m_physicalDevice ),
13269             static_cast<VkDisplayKHR>( m_displayKHR ),
13270             &propertyCount,
13271             reinterpret_cast<VkDisplayModeProperties2KHR *>( properties.data() ) ) );
13272           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
13273         }
13274       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13275       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
13276       {
13277         properties.resize( propertyCount );
13278       }
13279       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13280       {
13281         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::getModeProperties2" );
13282       }
13283       return properties;
13284     }
13285 
13286     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR
getDisplayPlaneCapabilities2KHR(const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo) const13287                                            PhysicalDevice::getDisplayPlaneCapabilities2KHR(
13288         const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo ) const
13289     {
13290       VULKAN_HPP_ASSERT(
13291         getDispatcher()->vkGetDisplayPlaneCapabilities2KHR &&
13292         "Function <vkGetDisplayPlaneCapabilities2KHR> needs extension <VK_KHR_get_display_properties2> enabled!" );
13293 
13294       VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR capabilities;
13295       VULKAN_HPP_NAMESPACE::Result                       result =
13296         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayPlaneCapabilities2KHR(
13297           static_cast<VkPhysicalDevice>( m_physicalDevice ),
13298           reinterpret_cast<const VkDisplayPlaneInfo2KHR *>( &displayPlaneInfo ),
13299           reinterpret_cast<VkDisplayPlaneCapabilities2KHR *>( &capabilities ) ) );
13300       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13301       {
13302         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" );
13303       }
13304       return capabilities;
13305     }
13306 
13307     //=== VK_EXT_debug_utils ===
13308 
13309     VULKAN_HPP_INLINE void
setDebugUtilsObjectNameEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo) const13310       Device::setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo ) const
13311     {
13312       VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectNameEXT &&
13313                          "Function <vkSetDebugUtilsObjectNameEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13314 
13315       VULKAN_HPP_NAMESPACE::Result result =
13316         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetDebugUtilsObjectNameEXT(
13317           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>( &nameInfo ) ) );
13318       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13319       {
13320         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" );
13321       }
13322     }
13323 
13324     VULKAN_HPP_INLINE void
setDebugUtilsObjectTagEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo) const13325       Device::setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo ) const
13326     {
13327       VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectTagEXT &&
13328                          "Function <vkSetDebugUtilsObjectTagEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13329 
13330       VULKAN_HPP_NAMESPACE::Result result =
13331         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetDebugUtilsObjectTagEXT(
13332           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>( &tagInfo ) ) );
13333       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13334       {
13335         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" );
13336       }
13337     }
13338 
beginDebugUtilsLabelEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo) const13339     VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT(
13340       const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
13341     {
13342       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBeginDebugUtilsLabelEXT &&
13343                          "Function <vkQueueBeginDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13344 
13345       getDispatcher()->vkQueueBeginDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ),
13346                                                        reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
13347     }
13348 
endDebugUtilsLabelEXT() const13349     VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT
13350     {
13351       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueEndDebugUtilsLabelEXT &&
13352                          "Function <vkQueueEndDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13353 
13354       getDispatcher()->vkQueueEndDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ) );
13355     }
13356 
insertDebugUtilsLabelEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo) const13357     VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT(
13358       const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
13359     {
13360       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueInsertDebugUtilsLabelEXT &&
13361                          "Function <vkQueueInsertDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13362 
13363       getDispatcher()->vkQueueInsertDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ),
13364                                                         reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
13365     }
13366 
beginDebugUtilsLabelEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo) const13367     VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT(
13368       const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
13369     {
13370       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginDebugUtilsLabelEXT &&
13371                          "Function <vkCmdBeginDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13372 
13373       getDispatcher()->vkCmdBeginDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
13374                                                      reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
13375     }
13376 
endDebugUtilsLabelEXT() const13377     VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT
13378     {
13379       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndDebugUtilsLabelEXT &&
13380                          "Function <vkCmdEndDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13381 
13382       getDispatcher()->vkCmdEndDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
13383     }
13384 
insertDebugUtilsLabelEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo) const13385     VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT(
13386       const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
13387     {
13388       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInsertDebugUtilsLabelEXT &&
13389                          "Function <vkCmdInsertDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13390 
13391       getDispatcher()->vkCmdInsertDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
13392                                                       reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
13393     }
13394 
submitDebugUtilsMessageEXT(VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes,const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData) const13395     VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT(
13396       VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT       messageSeverity,
13397       VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT              messageTypes,
13398       const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT
13399     {
13400       VULKAN_HPP_ASSERT( getDispatcher()->vkSubmitDebugUtilsMessageEXT &&
13401                          "Function <vkSubmitDebugUtilsMessageEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13402 
13403       getDispatcher()->vkSubmitDebugUtilsMessageEXT(
13404         static_cast<VkInstance>( m_instance ),
13405         static_cast<VkDebugUtilsMessageSeverityFlagBitsEXT>( messageSeverity ),
13406         static_cast<VkDebugUtilsMessageTypeFlagsEXT>( messageTypes ),
13407         reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT *>( &callbackData ) );
13408     }
13409 
13410 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
13411     //=== VK_ANDROID_external_memory_android_hardware_buffer ===
13412 
13413     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID
getAndroidHardwareBufferPropertiesANDROID(const struct AHardwareBuffer & buffer) const13414       Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const
13415     {
13416       VULKAN_HPP_ASSERT(
13417         getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID &&
13418         "Function <vkGetAndroidHardwareBufferPropertiesANDROID> needs extension <VK_ANDROID_external_memory_android_hardware_buffer> enabled!" );
13419 
13420       VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID properties;
13421       VULKAN_HPP_NAMESPACE::Result                                 result =
13422         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
13423           static_cast<VkDevice>( m_device ),
13424           &buffer,
13425           reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( &properties ) ) );
13426       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13427       {
13428         throwResultException( result,
13429                               VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" );
13430       }
13431       return properties;
13432     }
13433 
13434     template <typename X, typename Y, typename... Z>
13435     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
getAndroidHardwareBufferPropertiesANDROID(const struct AHardwareBuffer & buffer) const13436       Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const
13437     {
13438       StructureChain<X, Y, Z...>                                     structureChain;
13439       VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID & properties =
13440         structureChain.template get<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID>();
13441       VULKAN_HPP_NAMESPACE::Result result =
13442         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
13443           static_cast<VkDevice>( m_device ),
13444           &buffer,
13445           reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( &properties ) ) );
13446       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13447       {
13448         throwResultException( result,
13449                               VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" );
13450       }
13451       return structureChain;
13452     }
13453 
getMemoryAndroidHardwareBufferANDROID(const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info) const13454     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE struct AHardwareBuffer * Device::getMemoryAndroidHardwareBufferANDROID(
13455       const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info ) const
13456     {
13457       VULKAN_HPP_ASSERT(
13458         getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID &&
13459         "Function <vkGetMemoryAndroidHardwareBufferANDROID> needs extension <VK_ANDROID_external_memory_android_hardware_buffer> enabled!" );
13460 
13461       struct AHardwareBuffer *     buffer;
13462       VULKAN_HPP_NAMESPACE::Result result =
13463         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID(
13464           static_cast<VkDevice>( m_device ),
13465           reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID *>( &info ),
13466           &buffer ) );
13467       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13468       {
13469         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" );
13470       }
13471       return buffer;
13472     }
13473 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
13474 
13475     //=== VK_EXT_sample_locations ===
13476 
setSampleLocationsEXT(const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo) const13477     VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT(
13478       const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT
13479     {
13480       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEXT &&
13481                          "Function <vkCmdSetSampleLocationsEXT> needs extension <VK_EXT_sample_locations> enabled!" );
13482 
13483       getDispatcher()->vkCmdSetSampleLocationsEXT(
13484         static_cast<VkCommandBuffer>( m_commandBuffer ),
13485         reinterpret_cast<const VkSampleLocationsInfoEXT *>( &sampleLocationsInfo ) );
13486     }
13487 
13488     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT
getMultisamplePropertiesEXT(VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples) const13489       PhysicalDevice::getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples ) const
13490       VULKAN_HPP_NOEXCEPT
13491     {
13492       VULKAN_HPP_ASSERT(
13493         getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT &&
13494         "Function <vkGetPhysicalDeviceMultisamplePropertiesEXT> needs extension <VK_EXT_sample_locations> enabled!" );
13495 
13496       VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT multisampleProperties;
13497       getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT(
13498         static_cast<VkPhysicalDevice>( m_physicalDevice ),
13499         static_cast<VkSampleCountFlagBits>( samples ),
13500         reinterpret_cast<VkMultisamplePropertiesEXT *>( &multisampleProperties ) );
13501       return multisampleProperties;
13502     }
13503 
13504     //=== VK_KHR_get_memory_requirements2 ===
13505 
13506     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info) const13507       Device::getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const
13508       VULKAN_HPP_NOEXCEPT
13509     {
13510       VULKAN_HPP_ASSERT(
13511         getDispatcher()->vkGetImageMemoryRequirements2KHR &&
13512         "Function <vkGetImageMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13513 
13514       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
13515       getDispatcher()->vkGetImageMemoryRequirements2KHR(
13516         static_cast<VkDevice>( m_device ),
13517         reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
13518         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13519       return memoryRequirements;
13520     }
13521 
13522     template <typename X, typename Y, typename... Z>
getImageMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info) const13523     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getImageMemoryRequirements2KHR(
13524       const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13525     {
13526       VULKAN_HPP_ASSERT(
13527         getDispatcher()->vkGetImageMemoryRequirements2KHR &&
13528         "Function <vkGetImageMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13529 
13530       StructureChain<X, Y, Z...>                  structureChain;
13531       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
13532         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
13533       getDispatcher()->vkGetImageMemoryRequirements2KHR(
13534         static_cast<VkDevice>( m_device ),
13535         reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
13536         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13537       return structureChain;
13538     }
13539 
13540     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info) const13541       Device::getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const
13542       VULKAN_HPP_NOEXCEPT
13543     {
13544       VULKAN_HPP_ASSERT(
13545         getDispatcher()->vkGetBufferMemoryRequirements2KHR &&
13546         "Function <vkGetBufferMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13547 
13548       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
13549       getDispatcher()->vkGetBufferMemoryRequirements2KHR(
13550         static_cast<VkDevice>( m_device ),
13551         reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
13552         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13553       return memoryRequirements;
13554     }
13555 
13556     template <typename X, typename Y, typename... Z>
getBufferMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info) const13557     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getBufferMemoryRequirements2KHR(
13558       const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13559     {
13560       VULKAN_HPP_ASSERT(
13561         getDispatcher()->vkGetBufferMemoryRequirements2KHR &&
13562         "Function <vkGetBufferMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13563 
13564       StructureChain<X, Y, Z...>                  structureChain;
13565       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
13566         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
13567       getDispatcher()->vkGetBufferMemoryRequirements2KHR(
13568         static_cast<VkDevice>( m_device ),
13569         reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
13570         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13571       return structureChain;
13572     }
13573 
13574     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info) const13575                                            Device::getImageSparseMemoryRequirements2KHR(
13576         const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13577     {
13578       VULKAN_HPP_ASSERT(
13579         getDispatcher()->vkGetImageSparseMemoryRequirements2KHR &&
13580         "Function <vkGetImageSparseMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13581 
13582       uint32_t sparseMemoryRequirementCount;
13583       getDispatcher()->vkGetImageSparseMemoryRequirements2KHR(
13584         static_cast<VkDevice>( m_device ),
13585         reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
13586         &sparseMemoryRequirementCount,
13587         nullptr );
13588       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements(
13589         sparseMemoryRequirementCount );
13590       getDispatcher()->vkGetImageSparseMemoryRequirements2KHR(
13591         static_cast<VkDevice>( m_device ),
13592         reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
13593         &sparseMemoryRequirementCount,
13594         reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
13595       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
13596       return sparseMemoryRequirements;
13597     }
13598 
13599     //=== VK_KHR_acceleration_structure ===
13600 
buildAccelerationStructuresKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos) const13601     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR(
13602       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const &      infos,
13603       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos )
13604       const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
13605     {
13606       VULKAN_HPP_ASSERT(
13607         getDispatcher()->vkCmdBuildAccelerationStructuresKHR &&
13608         "Function <vkCmdBuildAccelerationStructuresKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13609 
13610 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
13611       VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() );
13612 #  else
13613       if ( infos.size() != pBuildRangeInfos.size() )
13614       {
13615         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
13616                           "::CommandBuffer::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" );
13617       }
13618 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
13619 
13620       getDispatcher()->vkCmdBuildAccelerationStructuresKHR(
13621         static_cast<VkCommandBuffer>( m_commandBuffer ),
13622         infos.size(),
13623         reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
13624         reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR * const *>( pBuildRangeInfos.data() ) );
13625     }
13626 
buildAccelerationStructuresIndirectKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const & indirectDeviceAddresses,ArrayProxy<const uint32_t> const & indirectStrides,ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts) const13627     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR(
13628       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
13629       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const &                             indirectDeviceAddresses,
13630       ArrayProxy<const uint32_t> const &                                                        indirectStrides,
13631       ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
13632     {
13633       VULKAN_HPP_ASSERT(
13634         getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR &&
13635         "Function <vkCmdBuildAccelerationStructuresIndirectKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13636 
13637 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
13638       VULKAN_HPP_ASSERT( infos.size() == indirectDeviceAddresses.size() );
13639       VULKAN_HPP_ASSERT( infos.size() == indirectStrides.size() );
13640       VULKAN_HPP_ASSERT( infos.size() == pMaxPrimitiveCounts.size() );
13641 #  else
13642       if ( infos.size() != indirectDeviceAddresses.size() )
13643       {
13644         throw LogicError(
13645           VULKAN_HPP_NAMESPACE_STRING
13646           "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectDeviceAddresses.size()" );
13647       }
13648       if ( infos.size() != indirectStrides.size() )
13649       {
13650         throw LogicError(
13651           VULKAN_HPP_NAMESPACE_STRING
13652           "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectStrides.size()" );
13653       }
13654       if ( infos.size() != pMaxPrimitiveCounts.size() )
13655       {
13656         throw LogicError(
13657           VULKAN_HPP_NAMESPACE_STRING
13658           "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != pMaxPrimitiveCounts.size()" );
13659       }
13660 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
13661 
13662       getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR(
13663         static_cast<VkCommandBuffer>( m_commandBuffer ),
13664         infos.size(),
13665         reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
13666         reinterpret_cast<const VkDeviceAddress *>( indirectDeviceAddresses.data() ),
13667         indirectStrides.data(),
13668         pMaxPrimitiveCounts.data() );
13669     }
13670 
buildAccelerationStructuresKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos) const13671     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::buildAccelerationStructuresKHR(
13672       VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                                     deferredOperation,
13673       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const &      infos,
13674       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos )
13675       const
13676     {
13677       VULKAN_HPP_ASSERT(
13678         getDispatcher()->vkBuildAccelerationStructuresKHR &&
13679         "Function <vkBuildAccelerationStructuresKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13680       if ( infos.size() != pBuildRangeInfos.size() )
13681       {
13682         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
13683                           "::Device::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" );
13684       }
13685 
13686       VULKAN_HPP_NAMESPACE::Result result =
13687         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBuildAccelerationStructuresKHR(
13688           static_cast<VkDevice>( m_device ),
13689           static_cast<VkDeferredOperationKHR>( deferredOperation ),
13690           infos.size(),
13691           reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
13692           reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR * const *>( pBuildRangeInfos.data() ) ) );
13693       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
13694            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
13695            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) )
13696       {
13697         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR" );
13698       }
13699       return result;
13700     }
13701 
13702     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyAccelerationStructureKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info) const13703       Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
13704                                             const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const
13705     {
13706       VULKAN_HPP_ASSERT(
13707         getDispatcher()->vkCopyAccelerationStructureKHR &&
13708         "Function <vkCopyAccelerationStructureKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13709 
13710       VULKAN_HPP_NAMESPACE::Result result =
13711         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyAccelerationStructureKHR(
13712           static_cast<VkDevice>( m_device ),
13713           static_cast<VkDeferredOperationKHR>( deferredOperation ),
13714           reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( &info ) ) );
13715       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
13716            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
13717            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) )
13718       {
13719         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR" );
13720       }
13721       return result;
13722     }
13723 
copyAccelerationStructureToMemoryKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info) const13724     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::copyAccelerationStructureToMemoryKHR(
13725       VULKAN_HPP_NAMESPACE::DeferredOperationKHR                             deferredOperation,
13726       const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const
13727     {
13728       VULKAN_HPP_ASSERT(
13729         getDispatcher()->vkCopyAccelerationStructureToMemoryKHR &&
13730         "Function <vkCopyAccelerationStructureToMemoryKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13731 
13732       VULKAN_HPP_NAMESPACE::Result result =
13733         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyAccelerationStructureToMemoryKHR(
13734           static_cast<VkDevice>( m_device ),
13735           static_cast<VkDeferredOperationKHR>( deferredOperation ),
13736           reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( &info ) ) );
13737       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
13738            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
13739            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) )
13740       {
13741         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR" );
13742       }
13743       return result;
13744     }
13745 
copyMemoryToAccelerationStructureKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info) const13746     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::copyMemoryToAccelerationStructureKHR(
13747       VULKAN_HPP_NAMESPACE::DeferredOperationKHR                             deferredOperation,
13748       const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const
13749     {
13750       VULKAN_HPP_ASSERT(
13751         getDispatcher()->vkCopyMemoryToAccelerationStructureKHR &&
13752         "Function <vkCopyMemoryToAccelerationStructureKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13753 
13754       VULKAN_HPP_NAMESPACE::Result result =
13755         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyMemoryToAccelerationStructureKHR(
13756           static_cast<VkDevice>( m_device ),
13757           static_cast<VkDeferredOperationKHR>( deferredOperation ),
13758           reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( &info ) ) );
13759       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
13760            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
13761            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) )
13762       {
13763         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR" );
13764       }
13765       return result;
13766     }
13767 
13768     template <typename T>
writeAccelerationStructuresPropertiesKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,size_t dataSize,size_t stride) const13769     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T> Device::writeAccelerationStructuresPropertiesKHR(
13770       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
13771       VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
13772       size_t                                                                   dataSize,
13773       size_t                                                                   stride ) const
13774     {
13775       VULKAN_HPP_ASSERT(
13776         getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR &&
13777         "Function <vkWriteAccelerationStructuresPropertiesKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13778 
13779       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
13780       std::vector<T> data( dataSize / sizeof( T ) );
13781       Result         result = static_cast<Result>( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR(
13782         static_cast<VkDevice>( m_device ),
13783         accelerationStructures.size(),
13784         reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
13785         static_cast<VkQueryType>( queryType ),
13786         data.size() * sizeof( T ),
13787         reinterpret_cast<void *>( data.data() ),
13788         stride ) );
13789       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13790       {
13791         throwResultException( result,
13792                               VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" );
13793       }
13794       return data;
13795     }
13796 
13797     template <typename T>
writeAccelerationStructuresPropertyKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,size_t stride) const13798     VULKAN_HPP_NODISCARD T Device::writeAccelerationStructuresPropertyKHR(
13799       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
13800       VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
13801       size_t                                                                   stride ) const
13802     {
13803       T      data;
13804       Result result = static_cast<Result>( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR(
13805         static_cast<VkDevice>( m_device ),
13806         accelerationStructures.size(),
13807         reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
13808         static_cast<VkQueryType>( queryType ),
13809         sizeof( T ),
13810         reinterpret_cast<void *>( &data ),
13811         stride ) );
13812       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13813       {
13814         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" );
13815       }
13816       return data;
13817     }
13818 
copyAccelerationStructureKHR(const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info) const13819     VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR(
13820       const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
13821     {
13822       VULKAN_HPP_ASSERT(
13823         getDispatcher()->vkCmdCopyAccelerationStructureKHR &&
13824         "Function <vkCmdCopyAccelerationStructureKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13825 
13826       getDispatcher()->vkCmdCopyAccelerationStructureKHR(
13827         static_cast<VkCommandBuffer>( m_commandBuffer ),
13828         reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( &info ) );
13829     }
13830 
copyAccelerationStructureToMemoryKHR(const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info) const13831     VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR(
13832       const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
13833     {
13834       VULKAN_HPP_ASSERT(
13835         getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR &&
13836         "Function <vkCmdCopyAccelerationStructureToMemoryKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13837 
13838       getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR(
13839         static_cast<VkCommandBuffer>( m_commandBuffer ),
13840         reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( &info ) );
13841     }
13842 
copyMemoryToAccelerationStructureKHR(const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info) const13843     VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR(
13844       const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
13845     {
13846       VULKAN_HPP_ASSERT(
13847         getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR &&
13848         "Function <vkCmdCopyMemoryToAccelerationStructureKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13849 
13850       getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR(
13851         static_cast<VkCommandBuffer>( m_commandBuffer ),
13852         reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( &info ) );
13853     }
13854 
13855     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getAccelerationStructureAddressKHR(const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info) const13856                                            Device::getAccelerationStructureAddressKHR(
13857         const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
13858     {
13859       VULKAN_HPP_ASSERT(
13860         getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR &&
13861         "Function <vkGetAccelerationStructureDeviceAddressKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13862 
13863       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>(
13864         getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR(
13865           static_cast<VkDevice>( m_device ),
13866           reinterpret_cast<const VkAccelerationStructureDeviceAddressInfoKHR *>( &info ) ) );
13867     }
13868 
writeAccelerationStructuresPropertiesKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery) const13869     VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR(
13870       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
13871       VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
13872       VULKAN_HPP_NAMESPACE::QueryPool                                          queryPool,
13873       uint32_t                                                                 firstQuery ) const VULKAN_HPP_NOEXCEPT
13874     {
13875       VULKAN_HPP_ASSERT(
13876         getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR &&
13877         "Function <vkCmdWriteAccelerationStructuresPropertiesKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13878 
13879       getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR(
13880         static_cast<VkCommandBuffer>( m_commandBuffer ),
13881         accelerationStructures.size(),
13882         reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
13883         static_cast<VkQueryType>( queryType ),
13884         static_cast<VkQueryPool>( queryPool ),
13885         firstQuery );
13886     }
13887 
13888     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR
getAccelerationStructureCompatibilityKHR(const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo) const13889                                            Device::getAccelerationStructureCompatibilityKHR(
13890         const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo ) const VULKAN_HPP_NOEXCEPT
13891     {
13892       VULKAN_HPP_ASSERT(
13893         getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR &&
13894         "Function <vkGetDeviceAccelerationStructureCompatibilityKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13895 
13896       VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR compatibility;
13897       getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR(
13898         static_cast<VkDevice>( m_device ),
13899         reinterpret_cast<const VkAccelerationStructureVersionInfoKHR *>( &versionInfo ),
13900         reinterpret_cast<VkAccelerationStructureCompatibilityKHR *>( &compatibility ) );
13901       return compatibility;
13902     }
13903 
13904     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR
getAccelerationStructureBuildSizesKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType,const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo,ArrayProxy<const uint32_t> const & maxPrimitiveCounts) const13905                                            Device::getAccelerationStructureBuildSizesKHR(
13906         VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR                 buildType,
13907         const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo,
13908         ArrayProxy<const uint32_t> const & maxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT
13909     {
13910       VULKAN_HPP_ASSERT(
13911         getDispatcher()->vkGetAccelerationStructureBuildSizesKHR &&
13912         "Function <vkGetAccelerationStructureBuildSizesKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13913 
13914       VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR sizeInfo;
13915       getDispatcher()->vkGetAccelerationStructureBuildSizesKHR(
13916         static_cast<VkDevice>( m_device ),
13917         static_cast<VkAccelerationStructureBuildTypeKHR>( buildType ),
13918         reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( &buildInfo ),
13919         maxPrimitiveCounts.data(),
13920         reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( &sizeInfo ) );
13921       return sizeInfo;
13922     }
13923 
13924     //=== VK_KHR_sampler_ycbcr_conversion ===
13925 
destroySamplerYcbcrConversionKHR(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion,Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const13926     VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR(
13927       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion              ycbcrConversion,
13928       Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT
13929     {
13930       VULKAN_HPP_ASSERT(
13931         getDispatcher()->vkDestroySamplerYcbcrConversionKHR &&
13932         "Function <vkDestroySamplerYcbcrConversionKHR> needs extension <VK_KHR_sampler_ycbcr_conversion> enabled!" );
13933 
13934       getDispatcher()->vkDestroySamplerYcbcrConversionKHR(
13935         static_cast<VkDevice>( m_device ),
13936         static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ),
13937         reinterpret_cast<const VkAllocationCallbacks *>(
13938           static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) );
13939     }
13940 
13941     //=== VK_KHR_bind_memory2 ===
13942 
bindBufferMemory2KHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos) const13943     VULKAN_HPP_INLINE void Device::bindBufferMemory2KHR(
13944       ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const
13945     {
13946       VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2KHR &&
13947                          "Function <vkBindBufferMemory2KHR> needs extension <VK_KHR_bind_memory2> enabled!" );
13948 
13949       VULKAN_HPP_NAMESPACE::Result result =
13950         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindBufferMemory2KHR(
13951           static_cast<VkDevice>( m_device ),
13952           bindInfos.size(),
13953           reinterpret_cast<const VkBindBufferMemoryInfo *>( bindInfos.data() ) ) );
13954       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13955       {
13956         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" );
13957       }
13958     }
13959 
13960     VULKAN_HPP_INLINE void
bindImageMemory2KHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos) const13961       Device::bindImageMemory2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const
13962     {
13963       VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2KHR &&
13964                          "Function <vkBindImageMemory2KHR> needs extension <VK_KHR_bind_memory2> enabled!" );
13965 
13966       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13967         getDispatcher()->vkBindImageMemory2KHR( static_cast<VkDevice>( m_device ),
13968                                                 bindInfos.size(),
13969                                                 reinterpret_cast<const VkBindImageMemoryInfo *>( bindInfos.data() ) ) );
13970       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13971       {
13972         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2KHR" );
13973       }
13974     }
13975 
13976     //=== VK_EXT_image_drm_format_modifier ===
13977 
13978     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT
getDrmFormatModifierPropertiesEXT() const13979                                            Image::getDrmFormatModifierPropertiesEXT() const
13980     {
13981       VULKAN_HPP_ASSERT(
13982         getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT &&
13983         "Function <vkGetImageDrmFormatModifierPropertiesEXT> needs extension <VK_EXT_image_drm_format_modifier> enabled!" );
13984 
13985       VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT properties;
13986       VULKAN_HPP_NAMESPACE::Result                              result =
13987         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT(
13988           static_cast<VkDevice>( m_device ),
13989           static_cast<VkImage>( m_image ),
13990           reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT *>( &properties ) ) );
13991       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13992       {
13993         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Image::getDrmFormatModifierPropertiesEXT" );
13994       }
13995       return properties;
13996     }
13997 
13998     //=== VK_EXT_validation_cache ===
13999 
14000     VULKAN_HPP_INLINE void
merge(ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches) const14001       ValidationCacheEXT::merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches ) const
14002     {
14003       VULKAN_HPP_ASSERT( getDispatcher()->vkMergeValidationCachesEXT &&
14004                          "Function <vkMergeValidationCachesEXT> needs extension <VK_EXT_validation_cache> enabled!" );
14005 
14006       VULKAN_HPP_NAMESPACE::Result result =
14007         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkMergeValidationCachesEXT(
14008           static_cast<VkDevice>( m_device ),
14009           static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
14010           srcCaches.size(),
14011           reinterpret_cast<const VkValidationCacheEXT *>( srcCaches.data() ) ) );
14012       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14013       {
14014         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ValidationCacheEXT::merge" );
14015       }
14016     }
14017 
getData() const14018     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> ValidationCacheEXT::getData() const
14019     {
14020       VULKAN_HPP_ASSERT( getDispatcher()->vkGetValidationCacheDataEXT &&
14021                          "Function <vkGetValidationCacheDataEXT> needs extension <VK_EXT_validation_cache> enabled!" );
14022 
14023       std::vector<uint8_t>         data;
14024       size_t                       dataSize;
14025       VULKAN_HPP_NAMESPACE::Result result;
14026       do
14027       {
14028         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14029           getDispatcher()->vkGetValidationCacheDataEXT( static_cast<VkDevice>( m_device ),
14030                                                         static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
14031                                                         &dataSize,
14032                                                         nullptr ) );
14033         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
14034         {
14035           data.resize( dataSize );
14036           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14037             getDispatcher()->vkGetValidationCacheDataEXT( static_cast<VkDevice>( m_device ),
14038                                                           static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
14039                                                           &dataSize,
14040                                                           reinterpret_cast<void *>( data.data() ) ) );
14041           VULKAN_HPP_ASSERT( dataSize <= data.size() );
14042         }
14043       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14044       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( dataSize < data.size() ) )
14045       {
14046         data.resize( dataSize );
14047       }
14048       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14049       {
14050         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ValidationCacheEXT::getData" );
14051       }
14052       return data;
14053     }
14054 
14055     //=== VK_NV_shading_rate_image ===
14056 
14057     VULKAN_HPP_INLINE void
bindShadingRateImageNV(VULKAN_HPP_NAMESPACE::ImageView imageView,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout) const14058       CommandBuffer::bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView   imageView,
14059                                              VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT
14060     {
14061       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadingRateImageNV &&
14062                          "Function <vkCmdBindShadingRateImageNV> needs extension <VK_NV_shading_rate_image> enabled!" );
14063 
14064       getDispatcher()->vkCmdBindShadingRateImageNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14065                                                     static_cast<VkImageView>( imageView ),
14066                                                     static_cast<VkImageLayout>( imageLayout ) );
14067     }
14068 
setViewportShadingRatePaletteNV(uint32_t firstViewport,ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes) const14069     VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV(
14070       uint32_t firstViewport, ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes )
14071       const VULKAN_HPP_NOEXCEPT
14072     {
14073       VULKAN_HPP_ASSERT(
14074         getDispatcher()->vkCmdSetViewportShadingRatePaletteNV &&
14075         "Function <vkCmdSetViewportShadingRatePaletteNV> needs extension <VK_NV_shading_rate_image> enabled!" );
14076 
14077       getDispatcher()->vkCmdSetViewportShadingRatePaletteNV(
14078         static_cast<VkCommandBuffer>( m_commandBuffer ),
14079         firstViewport,
14080         shadingRatePalettes.size(),
14081         reinterpret_cast<const VkShadingRatePaletteNV *>( shadingRatePalettes.data() ) );
14082     }
14083 
setCoarseSampleOrderNV(VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType,ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders) const14084     VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV(
14085       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV                             sampleOrderType,
14086       ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders ) const
14087       VULKAN_HPP_NOEXCEPT
14088     {
14089       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoarseSampleOrderNV &&
14090                          "Function <vkCmdSetCoarseSampleOrderNV> needs extension <VK_NV_shading_rate_image> enabled!" );
14091 
14092       getDispatcher()->vkCmdSetCoarseSampleOrderNV(
14093         static_cast<VkCommandBuffer>( m_commandBuffer ),
14094         static_cast<VkCoarseSampleOrderTypeNV>( sampleOrderType ),
14095         customSampleOrders.size(),
14096         reinterpret_cast<const VkCoarseSampleOrderCustomNV *>( customSampleOrders.data() ) );
14097     }
14098 
14099     //=== VK_NV_ray_tracing ===
14100 
14101     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR
getAccelerationStructureMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info) const14102                                            Device::getAccelerationStructureMemoryRequirementsNV(
14103         const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
14104     {
14105       VULKAN_HPP_ASSERT(
14106         getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV &&
14107         "Function <vkGetAccelerationStructureMemoryRequirementsNV> needs extension <VK_NV_ray_tracing> enabled!" );
14108 
14109       VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR memoryRequirements;
14110       getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV(
14111         static_cast<VkDevice>( m_device ),
14112         reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( &info ),
14113         reinterpret_cast<VkMemoryRequirements2KHR *>( &memoryRequirements ) );
14114       return memoryRequirements;
14115     }
14116 
14117     template <typename X, typename Y, typename... Z>
14118     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getAccelerationStructureMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info) const14119                                            Device::getAccelerationStructureMemoryRequirementsNV(
14120         const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
14121     {
14122       VULKAN_HPP_ASSERT(
14123         getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV &&
14124         "Function <vkGetAccelerationStructureMemoryRequirementsNV> needs extension <VK_NV_ray_tracing> enabled!" );
14125 
14126       StructureChain<X, Y, Z...>                     structureChain;
14127       VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR & memoryRequirements =
14128         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR>();
14129       getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV(
14130         static_cast<VkDevice>( m_device ),
14131         reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( &info ),
14132         reinterpret_cast<VkMemoryRequirements2KHR *>( &memoryRequirements ) );
14133       return structureChain;
14134     }
14135 
bindAccelerationStructureMemoryNV(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos) const14136     VULKAN_HPP_INLINE void Device::bindAccelerationStructureMemoryNV(
14137       ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos ) const
14138     {
14139       VULKAN_HPP_ASSERT(
14140         getDispatcher()->vkBindAccelerationStructureMemoryNV &&
14141         "Function <vkBindAccelerationStructureMemoryNV> needs extension <VK_NV_ray_tracing> enabled!" );
14142 
14143       VULKAN_HPP_NAMESPACE::Result result =
14144         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindAccelerationStructureMemoryNV(
14145           static_cast<VkDevice>( m_device ),
14146           bindInfos.size(),
14147           reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV *>( bindInfos.data() ) ) );
14148       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14149       {
14150         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" );
14151       }
14152     }
14153 
buildAccelerationStructureNV(const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info,VULKAN_HPP_NAMESPACE::Buffer instanceData,VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset,VULKAN_HPP_NAMESPACE::Bool32 update,VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,VULKAN_HPP_NAMESPACE::Buffer scratch,VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset) const14154     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV(
14155       const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info,
14156       VULKAN_HPP_NAMESPACE::Buffer                              instanceData,
14157       VULKAN_HPP_NAMESPACE::DeviceSize                          instanceOffset,
14158       VULKAN_HPP_NAMESPACE::Bool32                              update,
14159       VULKAN_HPP_NAMESPACE::AccelerationStructureNV             dst,
14160       VULKAN_HPP_NAMESPACE::AccelerationStructureNV             src,
14161       VULKAN_HPP_NAMESPACE::Buffer                              scratch,
14162       VULKAN_HPP_NAMESPACE::DeviceSize                          scratchOffset ) const VULKAN_HPP_NOEXCEPT
14163     {
14164       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructureNV &&
14165                          "Function <vkCmdBuildAccelerationStructureNV> needs extension <VK_NV_ray_tracing> enabled!" );
14166 
14167       getDispatcher()->vkCmdBuildAccelerationStructureNV(
14168         static_cast<VkCommandBuffer>( m_commandBuffer ),
14169         reinterpret_cast<const VkAccelerationStructureInfoNV *>( &info ),
14170         static_cast<VkBuffer>( instanceData ),
14171         static_cast<VkDeviceSize>( instanceOffset ),
14172         static_cast<VkBool32>( update ),
14173         static_cast<VkAccelerationStructureNV>( dst ),
14174         static_cast<VkAccelerationStructureNV>( src ),
14175         static_cast<VkBuffer>( scratch ),
14176         static_cast<VkDeviceSize>( scratchOffset ) );
14177     }
14178 
copyAccelerationStructureNV(VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode) const14179     VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV(
14180       VULKAN_HPP_NAMESPACE::AccelerationStructureNV          dst,
14181       VULKAN_HPP_NAMESPACE::AccelerationStructureNV          src,
14182       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT
14183     {
14184       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureNV &&
14185                          "Function <vkCmdCopyAccelerationStructureNV> needs extension <VK_NV_ray_tracing> enabled!" );
14186 
14187       getDispatcher()->vkCmdCopyAccelerationStructureNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14188                                                          static_cast<VkAccelerationStructureNV>( dst ),
14189                                                          static_cast<VkAccelerationStructureNV>( src ),
14190                                                          static_cast<VkCopyAccelerationStructureModeKHR>( mode ) );
14191     }
14192 
traceRaysNV(VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer,VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset,VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer,VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset,VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride,VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer,VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset,VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride,VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer,VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset,VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride,uint32_t width,uint32_t height,uint32_t depth) const14193     VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer     raygenShaderBindingTableBuffer,
14194                                                        VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset,
14195                                                        VULKAN_HPP_NAMESPACE::Buffer     missShaderBindingTableBuffer,
14196                                                        VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset,
14197                                                        VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride,
14198                                                        VULKAN_HPP_NAMESPACE::Buffer     hitShaderBindingTableBuffer,
14199                                                        VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset,
14200                                                        VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride,
14201                                                        VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer,
14202                                                        VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset,
14203                                                        VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride,
14204                                                        uint32_t                         width,
14205                                                        uint32_t                         height,
14206                                                        uint32_t depth ) const VULKAN_HPP_NOEXCEPT
14207     {
14208       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysNV &&
14209                          "Function <vkCmdTraceRaysNV> needs extension <VK_NV_ray_tracing> enabled!" );
14210 
14211       getDispatcher()->vkCmdTraceRaysNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14212                                          static_cast<VkBuffer>( raygenShaderBindingTableBuffer ),
14213                                          static_cast<VkDeviceSize>( raygenShaderBindingOffset ),
14214                                          static_cast<VkBuffer>( missShaderBindingTableBuffer ),
14215                                          static_cast<VkDeviceSize>( missShaderBindingOffset ),
14216                                          static_cast<VkDeviceSize>( missShaderBindingStride ),
14217                                          static_cast<VkBuffer>( hitShaderBindingTableBuffer ),
14218                                          static_cast<VkDeviceSize>( hitShaderBindingOffset ),
14219                                          static_cast<VkDeviceSize>( hitShaderBindingStride ),
14220                                          static_cast<VkBuffer>( callableShaderBindingTableBuffer ),
14221                                          static_cast<VkDeviceSize>( callableShaderBindingOffset ),
14222                                          static_cast<VkDeviceSize>( callableShaderBindingStride ),
14223                                          width,
14224                                          height,
14225                                          depth );
14226     }
14227 
14228     template <typename T>
14229     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T>
getRayTracingShaderGroupHandlesNV(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const14230       Pipeline::getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
14231     {
14232       VULKAN_HPP_ASSERT(
14233         getDispatcher()->vkGetRayTracingShaderGroupHandlesNV &&
14234         "Function <vkGetRayTracingShaderGroupHandlesNV> needs extension <VK_NV_ray_tracing> enabled!" );
14235 
14236       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
14237       std::vector<T> data( dataSize / sizeof( T ) );
14238       Result         result = static_cast<Result>(
14239         getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast<VkDevice>( m_device ),
14240                                                               static_cast<VkPipeline>( m_pipeline ),
14241                                                               firstGroup,
14242                                                               groupCount,
14243                                                               data.size() * sizeof( T ),
14244                                                               reinterpret_cast<void *>( data.data() ) ) );
14245       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14246       {
14247         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesNV" );
14248       }
14249       return data;
14250     }
14251 
14252     template <typename T>
getRayTracingShaderGroupHandleNV(uint32_t firstGroup,uint32_t groupCount) const14253     VULKAN_HPP_NODISCARD T Pipeline::getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const
14254     {
14255       T      data;
14256       Result result = static_cast<Result>(
14257         getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast<VkDevice>( m_device ),
14258                                                               static_cast<VkPipeline>( m_pipeline ),
14259                                                               firstGroup,
14260                                                               groupCount,
14261                                                               sizeof( T ),
14262                                                               reinterpret_cast<void *>( &data ) ) );
14263       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14264       {
14265         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleNV" );
14266       }
14267       return data;
14268     }
14269 
14270     template <typename T>
getHandle(size_t dataSize) const14271     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T> AccelerationStructureNV::getHandle( size_t dataSize ) const
14272     {
14273       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV &&
14274                          "Function <vkGetAccelerationStructureHandleNV> needs extension <VK_NV_ray_tracing> enabled!" );
14275 
14276       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
14277       std::vector<T> data( dataSize / sizeof( T ) );
14278       Result         result = static_cast<Result>( getDispatcher()->vkGetAccelerationStructureHandleNV(
14279         static_cast<VkDevice>( m_device ),
14280         static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ),
14281         data.size() * sizeof( T ),
14282         reinterpret_cast<void *>( data.data() ) ) );
14283       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14284       {
14285         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" );
14286       }
14287       return data;
14288     }
14289 
14290     template <typename T>
getHandle() const14291     VULKAN_HPP_NODISCARD T AccelerationStructureNV::getHandle() const
14292     {
14293       T      data;
14294       Result result = static_cast<Result>( getDispatcher()->vkGetAccelerationStructureHandleNV(
14295         static_cast<VkDevice>( m_device ),
14296         static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ),
14297         sizeof( T ),
14298         reinterpret_cast<void *>( &data ) ) );
14299       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14300       {
14301         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" );
14302       }
14303       return data;
14304     }
14305 
writeAccelerationStructuresPropertiesNV(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery) const14306     VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV(
14307       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,
14308       VULKAN_HPP_NAMESPACE::QueryType                                         queryType,
14309       VULKAN_HPP_NAMESPACE::QueryPool                                         queryPool,
14310       uint32_t                                                                firstQuery ) const VULKAN_HPP_NOEXCEPT
14311     {
14312       VULKAN_HPP_ASSERT(
14313         getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV &&
14314         "Function <vkCmdWriteAccelerationStructuresPropertiesNV> needs extension <VK_NV_ray_tracing> enabled!" );
14315 
14316       getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV(
14317         static_cast<VkCommandBuffer>( m_commandBuffer ),
14318         accelerationStructures.size(),
14319         reinterpret_cast<const VkAccelerationStructureNV *>( accelerationStructures.data() ),
14320         static_cast<VkQueryType>( queryType ),
14321         static_cast<VkQueryPool>( queryPool ),
14322         firstQuery );
14323     }
14324 
compileDeferredNV(uint32_t shader) const14325     VULKAN_HPP_INLINE void Pipeline::compileDeferredNV( uint32_t shader ) const
14326     {
14327       VULKAN_HPP_ASSERT( getDispatcher()->vkCompileDeferredNV &&
14328                          "Function <vkCompileDeferredNV> needs extension <VK_NV_ray_tracing> enabled!" );
14329 
14330       VULKAN_HPP_NAMESPACE::Result result =
14331         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCompileDeferredNV(
14332           static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), shader ) );
14333       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14334       {
14335         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::compileDeferredNV" );
14336       }
14337     }
14338 
14339     //=== VK_KHR_maintenance3 ===
14340 
14341     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
getDescriptorSetLayoutSupportKHR(const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo) const14342                                            Device::getDescriptorSetLayoutSupportKHR(
14343         const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
14344     {
14345       VULKAN_HPP_ASSERT(
14346         getDispatcher()->vkGetDescriptorSetLayoutSupportKHR &&
14347         "Function <vkGetDescriptorSetLayoutSupportKHR> needs extension <VK_KHR_maintenance3> enabled!" );
14348 
14349       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support;
14350       getDispatcher()->vkGetDescriptorSetLayoutSupportKHR(
14351         static_cast<VkDevice>( m_device ),
14352         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
14353         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
14354       return support;
14355     }
14356 
14357     template <typename X, typename Y, typename... Z>
getDescriptorSetLayoutSupportKHR(const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo) const14358     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getDescriptorSetLayoutSupportKHR(
14359       const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
14360     {
14361       VULKAN_HPP_ASSERT(
14362         getDispatcher()->vkGetDescriptorSetLayoutSupportKHR &&
14363         "Function <vkGetDescriptorSetLayoutSupportKHR> needs extension <VK_KHR_maintenance3> enabled!" );
14364 
14365       StructureChain<X, Y, Z...>                         structureChain;
14366       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support =
14367         structureChain.template get<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>();
14368       getDispatcher()->vkGetDescriptorSetLayoutSupportKHR(
14369         static_cast<VkDevice>( m_device ),
14370         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
14371         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
14372       return structureChain;
14373     }
14374 
14375     //=== VK_KHR_draw_indirect_count ===
14376 
drawIndirectCountKHR(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const14377     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14378                                                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
14379                                                                 VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
14380                                                                 VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
14381                                                                 uint32_t                         maxDrawCount,
14382                                                                 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
14383     {
14384       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountKHR &&
14385                          "Function <vkCmdDrawIndirectCountKHR> needs extension <VK_KHR_draw_indirect_count> enabled!" );
14386 
14387       getDispatcher()->vkCmdDrawIndirectCountKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
14388                                                   static_cast<VkBuffer>( buffer ),
14389                                                   static_cast<VkDeviceSize>( offset ),
14390                                                   static_cast<VkBuffer>( countBuffer ),
14391                                                   static_cast<VkDeviceSize>( countBufferOffset ),
14392                                                   maxDrawCount,
14393                                                   stride );
14394     }
14395 
14396     VULKAN_HPP_INLINE void
drawIndexedIndirectCountKHR(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const14397       CommandBuffer::drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14398                                                   VULKAN_HPP_NAMESPACE::DeviceSize offset,
14399                                                   VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
14400                                                   VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
14401                                                   uint32_t                         maxDrawCount,
14402                                                   uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
14403     {
14404       VULKAN_HPP_ASSERT(
14405         getDispatcher()->vkCmdDrawIndexedIndirectCountKHR &&
14406         "Function <vkCmdDrawIndexedIndirectCountKHR> needs extension <VK_KHR_draw_indirect_count> enabled!" );
14407 
14408       getDispatcher()->vkCmdDrawIndexedIndirectCountKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
14409                                                          static_cast<VkBuffer>( buffer ),
14410                                                          static_cast<VkDeviceSize>( offset ),
14411                                                          static_cast<VkBuffer>( countBuffer ),
14412                                                          static_cast<VkDeviceSize>( countBufferOffset ),
14413                                                          maxDrawCount,
14414                                                          stride );
14415     }
14416 
14417     //=== VK_EXT_external_memory_host ===
14418 
14419     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT
getMemoryHostPointerPropertiesEXT(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer) const14420       Device::getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
14421                                                  const void * pHostPointer ) const
14422     {
14423       VULKAN_HPP_ASSERT(
14424         getDispatcher()->vkGetMemoryHostPointerPropertiesEXT &&
14425         "Function <vkGetMemoryHostPointerPropertiesEXT> needs extension <VK_EXT_external_memory_host> enabled!" );
14426 
14427       VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT memoryHostPointerProperties;
14428       VULKAN_HPP_NAMESPACE::Result                         result =
14429         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryHostPointerPropertiesEXT(
14430           static_cast<VkDevice>( m_device ),
14431           static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
14432           pHostPointer,
14433           reinterpret_cast<VkMemoryHostPointerPropertiesEXT *>( &memoryHostPointerProperties ) ) );
14434       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14435       {
14436         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" );
14437       }
14438       return memoryHostPointerProperties;
14439     }
14440 
14441     //=== VK_AMD_buffer_marker ===
14442 
14443     VULKAN_HPP_INLINE void
writeBufferMarkerAMD(VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,uint32_t marker) const14444       CommandBuffer::writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
14445                                            VULKAN_HPP_NAMESPACE::Buffer                dstBuffer,
14446                                            VULKAN_HPP_NAMESPACE::DeviceSize            dstOffset,
14447                                            uint32_t marker ) const VULKAN_HPP_NOEXCEPT
14448     {
14449       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarkerAMD &&
14450                          "Function <vkCmdWriteBufferMarkerAMD> needs extension <VK_AMD_buffer_marker> enabled!" );
14451 
14452       getDispatcher()->vkCmdWriteBufferMarkerAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
14453                                                   static_cast<VkPipelineStageFlagBits>( pipelineStage ),
14454                                                   static_cast<VkBuffer>( dstBuffer ),
14455                                                   static_cast<VkDeviceSize>( dstOffset ),
14456                                                   marker );
14457     }
14458 
14459     //=== VK_EXT_calibrated_timestamps ===
14460 
14461     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::TimeDomainEXT>
getCalibrateableTimeDomainsEXT() const14462                                            PhysicalDevice::getCalibrateableTimeDomainsEXT() const
14463     {
14464       VULKAN_HPP_ASSERT(
14465         getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT &&
14466         "Function <vkGetPhysicalDeviceCalibrateableTimeDomainsEXT> needs extension <VK_EXT_calibrated_timestamps> enabled!" );
14467 
14468       std::vector<VULKAN_HPP_NAMESPACE::TimeDomainEXT> timeDomains;
14469       uint32_t                                         timeDomainCount;
14470       VULKAN_HPP_NAMESPACE::Result                     result;
14471       do
14472       {
14473         result =
14474           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
14475             static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, nullptr ) );
14476         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && timeDomainCount )
14477         {
14478           timeDomains.resize( timeDomainCount );
14479           result =
14480             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
14481               static_cast<VkPhysicalDevice>( m_physicalDevice ),
14482               &timeDomainCount,
14483               reinterpret_cast<VkTimeDomainEXT *>( timeDomains.data() ) ) );
14484           VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() );
14485         }
14486       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14487       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( timeDomainCount < timeDomains.size() ) )
14488       {
14489         timeDomains.resize( timeDomainCount );
14490       }
14491       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14492       {
14493         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" );
14494       }
14495       return timeDomains;
14496     }
14497 
14498     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<std::vector<uint64_t>, uint64_t>
getCalibratedTimestampsEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT> const & timestampInfos) const14499                                            Device::getCalibratedTimestampsEXT(
14500         ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT> const & timestampInfos ) const
14501     {
14502       VULKAN_HPP_ASSERT(
14503         getDispatcher()->vkGetCalibratedTimestampsEXT &&
14504         "Function <vkGetCalibratedTimestampsEXT> needs extension <VK_EXT_calibrated_timestamps> enabled!" );
14505 
14506       std::pair<std::vector<uint64_t>, uint64_t> data(
14507         std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) );
14508       std::vector<uint64_t> &      timestamps   = data.first;
14509       uint64_t &                   maxDeviation = data.second;
14510       VULKAN_HPP_NAMESPACE::Result result =
14511         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetCalibratedTimestampsEXT(
14512           static_cast<VkDevice>( m_device ),
14513           timestampInfos.size(),
14514           reinterpret_cast<const VkCalibratedTimestampInfoEXT *>( timestampInfos.data() ),
14515           timestamps.data(),
14516           &maxDeviation ) );
14517       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14518       {
14519         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" );
14520       }
14521       return data;
14522     }
14523 
14524     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<uint64_t, uint64_t>
getCalibratedTimestampEXT(const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT & timestampInfo) const14525       Device::getCalibratedTimestampEXT( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT & timestampInfo ) const
14526     {
14527       VULKAN_HPP_ASSERT(
14528         getDispatcher()->vkGetCalibratedTimestampsEXT &&
14529         "Function <vkGetCalibratedTimestampsEXT> needs extension <VK_EXT_calibrated_timestamps> enabled!" );
14530 
14531       std::pair<uint64_t, uint64_t> data;
14532       uint64_t &                    timestamp    = data.first;
14533       uint64_t &                    maxDeviation = data.second;
14534       VULKAN_HPP_NAMESPACE::Result  result =
14535         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetCalibratedTimestampsEXT(
14536           static_cast<VkDevice>( m_device ),
14537           1,
14538           reinterpret_cast<const VkCalibratedTimestampInfoEXT *>( &timestampInfo ),
14539           &timestamp,
14540           &maxDeviation ) );
14541       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14542       {
14543         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampEXT" );
14544       }
14545       return data;
14546     }
14547 
14548     //=== VK_NV_mesh_shader ===
14549 
drawMeshTasksNV(uint32_t taskCount,uint32_t firstTask) const14550     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount,
14551                                                            uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT
14552     {
14553       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksNV &&
14554                          "Function <vkCmdDrawMeshTasksNV> needs extension <VK_NV_mesh_shader> enabled!" );
14555 
14556       getDispatcher()->vkCmdDrawMeshTasksNV( static_cast<VkCommandBuffer>( m_commandBuffer ), taskCount, firstTask );
14557     }
14558 
drawMeshTasksIndirectNV(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const14559     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14560                                                                    VULKAN_HPP_NAMESPACE::DeviceSize offset,
14561                                                                    uint32_t                         drawCount,
14562                                                                    uint32_t stride ) const VULKAN_HPP_NOEXCEPT
14563     {
14564       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectNV &&
14565                          "Function <vkCmdDrawMeshTasksIndirectNV> needs extension <VK_NV_mesh_shader> enabled!" );
14566 
14567       getDispatcher()->vkCmdDrawMeshTasksIndirectNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14568                                                      static_cast<VkBuffer>( buffer ),
14569                                                      static_cast<VkDeviceSize>( offset ),
14570                                                      drawCount,
14571                                                      stride );
14572     }
14573 
14574     VULKAN_HPP_INLINE void
drawMeshTasksIndirectCountNV(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const14575       CommandBuffer::drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14576                                                    VULKAN_HPP_NAMESPACE::DeviceSize offset,
14577                                                    VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
14578                                                    VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
14579                                                    uint32_t                         maxDrawCount,
14580                                                    uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
14581     {
14582       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV &&
14583                          "Function <vkCmdDrawMeshTasksIndirectCountNV> needs extension <VK_NV_mesh_shader> enabled!" );
14584 
14585       getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14586                                                           static_cast<VkBuffer>( buffer ),
14587                                                           static_cast<VkDeviceSize>( offset ),
14588                                                           static_cast<VkBuffer>( countBuffer ),
14589                                                           static_cast<VkDeviceSize>( countBufferOffset ),
14590                                                           maxDrawCount,
14591                                                           stride );
14592     }
14593 
14594     //=== VK_NV_scissor_exclusive ===
14595 
setExclusiveScissorNV(uint32_t firstExclusiveScissor,ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors) const14596     VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV(
14597       uint32_t                                               firstExclusiveScissor,
14598       ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT
14599     {
14600       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorNV &&
14601                          "Function <vkCmdSetExclusiveScissorNV> needs extension <VK_NV_scissor_exclusive> enabled!" );
14602 
14603       getDispatcher()->vkCmdSetExclusiveScissorNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14604                                                    firstExclusiveScissor,
14605                                                    exclusiveScissors.size(),
14606                                                    reinterpret_cast<const VkRect2D *>( exclusiveScissors.data() ) );
14607     }
14608 
14609     //=== VK_NV_device_diagnostic_checkpoints ===
14610 
setCheckpointNV(const void * pCheckpointMarker) const14611     VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void * pCheckpointMarker ) const VULKAN_HPP_NOEXCEPT
14612     {
14613       VULKAN_HPP_ASSERT(
14614         getDispatcher()->vkCmdSetCheckpointNV &&
14615         "Function <vkCmdSetCheckpointNV> needs extension <VK_NV_device_diagnostic_checkpoints> enabled!" );
14616 
14617       getDispatcher()->vkCmdSetCheckpointNV( static_cast<VkCommandBuffer>( m_commandBuffer ), pCheckpointMarker );
14618     }
14619 
14620     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV>
getCheckpointDataNV() const14621                                            Queue::getCheckpointDataNV() const VULKAN_HPP_NOEXCEPT
14622     {
14623       VULKAN_HPP_ASSERT(
14624         getDispatcher()->vkGetQueueCheckpointDataNV &&
14625         "Function <vkGetQueueCheckpointDataNV> needs extension <VK_NV_device_diagnostic_checkpoints> enabled!" );
14626 
14627       uint32_t checkpointDataCount;
14628       getDispatcher()->vkGetQueueCheckpointDataNV( static_cast<VkQueue>( m_queue ), &checkpointDataCount, nullptr );
14629       std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV> checkpointData( checkpointDataCount );
14630       getDispatcher()->vkGetQueueCheckpointDataNV( static_cast<VkQueue>( m_queue ),
14631                                                    &checkpointDataCount,
14632                                                    reinterpret_cast<VkCheckpointDataNV *>( checkpointData.data() ) );
14633       VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
14634       return checkpointData;
14635     }
14636 
14637     //=== VK_KHR_timeline_semaphore ===
14638 
getCounterValueKHR() const14639     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Semaphore::getCounterValueKHR() const
14640     {
14641       VULKAN_HPP_ASSERT(
14642         getDispatcher()->vkGetSemaphoreCounterValueKHR &&
14643         "Function <vkGetSemaphoreCounterValueKHR> needs extension <VK_KHR_timeline_semaphore> enabled!" );
14644 
14645       uint64_t                     value;
14646       VULKAN_HPP_NAMESPACE::Result result =
14647         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreCounterValueKHR(
14648           static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), &value ) );
14649       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14650       {
14651         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Semaphore::getCounterValueKHR" );
14652       }
14653       return value;
14654     }
14655 
14656     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
waitSemaphoresKHR(const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo,uint64_t timeout) const14657       Device::waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const
14658     {
14659       VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphoresKHR &&
14660                          "Function <vkWaitSemaphoresKHR> needs extension <VK_KHR_timeline_semaphore> enabled!" );
14661 
14662       VULKAN_HPP_NAMESPACE::Result result =
14663         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkWaitSemaphoresKHR(
14664           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreWaitInfo *>( &waitInfo ), timeout ) );
14665       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
14666            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) )
14667       {
14668         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphoresKHR" );
14669       }
14670       return result;
14671     }
14672 
14673     VULKAN_HPP_INLINE void
signalSemaphoreKHR(const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo) const14674       Device::signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const
14675     {
14676       VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphoreKHR &&
14677                          "Function <vkSignalSemaphoreKHR> needs extension <VK_KHR_timeline_semaphore> enabled!" );
14678 
14679       VULKAN_HPP_NAMESPACE::Result result =
14680         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSignalSemaphoreKHR(
14681           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreSignalInfo *>( &signalInfo ) ) );
14682       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14683       {
14684         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphoreKHR" );
14685       }
14686     }
14687 
14688     //=== VK_INTEL_performance_query ===
14689 
initializePerformanceApiINTEL(const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo) const14690     VULKAN_HPP_INLINE void Device::initializePerformanceApiINTEL(
14691       const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo ) const
14692     {
14693       VULKAN_HPP_ASSERT(
14694         getDispatcher()->vkInitializePerformanceApiINTEL &&
14695         "Function <vkInitializePerformanceApiINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14696 
14697       VULKAN_HPP_NAMESPACE::Result result =
14698         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkInitializePerformanceApiINTEL(
14699           static_cast<VkDevice>( m_device ),
14700           reinterpret_cast<const VkInitializePerformanceApiInfoINTEL *>( &initializeInfo ) ) );
14701       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14702       {
14703         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" );
14704       }
14705     }
14706 
uninitializePerformanceApiINTEL() const14707     VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT
14708     {
14709       VULKAN_HPP_ASSERT(
14710         getDispatcher()->vkUninitializePerformanceApiINTEL &&
14711         "Function <vkUninitializePerformanceApiINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14712 
14713       getDispatcher()->vkUninitializePerformanceApiINTEL( static_cast<VkDevice>( m_device ) );
14714     }
14715 
setPerformanceMarkerINTEL(const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo) const14716     VULKAN_HPP_INLINE void CommandBuffer::setPerformanceMarkerINTEL(
14717       const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo ) const
14718     {
14719       VULKAN_HPP_ASSERT(
14720         getDispatcher()->vkCmdSetPerformanceMarkerINTEL &&
14721         "Function <vkCmdSetPerformanceMarkerINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14722 
14723       VULKAN_HPP_NAMESPACE::Result result =
14724         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceMarkerINTEL(
14725           static_cast<VkCommandBuffer>( m_commandBuffer ),
14726           reinterpret_cast<const VkPerformanceMarkerInfoINTEL *>( &markerInfo ) ) );
14727       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14728       {
14729         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" );
14730       }
14731     }
14732 
setPerformanceStreamMarkerINTEL(const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo) const14733     VULKAN_HPP_INLINE void CommandBuffer::setPerformanceStreamMarkerINTEL(
14734       const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo ) const
14735     {
14736       VULKAN_HPP_ASSERT(
14737         getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL &&
14738         "Function <vkCmdSetPerformanceStreamMarkerINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14739 
14740       VULKAN_HPP_NAMESPACE::Result result =
14741         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL(
14742           static_cast<VkCommandBuffer>( m_commandBuffer ),
14743           reinterpret_cast<const VkPerformanceStreamMarkerInfoINTEL *>( &markerInfo ) ) );
14744       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14745       {
14746         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" );
14747       }
14748     }
14749 
setPerformanceOverrideINTEL(const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo) const14750     VULKAN_HPP_INLINE void CommandBuffer::setPerformanceOverrideINTEL(
14751       const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo ) const
14752     {
14753       VULKAN_HPP_ASSERT(
14754         getDispatcher()->vkCmdSetPerformanceOverrideINTEL &&
14755         "Function <vkCmdSetPerformanceOverrideINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14756 
14757       VULKAN_HPP_NAMESPACE::Result result =
14758         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceOverrideINTEL(
14759           static_cast<VkCommandBuffer>( m_commandBuffer ),
14760           reinterpret_cast<const VkPerformanceOverrideInfoINTEL *>( &overrideInfo ) ) );
14761       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14762       {
14763         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" );
14764       }
14765     }
14766 
14767     VULKAN_HPP_INLINE void
setPerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration) const14768       Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const
14769     {
14770       VULKAN_HPP_ASSERT(
14771         getDispatcher()->vkQueueSetPerformanceConfigurationINTEL &&
14772         "Function <vkQueueSetPerformanceConfigurationINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14773 
14774       VULKAN_HPP_NAMESPACE::Result result =
14775         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL(
14776           static_cast<VkQueue>( m_queue ), static_cast<VkPerformanceConfigurationINTEL>( configuration ) ) );
14777       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14778       {
14779         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" );
14780       }
14781     }
14782 
14783     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PerformanceValueINTEL
getPerformanceParameterINTEL(VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter) const14784       Device::getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter ) const
14785     {
14786       VULKAN_HPP_ASSERT(
14787         getDispatcher()->vkGetPerformanceParameterINTEL &&
14788         "Function <vkGetPerformanceParameterINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14789 
14790       VULKAN_HPP_NAMESPACE::PerformanceValueINTEL value;
14791       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14792         getDispatcher()->vkGetPerformanceParameterINTEL( static_cast<VkDevice>( m_device ),
14793                                                          static_cast<VkPerformanceParameterTypeINTEL>( parameter ),
14794                                                          reinterpret_cast<VkPerformanceValueINTEL *>( &value ) ) );
14795       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14796       {
14797         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" );
14798       }
14799       return value;
14800     }
14801 
14802     //=== VK_AMD_display_native_hdr ===
14803 
14804     VULKAN_HPP_INLINE void
setLocalDimmingAMD(VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable) const14805       SwapchainKHR::setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT
14806     {
14807       VULKAN_HPP_ASSERT( getDispatcher()->vkSetLocalDimmingAMD &&
14808                          "Function <vkSetLocalDimmingAMD> needs extension <VK_AMD_display_native_hdr> enabled!" );
14809 
14810       getDispatcher()->vkSetLocalDimmingAMD( static_cast<VkDevice>( m_device ),
14811                                              static_cast<VkSwapchainKHR>( m_swapchainKHR ),
14812                                              static_cast<VkBool32>( localDimmingEnable ) );
14813     }
14814 
14815     //=== VK_KHR_fragment_shading_rate ===
14816 
14817     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR>
getFragmentShadingRatesKHR() const14818                                            PhysicalDevice::getFragmentShadingRatesKHR() const
14819     {
14820       VULKAN_HPP_ASSERT(
14821         getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR &&
14822         "Function <vkGetPhysicalDeviceFragmentShadingRatesKHR> needs extension <VK_KHR_fragment_shading_rate> enabled!" );
14823 
14824       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR> fragmentShadingRates;
14825       uint32_t                                                                fragmentShadingRateCount;
14826       VULKAN_HPP_NAMESPACE::Result                                            result;
14827       do
14828       {
14829         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR(
14830           static_cast<VkPhysicalDevice>( m_physicalDevice ), &fragmentShadingRateCount, nullptr ) );
14831         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && fragmentShadingRateCount )
14832         {
14833           fragmentShadingRates.resize( fragmentShadingRateCount );
14834           result =
14835             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR(
14836               static_cast<VkPhysicalDevice>( m_physicalDevice ),
14837               &fragmentShadingRateCount,
14838               reinterpret_cast<VkPhysicalDeviceFragmentShadingRateKHR *>( fragmentShadingRates.data() ) ) );
14839           VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() );
14840         }
14841       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14842       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
14843            ( fragmentShadingRateCount < fragmentShadingRates.size() ) )
14844       {
14845         fragmentShadingRates.resize( fragmentShadingRateCount );
14846       }
14847       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14848       {
14849         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" );
14850       }
14851       return fragmentShadingRates;
14852     }
14853 
setFragmentShadingRateKHR(const VULKAN_HPP_NAMESPACE::Extent2D & fragmentSize,const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2]) const14854     VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR(
14855       const VULKAN_HPP_NAMESPACE::Extent2D &                       fragmentSize,
14856       const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT
14857     {
14858       VULKAN_HPP_ASSERT(
14859         getDispatcher()->vkCmdSetFragmentShadingRateKHR &&
14860         "Function <vkCmdSetFragmentShadingRateKHR> needs extension <VK_KHR_fragment_shading_rate> enabled!" );
14861 
14862       getDispatcher()->vkCmdSetFragmentShadingRateKHR(
14863         static_cast<VkCommandBuffer>( m_commandBuffer ),
14864         reinterpret_cast<const VkExtent2D *>( &fragmentSize ),
14865         reinterpret_cast<const VkFragmentShadingRateCombinerOpKHR *>( combinerOps ) );
14866     }
14867 
14868     //=== VK_EXT_buffer_device_address ===
14869 
getBufferAddressEXT(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const14870     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress Device::getBufferAddressEXT(
14871       const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
14872     {
14873       VULKAN_HPP_ASSERT(
14874         getDispatcher()->vkGetBufferDeviceAddressEXT &&
14875         "Function <vkGetBufferDeviceAddressEXT> needs extension <VK_EXT_buffer_device_address> enabled!" );
14876 
14877       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( getDispatcher()->vkGetBufferDeviceAddressEXT(
14878         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) ) );
14879     }
14880 
14881     //=== VK_EXT_tooling_info ===
14882 
14883     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT>
getToolPropertiesEXT() const14884                                            PhysicalDevice::getToolPropertiesEXT() const
14885     {
14886       VULKAN_HPP_ASSERT(
14887         getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT &&
14888         "Function <vkGetPhysicalDeviceToolPropertiesEXT> needs extension <VK_EXT_tooling_info> enabled!" );
14889 
14890       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT> toolProperties;
14891       uint32_t                                                           toolCount;
14892       VULKAN_HPP_NAMESPACE::Result                                       result;
14893       do
14894       {
14895         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT(
14896           static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, nullptr ) );
14897         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && toolCount )
14898         {
14899           toolProperties.resize( toolCount );
14900           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT(
14901             static_cast<VkPhysicalDevice>( m_physicalDevice ),
14902             &toolCount,
14903             reinterpret_cast<VkPhysicalDeviceToolPropertiesEXT *>( toolProperties.data() ) ) );
14904           VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() );
14905         }
14906       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14907       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( toolCount < toolProperties.size() ) )
14908       {
14909         toolProperties.resize( toolCount );
14910       }
14911       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14912       {
14913         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" );
14914       }
14915       return toolProperties;
14916     }
14917 
14918     //=== VK_KHR_present_wait ===
14919 
14920     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
waitForPresent(uint64_t presentId,uint64_t timeout) const14921                                            SwapchainKHR::waitForPresent( uint64_t presentId, uint64_t timeout ) const
14922     {
14923       VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForPresentKHR &&
14924                          "Function <vkWaitForPresentKHR> needs extension <VK_KHR_present_wait> enabled!" );
14925 
14926       VULKAN_HPP_NAMESPACE::Result result =
14927         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkWaitForPresentKHR(
14928           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ), presentId, timeout ) );
14929       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
14930            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) )
14931       {
14932         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::waitForPresent" );
14933       }
14934       return result;
14935     }
14936 
14937     //=== VK_NV_cooperative_matrix ===
14938 
14939     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV>
getCooperativeMatrixPropertiesNV() const14940                                            PhysicalDevice::getCooperativeMatrixPropertiesNV() const
14941     {
14942       VULKAN_HPP_ASSERT(
14943         getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV &&
14944         "Function <vkGetPhysicalDeviceCooperativeMatrixPropertiesNV> needs extension <VK_NV_cooperative_matrix> enabled!" );
14945 
14946       std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV> properties;
14947       uint32_t                                                         propertyCount;
14948       VULKAN_HPP_NAMESPACE::Result                                     result;
14949       do
14950       {
14951         result =
14952           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
14953             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
14954         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
14955         {
14956           properties.resize( propertyCount );
14957           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14958             getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
14959               static_cast<VkPhysicalDevice>( m_physicalDevice ),
14960               &propertyCount,
14961               reinterpret_cast<VkCooperativeMatrixPropertiesNV *>( properties.data() ) ) );
14962           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
14963         }
14964       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14965       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
14966       {
14967         properties.resize( propertyCount );
14968       }
14969       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14970       {
14971         throwResultException( result,
14972                               VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" );
14973       }
14974       return properties;
14975     }
14976 
14977     //=== VK_NV_coverage_reduction_mode ===
14978 
14979     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV>
getSupportedFramebufferMixedSamplesCombinationsNV() const14980                                            PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV() const
14981     {
14982       VULKAN_HPP_ASSERT(
14983         getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV &&
14984         "Function <vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV> needs extension <VK_NV_coverage_reduction_mode> enabled!" );
14985 
14986       std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV> combinations;
14987       uint32_t                                                                combinationCount;
14988       VULKAN_HPP_NAMESPACE::Result                                            result;
14989       do
14990       {
14991         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14992           getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
14993             static_cast<VkPhysicalDevice>( m_physicalDevice ), &combinationCount, nullptr ) );
14994         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && combinationCount )
14995         {
14996           combinations.resize( combinationCount );
14997           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14998             getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
14999               static_cast<VkPhysicalDevice>( m_physicalDevice ),
15000               &combinationCount,
15001               reinterpret_cast<VkFramebufferMixedSamplesCombinationNV *>( combinations.data() ) ) );
15002           VULKAN_HPP_ASSERT( combinationCount <= combinations.size() );
15003         }
15004       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15005       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( combinationCount < combinations.size() ) )
15006       {
15007         combinations.resize( combinationCount );
15008       }
15009       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15010       {
15011         throwResultException(
15012           result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" );
15013       }
15014       return combinations;
15015     }
15016 
15017 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
15018     //=== VK_EXT_full_screen_exclusive ===
15019 
15020     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
getSurfacePresentModes2EXT(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const15021                                            PhysicalDevice::getSurfacePresentModes2EXT(
15022         const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
15023     {
15024       VULKAN_HPP_ASSERT(
15025         getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT &&
15026         "Function <vkGetPhysicalDeviceSurfacePresentModes2EXT> needs extension <VK_EXT_full_screen_exclusive> enabled!" );
15027 
15028       std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR> presentModes;
15029       uint32_t                                          presentModeCount;
15030       VULKAN_HPP_NAMESPACE::Result                      result;
15031       do
15032       {
15033         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT(
15034           static_cast<VkPhysicalDevice>( m_physicalDevice ),
15035           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
15036           &presentModeCount,
15037           nullptr ) );
15038         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentModeCount )
15039         {
15040           presentModes.resize( presentModeCount );
15041           result =
15042             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT(
15043               static_cast<VkPhysicalDevice>( m_physicalDevice ),
15044               reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
15045               &presentModeCount,
15046               reinterpret_cast<VkPresentModeKHR *>( presentModes.data() ) ) );
15047           VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
15048         }
15049       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15050       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( presentModeCount < presentModes.size() ) )
15051       {
15052         presentModes.resize( presentModeCount );
15053       }
15054       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15055       {
15056         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" );
15057       }
15058       return presentModes;
15059     }
15060 
acquireFullScreenExclusiveModeEXT() const15061     VULKAN_HPP_INLINE void SwapchainKHR::acquireFullScreenExclusiveModeEXT() const
15062     {
15063       VULKAN_HPP_ASSERT(
15064         getDispatcher()->vkAcquireFullScreenExclusiveModeEXT &&
15065         "Function <vkAcquireFullScreenExclusiveModeEXT> needs extension <VK_EXT_full_screen_exclusive> enabled!" );
15066 
15067       VULKAN_HPP_NAMESPACE::Result result =
15068         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireFullScreenExclusiveModeEXT(
15069           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
15070       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15071       {
15072         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::acquireFullScreenExclusiveModeEXT" );
15073       }
15074     }
15075 
releaseFullScreenExclusiveModeEXT() const15076     VULKAN_HPP_INLINE void SwapchainKHR::releaseFullScreenExclusiveModeEXT() const
15077     {
15078       VULKAN_HPP_ASSERT(
15079         getDispatcher()->vkReleaseFullScreenExclusiveModeEXT &&
15080         "Function <vkReleaseFullScreenExclusiveModeEXT> needs extension <VK_EXT_full_screen_exclusive> enabled!" );
15081 
15082       VULKAN_HPP_NAMESPACE::Result result =
15083         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkReleaseFullScreenExclusiveModeEXT(
15084           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
15085       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15086       {
15087         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::releaseFullScreenExclusiveModeEXT" );
15088       }
15089     }
15090 
15091     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
getGroupSurfacePresentModes2EXT(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const15092                                            Device::getGroupSurfacePresentModes2EXT(
15093         const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
15094     {
15095       VULKAN_HPP_ASSERT(
15096         getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT &&
15097         "Function <vkGetDeviceGroupSurfacePresentModes2EXT> needs extension <VK_EXT_full_screen_exclusive> enabled!" );
15098 
15099       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes;
15100       VULKAN_HPP_NAMESPACE::Result                         result =
15101         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT(
15102           static_cast<VkDevice>( m_device ),
15103           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
15104           reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR *>( &modes ) ) );
15105       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15106       {
15107         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" );
15108       }
15109       return modes;
15110     }
15111 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
15112 
15113     //=== VK_KHR_buffer_device_address ===
15114 
getBufferAddressKHR(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const15115     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress Device::getBufferAddressKHR(
15116       const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
15117     {
15118       VULKAN_HPP_ASSERT(
15119         getDispatcher()->vkGetBufferDeviceAddressKHR &&
15120         "Function <vkGetBufferDeviceAddressKHR> needs extension <VK_KHR_buffer_device_address> enabled!" );
15121 
15122       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( getDispatcher()->vkGetBufferDeviceAddressKHR(
15123         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) ) );
15124     }
15125 
getBufferOpaqueCaptureAddressKHR(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const15126     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR(
15127       const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
15128     {
15129       VULKAN_HPP_ASSERT(
15130         getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR &&
15131         "Function <vkGetBufferOpaqueCaptureAddressKHR> needs extension <VK_KHR_buffer_device_address> enabled!" );
15132 
15133       return getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR(
15134         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
15135     }
15136 
getMemoryOpaqueCaptureAddressKHR(const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info) const15137     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddressKHR(
15138       const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
15139     {
15140       VULKAN_HPP_ASSERT(
15141         getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR &&
15142         "Function <vkGetDeviceMemoryOpaqueCaptureAddressKHR> needs extension <VK_KHR_buffer_device_address> enabled!" );
15143 
15144       return getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR(
15145         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( &info ) );
15146     }
15147 
15148     //=== VK_EXT_line_rasterization ===
15149 
setLineStippleEXT(uint32_t lineStippleFactor,uint16_t lineStipplePattern) const15150     VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor,
15151                                                              uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT
15152     {
15153       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEXT &&
15154                          "Function <vkCmdSetLineStippleEXT> needs extension <VK_EXT_line_rasterization> enabled!" );
15155 
15156       getDispatcher()->vkCmdSetLineStippleEXT(
15157         static_cast<VkCommandBuffer>( m_commandBuffer ), lineStippleFactor, lineStipplePattern );
15158     }
15159 
15160     //=== VK_EXT_host_query_reset ===
15161 
resetEXT(uint32_t firstQuery,uint32_t queryCount) const15162     VULKAN_HPP_INLINE void QueryPool::resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
15163     {
15164       VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPoolEXT &&
15165                          "Function <vkResetQueryPoolEXT> needs extension <VK_EXT_host_query_reset> enabled!" );
15166 
15167       getDispatcher()->vkResetQueryPoolEXT(
15168         static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), firstQuery, queryCount );
15169     }
15170 
15171     //=== VK_EXT_extended_dynamic_state ===
15172 
15173     VULKAN_HPP_INLINE void
setCullModeEXT(VULKAN_HPP_NAMESPACE::CullModeFlags cullMode) const15174       CommandBuffer::setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT
15175     {
15176       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullModeEXT &&
15177                          "Function <vkCmdSetCullModeEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15178 
15179       getDispatcher()->vkCmdSetCullModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15180                                             static_cast<VkCullModeFlags>( cullMode ) );
15181     }
15182 
15183     VULKAN_HPP_INLINE void
setFrontFaceEXT(VULKAN_HPP_NAMESPACE::FrontFace frontFace) const15184       CommandBuffer::setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT
15185     {
15186       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFaceEXT &&
15187                          "Function <vkCmdSetFrontFaceEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15188 
15189       getDispatcher()->vkCmdSetFrontFaceEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15190                                              static_cast<VkFrontFace>( frontFace ) );
15191     }
15192 
setPrimitiveTopologyEXT(VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology) const15193     VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopologyEXT(
15194       VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT
15195     {
15196       VULKAN_HPP_ASSERT(
15197         getDispatcher()->vkCmdSetPrimitiveTopologyEXT &&
15198         "Function <vkCmdSetPrimitiveTopologyEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15199 
15200       getDispatcher()->vkCmdSetPrimitiveTopologyEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15201                                                      static_cast<VkPrimitiveTopology>( primitiveTopology ) );
15202     }
15203 
setViewportWithCountEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports) const15204     VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT(
15205       ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
15206     {
15207       VULKAN_HPP_ASSERT(
15208         getDispatcher()->vkCmdSetViewportWithCountEXT &&
15209         "Function <vkCmdSetViewportWithCountEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15210 
15211       getDispatcher()->vkCmdSetViewportWithCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15212                                                      viewports.size(),
15213                                                      reinterpret_cast<const VkViewport *>( viewports.data() ) );
15214     }
15215 
setScissorWithCountEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors) const15216     VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT(
15217       ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
15218     {
15219       VULKAN_HPP_ASSERT(
15220         getDispatcher()->vkCmdSetScissorWithCountEXT &&
15221         "Function <vkCmdSetScissorWithCountEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15222 
15223       getDispatcher()->vkCmdSetScissorWithCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15224                                                     scissors.size(),
15225                                                     reinterpret_cast<const VkRect2D *>( scissors.data() ) );
15226     }
15227 
bindVertexBuffers2EXT(uint32_t firstBinding,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides) const15228     VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT(
15229       uint32_t                                                   firstBinding,
15230       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
15231       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
15232       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes,
15233       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15234     {
15235       VULKAN_HPP_ASSERT(
15236         getDispatcher()->vkCmdBindVertexBuffers2EXT &&
15237         "Function <vkCmdBindVertexBuffers2EXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15238 
15239 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
15240       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
15241       VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
15242       VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() );
15243 #  else
15244       if ( buffers.size() != offsets.size() )
15245       {
15246         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
15247                           "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != offsets.size()" );
15248       }
15249       if ( !sizes.empty() && buffers.size() != sizes.size() )
15250       {
15251         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
15252                           "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != sizes.size()" );
15253       }
15254       if ( !strides.empty() && buffers.size() != strides.size() )
15255       {
15256         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
15257                           "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != strides.size()" );
15258       }
15259 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
15260 
15261       getDispatcher()->vkCmdBindVertexBuffers2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15262                                                    firstBinding,
15263                                                    buffers.size(),
15264                                                    reinterpret_cast<const VkBuffer *>( buffers.data() ),
15265                                                    reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
15266                                                    reinterpret_cast<const VkDeviceSize *>( sizes.data() ),
15267                                                    reinterpret_cast<const VkDeviceSize *>( strides.data() ) );
15268     }
15269 
15270     VULKAN_HPP_INLINE void
setDepthTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable) const15271       CommandBuffer::setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT
15272     {
15273       VULKAN_HPP_ASSERT(
15274         getDispatcher()->vkCmdSetDepthTestEnableEXT &&
15275         "Function <vkCmdSetDepthTestEnableEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15276 
15277       getDispatcher()->vkCmdSetDepthTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15278                                                    static_cast<VkBool32>( depthTestEnable ) );
15279     }
15280 
15281     VULKAN_HPP_INLINE void
setDepthWriteEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable) const15282       CommandBuffer::setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT
15283     {
15284       VULKAN_HPP_ASSERT(
15285         getDispatcher()->vkCmdSetDepthWriteEnableEXT &&
15286         "Function <vkCmdSetDepthWriteEnableEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15287 
15288       getDispatcher()->vkCmdSetDepthWriteEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15289                                                     static_cast<VkBool32>( depthWriteEnable ) );
15290     }
15291 
15292     VULKAN_HPP_INLINE void
setDepthCompareOpEXT(VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp) const15293       CommandBuffer::setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT
15294     {
15295       VULKAN_HPP_ASSERT(
15296         getDispatcher()->vkCmdSetDepthCompareOpEXT &&
15297         "Function <vkCmdSetDepthCompareOpEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15298 
15299       getDispatcher()->vkCmdSetDepthCompareOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15300                                                   static_cast<VkCompareOp>( depthCompareOp ) );
15301     }
15302 
setDepthBoundsTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable) const15303     VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT(
15304       VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT
15305     {
15306       VULKAN_HPP_ASSERT(
15307         getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT &&
15308         "Function <vkCmdSetDepthBoundsTestEnableEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15309 
15310       getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15311                                                          static_cast<VkBool32>( depthBoundsTestEnable ) );
15312     }
15313 
15314     VULKAN_HPP_INLINE void
setStencilTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable) const15315       CommandBuffer::setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT
15316     {
15317       VULKAN_HPP_ASSERT(
15318         getDispatcher()->vkCmdSetStencilTestEnableEXT &&
15319         "Function <vkCmdSetStencilTestEnableEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15320 
15321       getDispatcher()->vkCmdSetStencilTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15322                                                      static_cast<VkBool32>( stencilTestEnable ) );
15323     }
15324 
15325     VULKAN_HPP_INLINE void
setStencilOpEXT(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,VULKAN_HPP_NAMESPACE::StencilOp failOp,VULKAN_HPP_NAMESPACE::StencilOp passOp,VULKAN_HPP_NAMESPACE::StencilOp depthFailOp,VULKAN_HPP_NAMESPACE::CompareOp compareOp) const15326       CommandBuffer::setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
15327                                       VULKAN_HPP_NAMESPACE::StencilOp        failOp,
15328                                       VULKAN_HPP_NAMESPACE::StencilOp        passOp,
15329                                       VULKAN_HPP_NAMESPACE::StencilOp        depthFailOp,
15330                                       VULKAN_HPP_NAMESPACE::CompareOp        compareOp ) const VULKAN_HPP_NOEXCEPT
15331     {
15332       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOpEXT &&
15333                          "Function <vkCmdSetStencilOpEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15334 
15335       getDispatcher()->vkCmdSetStencilOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15336                                              static_cast<VkStencilFaceFlags>( faceMask ),
15337                                              static_cast<VkStencilOp>( failOp ),
15338                                              static_cast<VkStencilOp>( passOp ),
15339                                              static_cast<VkStencilOp>( depthFailOp ),
15340                                              static_cast<VkCompareOp>( compareOp ) );
15341     }
15342 
15343     //=== VK_KHR_deferred_host_operations ===
15344 
getMaxConcurrency() const15345     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t DeferredOperationKHR::getMaxConcurrency() const VULKAN_HPP_NOEXCEPT
15346     {
15347       VULKAN_HPP_ASSERT(
15348         getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR &&
15349         "Function <vkGetDeferredOperationMaxConcurrencyKHR> needs extension <VK_KHR_deferred_host_operations> enabled!" );
15350 
15351       return getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR(
15352         static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) );
15353     }
15354 
15355     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
getResult() const15356                                            DeferredOperationKHR::getResult() const VULKAN_HPP_NOEXCEPT
15357     {
15358       VULKAN_HPP_ASSERT(
15359         getDispatcher()->vkGetDeferredOperationResultKHR &&
15360         "Function <vkGetDeferredOperationResultKHR> needs extension <VK_KHR_deferred_host_operations> enabled!" );
15361 
15362       return static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeferredOperationResultKHR(
15363         static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) ) );
15364     }
15365 
join() const15366     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result DeferredOperationKHR::join() const
15367     {
15368       VULKAN_HPP_ASSERT(
15369         getDispatcher()->vkDeferredOperationJoinKHR &&
15370         "Function <vkDeferredOperationJoinKHR> needs extension <VK_KHR_deferred_host_operations> enabled!" );
15371 
15372       VULKAN_HPP_NAMESPACE::Result result =
15373         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDeferredOperationJoinKHR(
15374           static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) ) );
15375       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
15376            ( result != VULKAN_HPP_NAMESPACE::Result::eThreadDoneKHR ) &&
15377            ( result != VULKAN_HPP_NAMESPACE::Result::eThreadIdleKHR ) )
15378       {
15379         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeferredOperationKHR::join" );
15380       }
15381       return result;
15382     }
15383 
15384     //=== VK_KHR_pipeline_executable_properties ===
15385 
15386     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>
getPipelineExecutablePropertiesKHR(const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo) const15387       Device::getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo ) const
15388     {
15389       VULKAN_HPP_ASSERT(
15390         getDispatcher()->vkGetPipelineExecutablePropertiesKHR &&
15391         "Function <vkGetPipelineExecutablePropertiesKHR> needs extension <VK_KHR_pipeline_executable_properties> enabled!" );
15392 
15393       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR> properties;
15394       uint32_t                                                           executableCount;
15395       VULKAN_HPP_NAMESPACE::Result                                       result;
15396       do
15397       {
15398         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutablePropertiesKHR(
15399           static_cast<VkDevice>( m_device ),
15400           reinterpret_cast<const VkPipelineInfoKHR *>( &pipelineInfo ),
15401           &executableCount,
15402           nullptr ) );
15403         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && executableCount )
15404         {
15405           properties.resize( executableCount );
15406           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutablePropertiesKHR(
15407             static_cast<VkDevice>( m_device ),
15408             reinterpret_cast<const VkPipelineInfoKHR *>( &pipelineInfo ),
15409             &executableCount,
15410             reinterpret_cast<VkPipelineExecutablePropertiesKHR *>( properties.data() ) ) );
15411           VULKAN_HPP_ASSERT( executableCount <= properties.size() );
15412         }
15413       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15414       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( executableCount < properties.size() ) )
15415       {
15416         properties.resize( executableCount );
15417       }
15418       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15419       {
15420         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" );
15421       }
15422       return properties;
15423     }
15424 
15425     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR>
getPipelineExecutableStatisticsKHR(const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo) const15426                                            Device::getPipelineExecutableStatisticsKHR(
15427         const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const
15428     {
15429       VULKAN_HPP_ASSERT(
15430         getDispatcher()->vkGetPipelineExecutableStatisticsKHR &&
15431         "Function <vkGetPipelineExecutableStatisticsKHR> needs extension <VK_KHR_pipeline_executable_properties> enabled!" );
15432 
15433       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR> statistics;
15434       uint32_t                                                          statisticCount;
15435       VULKAN_HPP_NAMESPACE::Result                                      result;
15436       do
15437       {
15438         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutableStatisticsKHR(
15439           static_cast<VkDevice>( m_device ),
15440           reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
15441           &statisticCount,
15442           nullptr ) );
15443         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && statisticCount )
15444         {
15445           statistics.resize( statisticCount );
15446           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutableStatisticsKHR(
15447             static_cast<VkDevice>( m_device ),
15448             reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
15449             &statisticCount,
15450             reinterpret_cast<VkPipelineExecutableStatisticKHR *>( statistics.data() ) ) );
15451           VULKAN_HPP_ASSERT( statisticCount <= statistics.size() );
15452         }
15453       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15454       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( statisticCount < statistics.size() ) )
15455       {
15456         statistics.resize( statisticCount );
15457       }
15458       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15459       {
15460         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" );
15461       }
15462       return statistics;
15463     }
15464 
15465     VULKAN_HPP_NODISCARD
15466       VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>
getPipelineExecutableInternalRepresentationsKHR(const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo) const15467                         Device::getPipelineExecutableInternalRepresentationsKHR(
15468         const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const
15469     {
15470       VULKAN_HPP_ASSERT(
15471         getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR &&
15472         "Function <vkGetPipelineExecutableInternalRepresentationsKHR> needs extension <VK_KHR_pipeline_executable_properties> enabled!" );
15473 
15474       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR> internalRepresentations;
15475       uint32_t                                                                       internalRepresentationCount;
15476       VULKAN_HPP_NAMESPACE::Result                                                   result;
15477       do
15478       {
15479         result =
15480           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR(
15481             static_cast<VkDevice>( m_device ),
15482             reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
15483             &internalRepresentationCount,
15484             nullptr ) );
15485         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && internalRepresentationCount )
15486         {
15487           internalRepresentations.resize( internalRepresentationCount );
15488           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15489             getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR(
15490               static_cast<VkDevice>( m_device ),
15491               reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
15492               &internalRepresentationCount,
15493               reinterpret_cast<VkPipelineExecutableInternalRepresentationKHR *>( internalRepresentations.data() ) ) );
15494           VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() );
15495         }
15496       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15497       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
15498            ( internalRepresentationCount < internalRepresentations.size() ) )
15499       {
15500         internalRepresentations.resize( internalRepresentationCount );
15501       }
15502       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15503       {
15504         throwResultException( result,
15505                               VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableInternalRepresentationsKHR" );
15506       }
15507       return internalRepresentations;
15508     }
15509 
15510     //=== VK_NV_device_generated_commands ===
15511 
15512     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getGeneratedCommandsMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info) const15513                                            Device::getGeneratedCommandsMemoryRequirementsNV(
15514         const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
15515     {
15516       VULKAN_HPP_ASSERT(
15517         getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV &&
15518         "Function <vkGetGeneratedCommandsMemoryRequirementsNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15519 
15520       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
15521       getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV(
15522         static_cast<VkDevice>( m_device ),
15523         reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( &info ),
15524         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
15525       return memoryRequirements;
15526     }
15527 
15528     template <typename X, typename Y, typename... Z>
getGeneratedCommandsMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info) const15529     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getGeneratedCommandsMemoryRequirementsNV(
15530       const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
15531     {
15532       VULKAN_HPP_ASSERT(
15533         getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV &&
15534         "Function <vkGetGeneratedCommandsMemoryRequirementsNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15535 
15536       StructureChain<X, Y, Z...>                  structureChain;
15537       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
15538         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
15539       getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV(
15540         static_cast<VkDevice>( m_device ),
15541         reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( &info ),
15542         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
15543       return structureChain;
15544     }
15545 
preprocessGeneratedCommandsNV(const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo) const15546     VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV(
15547       const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
15548     {
15549       VULKAN_HPP_ASSERT(
15550         getDispatcher()->vkCmdPreprocessGeneratedCommandsNV &&
15551         "Function <vkCmdPreprocessGeneratedCommandsNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15552 
15553       getDispatcher()->vkCmdPreprocessGeneratedCommandsNV(
15554         static_cast<VkCommandBuffer>( m_commandBuffer ),
15555         reinterpret_cast<const VkGeneratedCommandsInfoNV *>( &generatedCommandsInfo ) );
15556     }
15557 
executeGeneratedCommandsNV(VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed,const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo) const15558     VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV(
15559       VULKAN_HPP_NAMESPACE::Bool32                          isPreprocessed,
15560       const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
15561     {
15562       VULKAN_HPP_ASSERT(
15563         getDispatcher()->vkCmdExecuteGeneratedCommandsNV &&
15564         "Function <vkCmdExecuteGeneratedCommandsNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15565 
15566       getDispatcher()->vkCmdExecuteGeneratedCommandsNV(
15567         static_cast<VkCommandBuffer>( m_commandBuffer ),
15568         static_cast<VkBool32>( isPreprocessed ),
15569         reinterpret_cast<const VkGeneratedCommandsInfoNV *>( &generatedCommandsInfo ) );
15570     }
15571 
15572     VULKAN_HPP_INLINE void
bindPipelineShaderGroupNV(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::Pipeline pipeline,uint32_t groupIndex) const15573       CommandBuffer::bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
15574                                                 VULKAN_HPP_NAMESPACE::Pipeline          pipeline,
15575                                                 uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT
15576     {
15577       VULKAN_HPP_ASSERT(
15578         getDispatcher()->vkCmdBindPipelineShaderGroupNV &&
15579         "Function <vkCmdBindPipelineShaderGroupNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15580 
15581       getDispatcher()->vkCmdBindPipelineShaderGroupNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
15582                                                        static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
15583                                                        static_cast<VkPipeline>( pipeline ),
15584                                                        groupIndex );
15585     }
15586 
15587     //=== VK_EXT_acquire_drm_display ===
15588 
acquireDrmDisplayEXT(int32_t drmFd,VULKAN_HPP_NAMESPACE::DisplayKHR display) const15589     VULKAN_HPP_INLINE void PhysicalDevice::acquireDrmDisplayEXT( int32_t                          drmFd,
15590                                                                  VULKAN_HPP_NAMESPACE::DisplayKHR display ) const
15591     {
15592       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireDrmDisplayEXT &&
15593                          "Function <vkAcquireDrmDisplayEXT> needs extension <VK_EXT_acquire_drm_display> enabled!" );
15594 
15595       VULKAN_HPP_NAMESPACE::Result result =
15596         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireDrmDisplayEXT(
15597           static_cast<VkPhysicalDevice>( m_physicalDevice ), drmFd, static_cast<VkDisplayKHR>( display ) ) );
15598       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15599       {
15600         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireDrmDisplayEXT" );
15601       }
15602     }
15603 
15604     //=== VK_EXT_private_data ===
15605 
setPrivateDataEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_,uint64_t objectHandle,VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot,uint64_t data) const15606     VULKAN_HPP_INLINE void Device::setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType         objectType_,
15607                                                       uint64_t                                 objectHandle,
15608                                                       VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot,
15609                                                       uint64_t                                 data ) const
15610     {
15611       VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateDataEXT &&
15612                          "Function <vkSetPrivateDataEXT> needs extension <VK_EXT_private_data> enabled!" );
15613 
15614       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15615         getDispatcher()->vkSetPrivateDataEXT( static_cast<VkDevice>( m_device ),
15616                                               static_cast<VkObjectType>( objectType_ ),
15617                                               objectHandle,
15618                                               static_cast<VkPrivateDataSlotEXT>( privateDataSlot ),
15619                                               data ) );
15620       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15621       {
15622         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateDataEXT" );
15623       }
15624     }
15625 
15626     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getPrivateDataEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_,uint64_t objectHandle,VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot) const15627       Device::getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType         objectType_,
15628                                  uint64_t                                 objectHandle,
15629                                  VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot ) const VULKAN_HPP_NOEXCEPT
15630     {
15631       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateDataEXT &&
15632                          "Function <vkGetPrivateDataEXT> needs extension <VK_EXT_private_data> enabled!" );
15633 
15634       uint64_t data;
15635       getDispatcher()->vkGetPrivateDataEXT( static_cast<VkDevice>( m_device ),
15636                                             static_cast<VkObjectType>( objectType_ ),
15637                                             objectHandle,
15638                                             static_cast<VkPrivateDataSlotEXT>( privateDataSlot ),
15639                                             &data );
15640       return data;
15641     }
15642 
15643 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
15644     //=== VK_KHR_video_encode_queue ===
15645 
encodeVideoKHR(const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo) const15646     VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR(
15647       const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT
15648     {
15649       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEncodeVideoKHR &&
15650                          "Function <vkCmdEncodeVideoKHR> needs extension <VK_KHR_video_encode_queue> enabled!" );
15651 
15652       getDispatcher()->vkCmdEncodeVideoKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15653                                             reinterpret_cast<const VkVideoEncodeInfoKHR *>( &encodeInfo ) );
15654     }
15655 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
15656 
15657     //=== VK_KHR_synchronization2 ===
15658 
setEvent2KHR(VULKAN_HPP_NAMESPACE::Event event,const VULKAN_HPP_NAMESPACE::DependencyInfoKHR & dependencyInfo) const15659     VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR(
15660       VULKAN_HPP_NAMESPACE::Event                     event,
15661       const VULKAN_HPP_NAMESPACE::DependencyInfoKHR & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
15662     {
15663       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2KHR &&
15664                          "Function <vkCmdSetEvent2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15665 
15666       getDispatcher()->vkCmdSetEvent2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15667                                           static_cast<VkEvent>( event ),
15668                                           reinterpret_cast<const VkDependencyInfoKHR *>( &dependencyInfo ) );
15669     }
15670 
15671     VULKAN_HPP_INLINE void
resetEvent2KHR(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask) const15672       CommandBuffer::resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event                  event,
15673                                      VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask ) const VULKAN_HPP_NOEXCEPT
15674     {
15675       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2KHR &&
15676                          "Function <vkCmdResetEvent2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15677 
15678       getDispatcher()->vkCmdResetEvent2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15679                                             static_cast<VkEvent>( event ),
15680                                             static_cast<VkPipelineStageFlags2KHR>( stageMask ) );
15681     }
15682 
15683     VULKAN_HPP_INLINE void
waitEvents2KHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfoKHR> const & dependencyInfos) const15684       CommandBuffer::waitEvents2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &             events,
15685                                      ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfoKHR> const & dependencyInfos )
15686         const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15687     {
15688       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2KHR &&
15689                          "Function <vkCmdWaitEvents2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15690 
15691 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
15692       VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() );
15693 #  else
15694       if ( events.size() != dependencyInfos.size() )
15695       {
15696         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
15697                           "::CommandBuffer::waitEvents2KHR: events.size() != dependencyInfos.size()" );
15698       }
15699 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
15700 
15701       getDispatcher()->vkCmdWaitEvents2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15702                                             events.size(),
15703                                             reinterpret_cast<const VkEvent *>( events.data() ),
15704                                             reinterpret_cast<const VkDependencyInfoKHR *>( dependencyInfos.data() ) );
15705     }
15706 
pipelineBarrier2KHR(const VULKAN_HPP_NAMESPACE::DependencyInfoKHR & dependencyInfo) const15707     VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR(
15708       const VULKAN_HPP_NAMESPACE::DependencyInfoKHR & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
15709     {
15710       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2KHR &&
15711                          "Function <vkCmdPipelineBarrier2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15712 
15713       getDispatcher()->vkCmdPipelineBarrier2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15714                                                  reinterpret_cast<const VkDependencyInfoKHR *>( &dependencyInfo ) );
15715     }
15716 
writeTimestamp2KHR(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const15717     VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,
15718                                                               VULKAN_HPP_NAMESPACE::QueryPool              queryPool,
15719                                                               uint32_t query ) const VULKAN_HPP_NOEXCEPT
15720     {
15721       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2KHR &&
15722                          "Function <vkCmdWriteTimestamp2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15723 
15724       getDispatcher()->vkCmdWriteTimestamp2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15725                                                 static_cast<VkPipelineStageFlags2KHR>( stage ),
15726                                                 static_cast<VkQueryPool>( queryPool ),
15727                                                 query );
15728     }
15729 
submit2KHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2KHR> const & submits,VULKAN_HPP_NAMESPACE::Fence fence) const15730     VULKAN_HPP_INLINE void Queue::submit2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2KHR> const & submits,
15731                                               VULKAN_HPP_NAMESPACE::Fence fence ) const
15732     {
15733       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2KHR &&
15734                          "Function <vkQueueSubmit2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15735 
15736       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15737         getDispatcher()->vkQueueSubmit2KHR( static_cast<VkQueue>( m_queue ),
15738                                             submits.size(),
15739                                             reinterpret_cast<const VkSubmitInfo2KHR *>( submits.data() ),
15740                                             static_cast<VkFence>( fence ) ) );
15741       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15742       {
15743         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2KHR" );
15744       }
15745     }
15746 
writeBufferMarker2AMD(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,uint32_t marker) const15747     VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,
15748                                                                  VULKAN_HPP_NAMESPACE::Buffer                 dstBuffer,
15749                                                                  VULKAN_HPP_NAMESPACE::DeviceSize             dstOffset,
15750                                                                  uint32_t marker ) const VULKAN_HPP_NOEXCEPT
15751     {
15752       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarker2AMD &&
15753                          "Function <vkCmdWriteBufferMarker2AMD> needs extension <VK_KHR_synchronization2> enabled!" );
15754 
15755       getDispatcher()->vkCmdWriteBufferMarker2AMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
15756                                                    static_cast<VkPipelineStageFlags2KHR>( stage ),
15757                                                    static_cast<VkBuffer>( dstBuffer ),
15758                                                    static_cast<VkDeviceSize>( dstOffset ),
15759                                                    marker );
15760     }
15761 
15762     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV>
getCheckpointData2NV() const15763                                            Queue::getCheckpointData2NV() const VULKAN_HPP_NOEXCEPT
15764     {
15765       VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointData2NV &&
15766                          "Function <vkGetQueueCheckpointData2NV> needs extension <VK_KHR_synchronization2> enabled!" );
15767 
15768       uint32_t checkpointDataCount;
15769       getDispatcher()->vkGetQueueCheckpointData2NV( static_cast<VkQueue>( m_queue ), &checkpointDataCount, nullptr );
15770       std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV> checkpointData( checkpointDataCount );
15771       getDispatcher()->vkGetQueueCheckpointData2NV( static_cast<VkQueue>( m_queue ),
15772                                                     &checkpointDataCount,
15773                                                     reinterpret_cast<VkCheckpointData2NV *>( checkpointData.data() ) );
15774       VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
15775       return checkpointData;
15776     }
15777 
15778     //=== VK_NV_fragment_shading_rate_enums ===
15779 
setFragmentShadingRateEnumNV(VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate,const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2]) const15780     VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateEnumNV(
15781       VULKAN_HPP_NAMESPACE::FragmentShadingRateNV                  shadingRate,
15782       const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT
15783     {
15784       VULKAN_HPP_ASSERT(
15785         getDispatcher()->vkCmdSetFragmentShadingRateEnumNV &&
15786         "Function <vkCmdSetFragmentShadingRateEnumNV> needs extension <VK_NV_fragment_shading_rate_enums> enabled!" );
15787 
15788       getDispatcher()->vkCmdSetFragmentShadingRateEnumNV(
15789         static_cast<VkCommandBuffer>( m_commandBuffer ),
15790         static_cast<VkFragmentShadingRateNV>( shadingRate ),
15791         reinterpret_cast<const VkFragmentShadingRateCombinerOpKHR *>( combinerOps ) );
15792     }
15793 
15794     //=== VK_KHR_copy_commands2 ===
15795 
copyBuffer2KHR(const VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR & copyBufferInfo) const15796     VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR(
15797       const VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT
15798     {
15799       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2KHR &&
15800                          "Function <vkCmdCopyBuffer2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15801 
15802       getDispatcher()->vkCmdCopyBuffer2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15803                                             reinterpret_cast<const VkCopyBufferInfo2KHR *>( &copyBufferInfo ) );
15804     }
15805 
copyImage2KHR(const VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR & copyImageInfo) const15806     VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR(
15807       const VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR & copyImageInfo ) const VULKAN_HPP_NOEXCEPT
15808     {
15809       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2KHR &&
15810                          "Function <vkCmdCopyImage2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15811 
15812       getDispatcher()->vkCmdCopyImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15813                                            reinterpret_cast<const VkCopyImageInfo2KHR *>( &copyImageInfo ) );
15814     }
15815 
copyBufferToImage2KHR(const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR & copyBufferToImageInfo) const15816     VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR(
15817       const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT
15818     {
15819       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2KHR &&
15820                          "Function <vkCmdCopyBufferToImage2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15821 
15822       getDispatcher()->vkCmdCopyBufferToImage2KHR(
15823         static_cast<VkCommandBuffer>( m_commandBuffer ),
15824         reinterpret_cast<const VkCopyBufferToImageInfo2KHR *>( &copyBufferToImageInfo ) );
15825     }
15826 
copyImageToBuffer2KHR(const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR & copyImageToBufferInfo) const15827     VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR(
15828       const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT
15829     {
15830       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2KHR &&
15831                          "Function <vkCmdCopyImageToBuffer2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15832 
15833       getDispatcher()->vkCmdCopyImageToBuffer2KHR(
15834         static_cast<VkCommandBuffer>( m_commandBuffer ),
15835         reinterpret_cast<const VkCopyImageToBufferInfo2KHR *>( &copyImageToBufferInfo ) );
15836     }
15837 
blitImage2KHR(const VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR & blitImageInfo) const15838     VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR(
15839       const VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR & blitImageInfo ) const VULKAN_HPP_NOEXCEPT
15840     {
15841       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2KHR &&
15842                          "Function <vkCmdBlitImage2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15843 
15844       getDispatcher()->vkCmdBlitImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15845                                            reinterpret_cast<const VkBlitImageInfo2KHR *>( &blitImageInfo ) );
15846     }
15847 
resolveImage2KHR(const VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR & resolveImageInfo) const15848     VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR(
15849       const VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT
15850     {
15851       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2KHR &&
15852                          "Function <vkCmdResolveImage2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15853 
15854       getDispatcher()->vkCmdResolveImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15855                                               reinterpret_cast<const VkResolveImageInfo2KHR *>( &resolveImageInfo ) );
15856     }
15857 
15858 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
15859     //=== VK_NV_acquire_winrt_display ===
15860 
acquireWinrtNV() const15861     VULKAN_HPP_INLINE void DisplayKHR::acquireWinrtNV() const
15862     {
15863       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireWinrtDisplayNV &&
15864                          "Function <vkAcquireWinrtDisplayNV> needs extension <VK_NV_acquire_winrt_display> enabled!" );
15865 
15866       VULKAN_HPP_NAMESPACE::Result result =
15867         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireWinrtDisplayNV(
15868           static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_displayKHR ) ) );
15869       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15870       {
15871         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::acquireWinrtNV" );
15872       }
15873     }
15874 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
15875 
15876 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
15877     //=== VK_EXT_directfb_surface ===
15878 
15879     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getDirectFBPresentationSupportEXT(uint32_t queueFamilyIndex,IDirectFB & dfb) const15880                                            PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t    queueFamilyIndex,
15881                                                          IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT
15882     {
15883       VULKAN_HPP_ASSERT(
15884         getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT &&
15885         "Function <vkGetPhysicalDeviceDirectFBPresentationSupportEXT> needs extension <VK_EXT_directfb_surface> enabled!" );
15886 
15887       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>(
15888         getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
15889           static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &dfb ) );
15890     }
15891 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
15892 
15893     //=== VK_KHR_ray_tracing_pipeline ===
15894 
traceRaysKHR(const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,uint32_t width,uint32_t height,uint32_t depth) const15895     VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR(
15896       const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
15897       const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,
15898       const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,
15899       const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,
15900       uint32_t                                                    width,
15901       uint32_t                                                    height,
15902       uint32_t                                                    depth ) const VULKAN_HPP_NOEXCEPT
15903     {
15904       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysKHR &&
15905                          "Function <vkCmdTraceRaysKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15906 
15907       getDispatcher()->vkCmdTraceRaysKHR(
15908         static_cast<VkCommandBuffer>( m_commandBuffer ),
15909         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &raygenShaderBindingTable ),
15910         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &missShaderBindingTable ),
15911         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &hitShaderBindingTable ),
15912         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &callableShaderBindingTable ),
15913         width,
15914         height,
15915         depth );
15916     }
15917 
15918     template <typename T>
15919     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T>
getRayTracingShaderGroupHandlesKHR(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const15920       Pipeline::getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
15921     {
15922       VULKAN_HPP_ASSERT(
15923         getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR &&
15924         "Function <vkGetRayTracingShaderGroupHandlesKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15925 
15926       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
15927       std::vector<T> data( dataSize / sizeof( T ) );
15928       Result         result = static_cast<Result>(
15929         getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
15930                                                                static_cast<VkPipeline>( m_pipeline ),
15931                                                                firstGroup,
15932                                                                groupCount,
15933                                                                data.size() * sizeof( T ),
15934                                                                reinterpret_cast<void *>( data.data() ) ) );
15935       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15936       {
15937         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesKHR" );
15938       }
15939       return data;
15940     }
15941 
15942     template <typename T>
getRayTracingShaderGroupHandleKHR(uint32_t firstGroup,uint32_t groupCount) const15943     VULKAN_HPP_NODISCARD T Pipeline::getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const
15944     {
15945       T      data;
15946       Result result = static_cast<Result>(
15947         getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
15948                                                                static_cast<VkPipeline>( m_pipeline ),
15949                                                                firstGroup,
15950                                                                groupCount,
15951                                                                sizeof( T ),
15952                                                                reinterpret_cast<void *>( &data ) ) );
15953       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15954       {
15955         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleKHR" );
15956       }
15957       return data;
15958     }
15959 
15960     template <typename T>
getRayTracingCaptureReplayShaderGroupHandlesKHR(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const15961     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T> Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR(
15962       uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
15963     {
15964       VULKAN_HPP_ASSERT(
15965         getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR &&
15966         "Function <vkGetRayTracingCaptureReplayShaderGroupHandlesKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15967 
15968       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
15969       std::vector<T> data( dataSize / sizeof( T ) );
15970       Result         result = static_cast<Result>(
15971         getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
15972                                                                             static_cast<VkPipeline>( m_pipeline ),
15973                                                                             firstGroup,
15974                                                                             groupCount,
15975                                                                             data.size() * sizeof( T ),
15976                                                                             reinterpret_cast<void *>( data.data() ) ) );
15977       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15978       {
15979         throwResultException(
15980           result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR" );
15981       }
15982       return data;
15983     }
15984 
15985     template <typename T>
getRayTracingCaptureReplayShaderGroupHandleKHR(uint32_t firstGroup,uint32_t groupCount) const15986     VULKAN_HPP_NODISCARD T Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup,
15987                                                                                      uint32_t groupCount ) const
15988     {
15989       T      data;
15990       Result result = static_cast<Result>(
15991         getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
15992                                                                             static_cast<VkPipeline>( m_pipeline ),
15993                                                                             firstGroup,
15994                                                                             groupCount,
15995                                                                             sizeof( T ),
15996                                                                             reinterpret_cast<void *>( &data ) ) );
15997       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15998       {
15999         throwResultException(
16000           result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR" );
16001       }
16002       return data;
16003     }
16004 
traceRaysIndirectKHR(const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress) const16005     VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR(
16006       const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
16007       const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,
16008       const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,
16009       const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,
16010       VULKAN_HPP_NAMESPACE::DeviceAddress                         indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT
16011     {
16012       VULKAN_HPP_ASSERT(
16013         getDispatcher()->vkCmdTraceRaysIndirectKHR &&
16014         "Function <vkCmdTraceRaysIndirectKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
16015 
16016       getDispatcher()->vkCmdTraceRaysIndirectKHR(
16017         static_cast<VkCommandBuffer>( m_commandBuffer ),
16018         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &raygenShaderBindingTable ),
16019         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &missShaderBindingTable ),
16020         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &hitShaderBindingTable ),
16021         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &callableShaderBindingTable ),
16022         static_cast<VkDeviceAddress>( indirectDeviceAddress ) );
16023     }
16024 
16025     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize
getRayTracingShaderGroupStackSizeKHR(uint32_t group,VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader) const16026                                            Pipeline::getRayTracingShaderGroupStackSizeKHR(
16027         uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT
16028     {
16029       VULKAN_HPP_ASSERT(
16030         getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR &&
16031         "Function <vkGetRayTracingShaderGroupStackSizeKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
16032 
16033       return static_cast<VULKAN_HPP_NAMESPACE::DeviceSize>(
16034         getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR( static_cast<VkDevice>( m_device ),
16035                                                                  static_cast<VkPipeline>( m_pipeline ),
16036                                                                  group,
16037                                                                  static_cast<VkShaderGroupShaderKHR>( groupShader ) ) );
16038     }
16039 
16040     VULKAN_HPP_INLINE void
setRayTracingPipelineStackSizeKHR(uint32_t pipelineStackSize) const16041       CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT
16042     {
16043       VULKAN_HPP_ASSERT(
16044         getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR &&
16045         "Function <vkCmdSetRayTracingPipelineStackSizeKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
16046 
16047       getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
16048                                                                pipelineStackSize );
16049     }
16050 
16051     //=== VK_EXT_vertex_input_dynamic_state ===
16052 
setVertexInputEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const & vertexBindingDescriptions,ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const & vertexAttributeDescriptions) const16053     VULKAN_HPP_INLINE void CommandBuffer::setVertexInputEXT(
16054       ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const &   vertexBindingDescriptions,
16055       ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const & vertexAttributeDescriptions )
16056       const VULKAN_HPP_NOEXCEPT
16057     {
16058       VULKAN_HPP_ASSERT(
16059         getDispatcher()->vkCmdSetVertexInputEXT &&
16060         "Function <vkCmdSetVertexInputEXT> needs extension <VK_EXT_vertex_input_dynamic_state> enabled!" );
16061 
16062       getDispatcher()->vkCmdSetVertexInputEXT(
16063         static_cast<VkCommandBuffer>( m_commandBuffer ),
16064         vertexBindingDescriptions.size(),
16065         reinterpret_cast<const VkVertexInputBindingDescription2EXT *>( vertexBindingDescriptions.data() ),
16066         vertexAttributeDescriptions.size(),
16067         reinterpret_cast<const VkVertexInputAttributeDescription2EXT *>( vertexAttributeDescriptions.data() ) );
16068     }
16069 
16070 #  if defined( VK_USE_PLATFORM_FUCHSIA )
16071     //=== VK_FUCHSIA_external_memory ===
16072 
getMemoryZirconHandleFUCHSIA(const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo) const16073     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE zx_handle_t Device::getMemoryZirconHandleFUCHSIA(
16074       const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const
16075     {
16076       VULKAN_HPP_ASSERT(
16077         getDispatcher()->vkGetMemoryZirconHandleFUCHSIA &&
16078         "Function <vkGetMemoryZirconHandleFUCHSIA> needs extension <VK_FUCHSIA_external_memory> enabled!" );
16079 
16080       zx_handle_t                  zirconHandle;
16081       VULKAN_HPP_NAMESPACE::Result result =
16082         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA(
16083           static_cast<VkDevice>( m_device ),
16084           reinterpret_cast<const VkMemoryGetZirconHandleInfoFUCHSIA *>( &getZirconHandleInfo ),
16085           &zirconHandle ) );
16086       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16087       {
16088         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandleFUCHSIA" );
16089       }
16090       return zirconHandle;
16091     }
16092 
16093     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA
getMemoryZirconHandlePropertiesFUCHSIA(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,zx_handle_t zirconHandle) const16094       Device::getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
16095                                                       zx_handle_t zirconHandle ) const
16096     {
16097       VULKAN_HPP_ASSERT(
16098         getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA &&
16099         "Function <vkGetMemoryZirconHandlePropertiesFUCHSIA> needs extension <VK_FUCHSIA_external_memory> enabled!" );
16100 
16101       VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA memoryZirconHandleProperties;
16102       VULKAN_HPP_NAMESPACE::Result                              result =
16103         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA(
16104           static_cast<VkDevice>( m_device ),
16105           static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
16106           zirconHandle,
16107           reinterpret_cast<VkMemoryZirconHandlePropertiesFUCHSIA *>( &memoryZirconHandleProperties ) ) );
16108       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16109       {
16110         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandlePropertiesFUCHSIA" );
16111       }
16112       return memoryZirconHandleProperties;
16113     }
16114 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
16115 
16116 #  if defined( VK_USE_PLATFORM_FUCHSIA )
16117     //=== VK_FUCHSIA_external_semaphore ===
16118 
importSemaphoreZirconHandleFUCHSIA(const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo) const16119     VULKAN_HPP_INLINE void Device::importSemaphoreZirconHandleFUCHSIA(
16120       const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const
16121     {
16122       VULKAN_HPP_ASSERT(
16123         getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA &&
16124         "Function <vkImportSemaphoreZirconHandleFUCHSIA> needs extension <VK_FUCHSIA_external_semaphore> enabled!" );
16125 
16126       VULKAN_HPP_NAMESPACE::Result result =
16127         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA(
16128           static_cast<VkDevice>( m_device ),
16129           reinterpret_cast<const VkImportSemaphoreZirconHandleInfoFUCHSIA *>( &importSemaphoreZirconHandleInfo ) ) );
16130       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16131       {
16132         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreZirconHandleFUCHSIA" );
16133       }
16134     }
16135 
getSemaphoreZirconHandleFUCHSIA(const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo) const16136     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE zx_handle_t Device::getSemaphoreZirconHandleFUCHSIA(
16137       const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const
16138     {
16139       VULKAN_HPP_ASSERT(
16140         getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA &&
16141         "Function <vkGetSemaphoreZirconHandleFUCHSIA> needs extension <VK_FUCHSIA_external_semaphore> enabled!" );
16142 
16143       zx_handle_t                  zirconHandle;
16144       VULKAN_HPP_NAMESPACE::Result result =
16145         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA(
16146           static_cast<VkDevice>( m_device ),
16147           reinterpret_cast<const VkSemaphoreGetZirconHandleInfoFUCHSIA *>( &getZirconHandleInfo ),
16148           &zirconHandle ) );
16149       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16150       {
16151         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreZirconHandleFUCHSIA" );
16152       }
16153       return zirconHandle;
16154     }
16155 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
16156 
16157 #  if defined( VK_USE_PLATFORM_FUCHSIA )
16158     //=== VK_FUCHSIA_buffer_collection ===
16159 
setImageConstraints(const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo) const16160     VULKAN_HPP_INLINE void BufferCollectionFUCHSIA::setImageConstraints(
16161       const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo ) const
16162     {
16163       VULKAN_HPP_ASSERT(
16164         getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA &&
16165         "Function <vkSetBufferCollectionImageConstraintsFUCHSIA> needs extension <VK_FUCHSIA_buffer_collection> enabled!" );
16166 
16167       VULKAN_HPP_NAMESPACE::Result result =
16168         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA(
16169           static_cast<VkDevice>( m_device ),
16170           static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ),
16171           reinterpret_cast<const VkImageConstraintsInfoFUCHSIA *>( &imageConstraintsInfo ) ) );
16172       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16173       {
16174         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setImageConstraints" );
16175       }
16176     }
16177 
setBufferConstraints(const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo) const16178     VULKAN_HPP_INLINE void BufferCollectionFUCHSIA::setBufferConstraints(
16179       const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo ) const
16180     {
16181       VULKAN_HPP_ASSERT(
16182         getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA &&
16183         "Function <vkSetBufferCollectionBufferConstraintsFUCHSIA> needs extension <VK_FUCHSIA_buffer_collection> enabled!" );
16184 
16185       VULKAN_HPP_NAMESPACE::Result result =
16186         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA(
16187           static_cast<VkDevice>( m_device ),
16188           static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ),
16189           reinterpret_cast<const VkBufferConstraintsInfoFUCHSIA *>( &bufferConstraintsInfo ) ) );
16190       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16191       {
16192         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setBufferConstraints" );
16193       }
16194     }
16195 
16196     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA
getProperties() const16197                                            BufferCollectionFUCHSIA::getProperties() const
16198     {
16199       VULKAN_HPP_ASSERT(
16200         getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA &&
16201         "Function <vkGetBufferCollectionPropertiesFUCHSIA> needs extension <VK_FUCHSIA_buffer_collection> enabled!" );
16202 
16203       VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA properties;
16204       VULKAN_HPP_NAMESPACE::Result                            result =
16205         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA(
16206           static_cast<VkDevice>( m_device ),
16207           static_cast<VkBufferCollectionFUCHSIA>( m_bufferCollectionFUCHSIA ),
16208           reinterpret_cast<VkBufferCollectionPropertiesFUCHSIA *>( &properties ) ) );
16209       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16210       {
16211         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::getProperties" );
16212       }
16213       return properties;
16214     }
16215 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
16216 
16217     //=== VK_HUAWEI_subpass_shading ===
16218 
16219     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, VULKAN_HPP_NAMESPACE::Extent2D>
getSubpassShadingMaxWorkgroupSizeHUAWEI() const16220                                            RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI() const
16221     {
16222       VULKAN_HPP_ASSERT(
16223         getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI &&
16224         "Function <vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI> needs extension <VK_HUAWEI_subpass_shading> enabled!" );
16225 
16226       VULKAN_HPP_NAMESPACE::Extent2D maxWorkgroupSize;
16227       VULKAN_HPP_NAMESPACE::Result   result =
16228         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
16229           static_cast<VkDevice>( m_device ),
16230           static_cast<VkRenderPass>( m_renderPass ),
16231           reinterpret_cast<VkExtent2D *>( &maxWorkgroupSize ) ) );
16232       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
16233            ( result != VULKAN_HPP_NAMESPACE::Result::eIncomplete ) )
16234       {
16235         throwResultException( result,
16236                               VULKAN_HPP_NAMESPACE_STRING "::RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI" );
16237       }
16238       return std::make_pair( result, maxWorkgroupSize );
16239     }
16240 
subpassShadingHUAWEI() const16241     VULKAN_HPP_INLINE void CommandBuffer::subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT
16242     {
16243       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSubpassShadingHUAWEI &&
16244                          "Function <vkCmdSubpassShadingHUAWEI> needs extension <VK_HUAWEI_subpass_shading> enabled!" );
16245 
16246       getDispatcher()->vkCmdSubpassShadingHUAWEI( static_cast<VkCommandBuffer>( m_commandBuffer ) );
16247     }
16248 
16249     //=== VK_HUAWEI_invocation_mask ===
16250 
16251     VULKAN_HPP_INLINE void
bindInvocationMaskHUAWEI(VULKAN_HPP_NAMESPACE::ImageView imageView,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout) const16252       CommandBuffer::bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView   imageView,
16253                                                VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT
16254     {
16255       VULKAN_HPP_ASSERT(
16256         getDispatcher()->vkCmdBindInvocationMaskHUAWEI &&
16257         "Function <vkCmdBindInvocationMaskHUAWEI> needs extension <VK_HUAWEI_invocation_mask> enabled!" );
16258 
16259       getDispatcher()->vkCmdBindInvocationMaskHUAWEI( static_cast<VkCommandBuffer>( m_commandBuffer ),
16260                                                       static_cast<VkImageView>( imageView ),
16261                                                       static_cast<VkImageLayout>( imageLayout ) );
16262     }
16263 
16264     //=== VK_NV_external_memory_rdma ===
16265 
getMemoryRemoteAddressNV(const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo) const16266     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::RemoteAddressNV Device::getMemoryRemoteAddressNV(
16267       const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo ) const
16268     {
16269       VULKAN_HPP_ASSERT(
16270         getDispatcher()->vkGetMemoryRemoteAddressNV &&
16271         "Function <vkGetMemoryRemoteAddressNV> needs extension <VK_NV_external_memory_rdma> enabled!" );
16272 
16273       VULKAN_HPP_NAMESPACE::RemoteAddressNV address;
16274       VULKAN_HPP_NAMESPACE::Result          result =
16275         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryRemoteAddressNV(
16276           static_cast<VkDevice>( m_device ),
16277           reinterpret_cast<const VkMemoryGetRemoteAddressInfoNV *>( &memoryGetRemoteAddressInfo ),
16278           reinterpret_cast<VkRemoteAddressNV *>( &address ) ) );
16279       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16280       {
16281         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryRemoteAddressNV" );
16282       }
16283       return address;
16284     }
16285 
16286     //=== VK_EXT_extended_dynamic_state2 ===
16287 
16288     VULKAN_HPP_INLINE void
setPatchControlPointsEXT(uint32_t patchControlPoints) const16289       CommandBuffer::setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT
16290     {
16291       VULKAN_HPP_ASSERT(
16292         getDispatcher()->vkCmdSetPatchControlPointsEXT &&
16293         "Function <vkCmdSetPatchControlPointsEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16294 
16295       getDispatcher()->vkCmdSetPatchControlPointsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16296                                                       patchControlPoints );
16297     }
16298 
setRasterizerDiscardEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable) const16299     VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnableEXT(
16300       VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT
16301     {
16302       VULKAN_HPP_ASSERT(
16303         getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT &&
16304         "Function <vkCmdSetRasterizerDiscardEnableEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16305 
16306       getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16307                                                            static_cast<VkBool32>( rasterizerDiscardEnable ) );
16308     }
16309 
16310     VULKAN_HPP_INLINE void
setDepthBiasEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable) const16311       CommandBuffer::setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT
16312     {
16313       VULKAN_HPP_ASSERT(
16314         getDispatcher()->vkCmdSetDepthBiasEnableEXT &&
16315         "Function <vkCmdSetDepthBiasEnableEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16316 
16317       getDispatcher()->vkCmdSetDepthBiasEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16318                                                    static_cast<VkBool32>( depthBiasEnable ) );
16319     }
16320 
16321     VULKAN_HPP_INLINE void
setLogicOpEXT(VULKAN_HPP_NAMESPACE::LogicOp logicOp) const16322       CommandBuffer::setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT
16323     {
16324       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEXT &&
16325                          "Function <vkCmdSetLogicOpEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16326 
16327       getDispatcher()->vkCmdSetLogicOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16328                                            static_cast<VkLogicOp>( logicOp ) );
16329     }
16330 
setPrimitiveRestartEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable) const16331     VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnableEXT(
16332       VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT
16333     {
16334       VULKAN_HPP_ASSERT(
16335         getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT &&
16336         "Function <vkCmdSetPrimitiveRestartEnableEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16337 
16338       getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16339                                                           static_cast<VkBool32>( primitiveRestartEnable ) );
16340     }
16341 
16342 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
16343     //=== VK_QNX_screen_surface ===
16344 
16345     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getScreenPresentationSupportQNX(uint32_t queueFamilyIndex,struct _screen_window & window) const16346                                            PhysicalDevice::getScreenPresentationSupportQNX( uint32_t                queueFamilyIndex,
16347                                                        struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT
16348     {
16349       VULKAN_HPP_ASSERT(
16350         getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX &&
16351         "Function <vkGetPhysicalDeviceScreenPresentationSupportQNX> needs extension <VK_QNX_screen_surface> enabled!" );
16352 
16353       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>(
16354         getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX(
16355           static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &window ) );
16356     }
16357 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
16358 
16359     //=== VK_EXT_color_write_enable ===
16360 
setColorWriteEnableEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables) const16361     VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT(
16362       ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT
16363     {
16364       VULKAN_HPP_ASSERT(
16365         getDispatcher()->vkCmdSetColorWriteEnableEXT &&
16366         "Function <vkCmdSetColorWriteEnableEXT> needs extension <VK_EXT_color_write_enable> enabled!" );
16367 
16368       getDispatcher()->vkCmdSetColorWriteEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16369                                                     colorWriteEnables.size(),
16370                                                     reinterpret_cast<const VkBool32 *>( colorWriteEnables.data() ) );
16371     }
16372 
16373     //=== VK_EXT_multi_draw ===
16374 
16375     VULKAN_HPP_INLINE void
drawMultiEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride) const16376       CommandBuffer::drawMultiEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,
16377                                    uint32_t                                                         instanceCount,
16378                                    uint32_t                                                         firstInstance,
16379                                    uint32_t stride ) const VULKAN_HPP_NOEXCEPT
16380     {
16381       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiEXT &&
16382                          "Function <vkCmdDrawMultiEXT> needs extension <VK_EXT_multi_draw> enabled!" );
16383 
16384       getDispatcher()->vkCmdDrawMultiEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16385                                           vertexInfo.size(),
16386                                           reinterpret_cast<const VkMultiDrawInfoEXT *>( vertexInfo.data() ),
16387                                           instanceCount,
16388                                           firstInstance,
16389                                           stride );
16390     }
16391 
drawMultiIndexedEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride,Optional<const int32_t> vertexOffset) const16392     VULKAN_HPP_INLINE void CommandBuffer::drawMultiIndexedEXT(
16393       ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,
16394       uint32_t                                                                instanceCount,
16395       uint32_t                                                                firstInstance,
16396       uint32_t                                                                stride,
16397       Optional<const int32_t>                                                 vertexOffset ) const VULKAN_HPP_NOEXCEPT
16398     {
16399       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiIndexedEXT &&
16400                          "Function <vkCmdDrawMultiIndexedEXT> needs extension <VK_EXT_multi_draw> enabled!" );
16401 
16402       getDispatcher()->vkCmdDrawMultiIndexedEXT(
16403         static_cast<VkCommandBuffer>( m_commandBuffer ),
16404         indexInfo.size(),
16405         reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>( indexInfo.data() ),
16406         instanceCount,
16407         firstInstance,
16408         stride,
16409         static_cast<const int32_t *>( vertexOffset ) );
16410     }
16411 
16412     //=== VK_EXT_pageable_device_local_memory ===
16413 
setPriorityEXT(float priority) const16414     VULKAN_HPP_INLINE void DeviceMemory::setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT
16415     {
16416       VULKAN_HPP_ASSERT(
16417         getDispatcher()->vkSetDeviceMemoryPriorityEXT &&
16418         "Function <vkSetDeviceMemoryPriorityEXT> needs extension <VK_EXT_pageable_device_local_memory> enabled!" );
16419 
16420       getDispatcher()->vkSetDeviceMemoryPriorityEXT(
16421         static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_deviceMemory ), priority );
16422     }
16423 
16424     //=== VK_KHR_maintenance4 ===
16425 
16426     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR & info) const16427                                            Device::getBufferMemoryRequirementsKHR(
16428         const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR & info ) const VULKAN_HPP_NOEXCEPT
16429     {
16430       VULKAN_HPP_ASSERT(
16431         getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR &&
16432         "Function <vkGetDeviceBufferMemoryRequirementsKHR> needs extension <VK_KHR_maintenance4> enabled!" );
16433 
16434       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
16435       getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR(
16436         static_cast<VkDevice>( m_device ),
16437         reinterpret_cast<const VkDeviceBufferMemoryRequirementsKHR *>( &info ),
16438         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
16439       return memoryRequirements;
16440     }
16441 
16442     template <typename X, typename Y, typename... Z>
getBufferMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR & info) const16443     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getBufferMemoryRequirementsKHR(
16444       const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirementsKHR & info ) const VULKAN_HPP_NOEXCEPT
16445     {
16446       VULKAN_HPP_ASSERT(
16447         getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR &&
16448         "Function <vkGetDeviceBufferMemoryRequirementsKHR> needs extension <VK_KHR_maintenance4> enabled!" );
16449 
16450       StructureChain<X, Y, Z...>                  structureChain;
16451       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
16452         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
16453       getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR(
16454         static_cast<VkDevice>( m_device ),
16455         reinterpret_cast<const VkDeviceBufferMemoryRequirementsKHR *>( &info ),
16456         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
16457       return structureChain;
16458     }
16459 
16460     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info) const16461       Device::getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info ) const
16462       VULKAN_HPP_NOEXCEPT
16463     {
16464       VULKAN_HPP_ASSERT(
16465         getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR &&
16466         "Function <vkGetDeviceImageMemoryRequirementsKHR> needs extension <VK_KHR_maintenance4> enabled!" );
16467 
16468       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
16469       getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR(
16470         static_cast<VkDevice>( m_device ),
16471         reinterpret_cast<const VkDeviceImageMemoryRequirementsKHR *>( &info ),
16472         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
16473       return memoryRequirements;
16474     }
16475 
16476     template <typename X, typename Y, typename... Z>
getImageMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info) const16477     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getImageMemoryRequirementsKHR(
16478       const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info ) const VULKAN_HPP_NOEXCEPT
16479     {
16480       VULKAN_HPP_ASSERT(
16481         getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR &&
16482         "Function <vkGetDeviceImageMemoryRequirementsKHR> needs extension <VK_KHR_maintenance4> enabled!" );
16483 
16484       StructureChain<X, Y, Z...>                  structureChain;
16485       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
16486         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
16487       getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR(
16488         static_cast<VkDevice>( m_device ),
16489         reinterpret_cast<const VkDeviceImageMemoryRequirementsKHR *>( &info ),
16490         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
16491       return structureChain;
16492     }
16493 
16494     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info) const16495                                            Device::getImageSparseMemoryRequirementsKHR(
16496         const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirementsKHR & info ) const VULKAN_HPP_NOEXCEPT
16497     {
16498       VULKAN_HPP_ASSERT(
16499         getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR &&
16500         "Function <vkGetDeviceImageSparseMemoryRequirementsKHR> needs extension <VK_KHR_maintenance4> enabled!" );
16501 
16502       uint32_t sparseMemoryRequirementCount;
16503       getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR(
16504         static_cast<VkDevice>( m_device ),
16505         reinterpret_cast<const VkDeviceImageMemoryRequirementsKHR *>( &info ),
16506         &sparseMemoryRequirementCount,
16507         nullptr );
16508       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements(
16509         sparseMemoryRequirementCount );
16510       getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR(
16511         static_cast<VkDevice>( m_device ),
16512         reinterpret_cast<const VkDeviceImageMemoryRequirementsKHR *>( &info ),
16513         &sparseMemoryRequirementCount,
16514         reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
16515       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
16516       return sparseMemoryRequirements;
16517     }
16518 
16519 #endif
16520   }  // namespace VULKAN_HPP_RAII_NAMESPACE
16521 }  // namespace VULKAN_HPP_NAMESPACE
16522 #endif
16523