xref: /aosp_15_r20/external/swiftshader/include/vulkan/vulkan_raii.hpp (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
1 // Copyright 2015-2024 The Khronos Group Inc.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR MIT
4 //
5 
6 // This header is generated from the Khronos Vulkan XML API Registry.
7 
8 #ifndef VULKAN_RAII_HPP
9 #define VULKAN_RAII_HPP
10 
11 #include <memory>   // std::unique_ptr
12 #include <utility>  // std::exchange, std::forward
13 #include <vulkan/vulkan.hpp>
14 
15 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE )
16 namespace VULKAN_HPP_NAMESPACE
17 {
18   namespace VULKAN_HPP_RAII_NAMESPACE
19   {
20 #  if ( 14 <= VULKAN_HPP_CPP_VERSION )
21     using std::exchange;
22 #  else
23     template <class T, class U = T>
24     VULKAN_HPP_CONSTEXPR_14 VULKAN_HPP_INLINE T exchange( T & obj, U && newValue )
25     {
26       T oldValue = std::move( obj );
27       obj        = std::forward<U>( newValue );
28       return oldValue;
29     }
30 #  endif
31 
32     template <class T>
33     class CreateReturnType
34     {
35     public:
36 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
37       using Type = VULKAN_HPP_EXPECTED<T, VULKAN_HPP_NAMESPACE::Result>;
38 #  else
39       using Type                                                              = T;
40 #  endif
41     };
42 
43     class ContextDispatcher : public DispatchLoaderBase
44     {
45     public:
ContextDispatcher(PFN_vkGetInstanceProcAddr getProcAddr)46       ContextDispatcher( PFN_vkGetInstanceProcAddr getProcAddr )
47         : vkGetInstanceProcAddr( getProcAddr )
48         //=== VK_VERSION_1_0 ===
49         , vkCreateInstance( PFN_vkCreateInstance( getProcAddr( NULL, "vkCreateInstance" ) ) )
50         , vkEnumerateInstanceExtensionProperties( PFN_vkEnumerateInstanceExtensionProperties( getProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ) )
51         , vkEnumerateInstanceLayerProperties( PFN_vkEnumerateInstanceLayerProperties( getProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ) )
52         //=== VK_VERSION_1_1 ===
53         , vkEnumerateInstanceVersion( PFN_vkEnumerateInstanceVersion( getProcAddr( NULL, "vkEnumerateInstanceVersion" ) ) )
54       {
55       }
56 
57     public:
58       PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0;
59 
60       //=== VK_VERSION_1_0 ===
61       PFN_vkCreateInstance                       vkCreateInstance                       = 0;
62       PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0;
63       PFN_vkEnumerateInstanceLayerProperties     vkEnumerateInstanceLayerProperties     = 0;
64 
65       //=== VK_VERSION_1_1 ===
66       PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0;
67     };
68 
69     class InstanceDispatcher : public DispatchLoaderBase
70     {
71     public:
InstanceDispatcher(PFN_vkGetInstanceProcAddr getProcAddr,VkInstance instance)72       InstanceDispatcher( PFN_vkGetInstanceProcAddr getProcAddr, VkInstance instance ) : vkGetInstanceProcAddr( getProcAddr )
73       {
74         //=== VK_VERSION_1_0 ===
75         vkDestroyInstance           = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) );
76         vkEnumeratePhysicalDevices  = PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) );
77         vkGetPhysicalDeviceFeatures = PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) );
78         vkGetPhysicalDeviceFormatProperties =
79           PFN_vkGetPhysicalDeviceFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) );
80         vkGetPhysicalDeviceImageFormatProperties =
81           PFN_vkGetPhysicalDeviceImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) );
82         vkGetPhysicalDeviceProperties = PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) );
83         vkGetPhysicalDeviceQueueFamilyProperties =
84           PFN_vkGetPhysicalDeviceQueueFamilyProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) );
85         vkGetPhysicalDeviceMemoryProperties =
86           PFN_vkGetPhysicalDeviceMemoryProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) );
87         vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) );
88         vkEnumerateDeviceExtensionProperties =
89           PFN_vkEnumerateDeviceExtensionProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) );
90         vkEnumerateDeviceLayerProperties = PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) );
91         vkGetPhysicalDeviceSparseImageFormatProperties =
92           PFN_vkGetPhysicalDeviceSparseImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) );
93 
94         //=== VK_VERSION_1_1 ===
95         vkEnumeratePhysicalDeviceGroups = PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) );
96         vkGetPhysicalDeviceFeatures2    = PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) );
97         vkGetPhysicalDeviceProperties2  = PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) );
98         vkGetPhysicalDeviceFormatProperties2 =
99           PFN_vkGetPhysicalDeviceFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) );
100         vkGetPhysicalDeviceImageFormatProperties2 =
101           PFN_vkGetPhysicalDeviceImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) );
102         vkGetPhysicalDeviceQueueFamilyProperties2 =
103           PFN_vkGetPhysicalDeviceQueueFamilyProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) );
104         vkGetPhysicalDeviceMemoryProperties2 =
105           PFN_vkGetPhysicalDeviceMemoryProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) );
106         vkGetPhysicalDeviceSparseImageFormatProperties2 =
107           PFN_vkGetPhysicalDeviceSparseImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) );
108         vkGetPhysicalDeviceExternalBufferProperties =
109           PFN_vkGetPhysicalDeviceExternalBufferProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) );
110         vkGetPhysicalDeviceExternalFenceProperties =
111           PFN_vkGetPhysicalDeviceExternalFenceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) );
112         vkGetPhysicalDeviceExternalSemaphoreProperties =
113           PFN_vkGetPhysicalDeviceExternalSemaphoreProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) );
114 
115         //=== VK_VERSION_1_3 ===
116         vkGetPhysicalDeviceToolProperties = PFN_vkGetPhysicalDeviceToolProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolProperties" ) );
117 
118         //=== VK_KHR_surface ===
119         vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) );
120         vkGetPhysicalDeviceSurfaceSupportKHR =
121           PFN_vkGetPhysicalDeviceSurfaceSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) );
122         vkGetPhysicalDeviceSurfaceCapabilitiesKHR =
123           PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) );
124         vkGetPhysicalDeviceSurfaceFormatsKHR =
125           PFN_vkGetPhysicalDeviceSurfaceFormatsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) );
126         vkGetPhysicalDeviceSurfacePresentModesKHR =
127           PFN_vkGetPhysicalDeviceSurfacePresentModesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) );
128 
129         //=== VK_KHR_swapchain ===
130         vkGetPhysicalDevicePresentRectanglesKHR =
131           PFN_vkGetPhysicalDevicePresentRectanglesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) );
132 
133         //=== VK_KHR_display ===
134         vkGetPhysicalDeviceDisplayPropertiesKHR =
135           PFN_vkGetPhysicalDeviceDisplayPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) );
136         vkGetPhysicalDeviceDisplayPlanePropertiesKHR =
137           PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) );
138         vkGetDisplayPlaneSupportedDisplaysKHR =
139           PFN_vkGetDisplayPlaneSupportedDisplaysKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) );
140         vkGetDisplayModePropertiesKHR    = PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) );
141         vkCreateDisplayModeKHR           = PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) );
142         vkGetDisplayPlaneCapabilitiesKHR = PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) );
143         vkCreateDisplayPlaneSurfaceKHR   = PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) );
144 
145 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
146         //=== VK_KHR_xlib_surface ===
147         vkCreateXlibSurfaceKHR = PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) );
148         vkGetPhysicalDeviceXlibPresentationSupportKHR =
149           PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) );
150 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
151 
152 #  if defined( VK_USE_PLATFORM_XCB_KHR )
153         //=== VK_KHR_xcb_surface ===
154         vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) );
155         vkGetPhysicalDeviceXcbPresentationSupportKHR =
156           PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) );
157 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
158 
159 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
160         //=== VK_KHR_wayland_surface ===
161         vkCreateWaylandSurfaceKHR = PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) );
162         vkGetPhysicalDeviceWaylandPresentationSupportKHR =
163           PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) );
164 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
165 
166 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
167         //=== VK_KHR_android_surface ===
168         vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) );
169 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
170 
171 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
172         //=== VK_KHR_win32_surface ===
173         vkCreateWin32SurfaceKHR = PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) );
174         vkGetPhysicalDeviceWin32PresentationSupportKHR =
175           PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) );
176 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
177 
178         //=== VK_EXT_debug_report ===
179         vkCreateDebugReportCallbackEXT  = PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) );
180         vkDestroyDebugReportCallbackEXT = PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) );
181         vkDebugReportMessageEXT         = PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) );
182 
183         //=== VK_KHR_video_queue ===
184         vkGetPhysicalDeviceVideoCapabilitiesKHR =
185           PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoCapabilitiesKHR" ) );
186         vkGetPhysicalDeviceVideoFormatPropertiesKHR =
187           PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoFormatPropertiesKHR" ) );
188 
189 #  if defined( VK_USE_PLATFORM_GGP )
190         //=== VK_GGP_stream_descriptor_surface ===
191         vkCreateStreamDescriptorSurfaceGGP = PFN_vkCreateStreamDescriptorSurfaceGGP( vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) );
192 #  endif /*VK_USE_PLATFORM_GGP*/
193 
194         //=== VK_NV_external_memory_capabilities ===
195         vkGetPhysicalDeviceExternalImageFormatPropertiesNV =
196           PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) );
197 
198         //=== VK_KHR_get_physical_device_properties2 ===
199         vkGetPhysicalDeviceFeatures2KHR = PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) );
200         if ( !vkGetPhysicalDeviceFeatures2 )
201           vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR;
202         vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) );
203         if ( !vkGetPhysicalDeviceProperties2 )
204           vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR;
205         vkGetPhysicalDeviceFormatProperties2KHR =
206           PFN_vkGetPhysicalDeviceFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) );
207         if ( !vkGetPhysicalDeviceFormatProperties2 )
208           vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR;
209         vkGetPhysicalDeviceImageFormatProperties2KHR =
210           PFN_vkGetPhysicalDeviceImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) );
211         if ( !vkGetPhysicalDeviceImageFormatProperties2 )
212           vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR;
213         vkGetPhysicalDeviceQueueFamilyProperties2KHR =
214           PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) );
215         if ( !vkGetPhysicalDeviceQueueFamilyProperties2 )
216           vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR;
217         vkGetPhysicalDeviceMemoryProperties2KHR =
218           PFN_vkGetPhysicalDeviceMemoryProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) );
219         if ( !vkGetPhysicalDeviceMemoryProperties2 )
220           vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR;
221         vkGetPhysicalDeviceSparseImageFormatProperties2KHR =
222           PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) );
223         if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 )
224           vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
225 
226 #  if defined( VK_USE_PLATFORM_VI_NN )
227         //=== VK_NN_vi_surface ===
228         vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) );
229 #  endif /*VK_USE_PLATFORM_VI_NN*/
230 
231         //=== VK_KHR_device_group_creation ===
232         vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) );
233         if ( !vkEnumeratePhysicalDeviceGroups )
234           vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR;
235 
236         //=== VK_KHR_external_memory_capabilities ===
237         vkGetPhysicalDeviceExternalBufferPropertiesKHR =
238           PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) );
239         if ( !vkGetPhysicalDeviceExternalBufferProperties )
240           vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR;
241 
242         //=== VK_KHR_external_semaphore_capabilities ===
243         vkGetPhysicalDeviceExternalSemaphorePropertiesKHR =
244           PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) );
245         if ( !vkGetPhysicalDeviceExternalSemaphoreProperties )
246           vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
247 
248         //=== VK_EXT_direct_mode_display ===
249         vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) );
250 
251 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
252         //=== VK_EXT_acquire_xlib_display ===
253         vkAcquireXlibDisplayEXT    = PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) );
254         vkGetRandROutputDisplayEXT = PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) );
255 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
256 
257         //=== VK_EXT_display_surface_counter ===
258         vkGetPhysicalDeviceSurfaceCapabilities2EXT =
259           PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) );
260 
261         //=== VK_KHR_external_fence_capabilities ===
262         vkGetPhysicalDeviceExternalFencePropertiesKHR =
263           PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) );
264         if ( !vkGetPhysicalDeviceExternalFenceProperties )
265           vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR;
266 
267         //=== VK_KHR_performance_query ===
268         vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
269           vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) );
270         vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
271           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) );
272 
273         //=== VK_KHR_get_surface_capabilities2 ===
274         vkGetPhysicalDeviceSurfaceCapabilities2KHR =
275           PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) );
276         vkGetPhysicalDeviceSurfaceFormats2KHR =
277           PFN_vkGetPhysicalDeviceSurfaceFormats2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) );
278 
279         //=== VK_KHR_get_display_properties2 ===
280         vkGetPhysicalDeviceDisplayProperties2KHR =
281           PFN_vkGetPhysicalDeviceDisplayProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) );
282         vkGetPhysicalDeviceDisplayPlaneProperties2KHR =
283           PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) );
284         vkGetDisplayModeProperties2KHR    = PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) );
285         vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) );
286 
287 #  if defined( VK_USE_PLATFORM_IOS_MVK )
288         //=== VK_MVK_ios_surface ===
289         vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) );
290 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
291 
292 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
293         //=== VK_MVK_macos_surface ===
294         vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) );
295 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
296 
297         //=== VK_EXT_debug_utils ===
298         vkCreateDebugUtilsMessengerEXT  = PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) );
299         vkDestroyDebugUtilsMessengerEXT = PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) );
300         vkSubmitDebugUtilsMessageEXT    = PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) );
301 
302         //=== VK_EXT_sample_locations ===
303         vkGetPhysicalDeviceMultisamplePropertiesEXT =
304           PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) );
305 
306         //=== VK_EXT_calibrated_timestamps ===
307         vkGetPhysicalDeviceCalibrateableTimeDomainsEXT =
308           PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) );
309         if ( !vkGetPhysicalDeviceCalibrateableTimeDomainsKHR )
310           vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = vkGetPhysicalDeviceCalibrateableTimeDomainsEXT;
311 
312 #  if defined( VK_USE_PLATFORM_FUCHSIA )
313         //=== VK_FUCHSIA_imagepipe_surface ===
314         vkCreateImagePipeSurfaceFUCHSIA = PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) );
315 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
316 
317 #  if defined( VK_USE_PLATFORM_METAL_EXT )
318         //=== VK_EXT_metal_surface ===
319         vkCreateMetalSurfaceEXT = PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) );
320 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
321 
322         //=== VK_KHR_fragment_shading_rate ===
323         vkGetPhysicalDeviceFragmentShadingRatesKHR =
324           PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) );
325 
326         //=== VK_EXT_tooling_info ===
327         vkGetPhysicalDeviceToolPropertiesEXT =
328           PFN_vkGetPhysicalDeviceToolPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) );
329         if ( !vkGetPhysicalDeviceToolProperties )
330           vkGetPhysicalDeviceToolProperties = vkGetPhysicalDeviceToolPropertiesEXT;
331 
332         //=== VK_NV_cooperative_matrix ===
333         vkGetPhysicalDeviceCooperativeMatrixPropertiesNV =
334           PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) );
335 
336         //=== VK_NV_coverage_reduction_mode ===
337         vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
338           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) );
339 
340 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
341         //=== VK_EXT_full_screen_exclusive ===
342         vkGetPhysicalDeviceSurfacePresentModes2EXT =
343           PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) );
344 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
345 
346         //=== VK_EXT_headless_surface ===
347         vkCreateHeadlessSurfaceEXT = PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) );
348 
349         //=== VK_EXT_acquire_drm_display ===
350         vkAcquireDrmDisplayEXT = PFN_vkAcquireDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" ) );
351         vkGetDrmDisplayEXT     = PFN_vkGetDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" ) );
352 
353         //=== VK_KHR_video_encode_queue ===
354         vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
355           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR" ) );
356 
357 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
358         //=== VK_NV_acquire_winrt_display ===
359         vkAcquireWinrtDisplayNV = PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) );
360         vkGetWinrtDisplayNV     = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) );
361 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
362 
363 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
364         //=== VK_EXT_directfb_surface ===
365         vkCreateDirectFBSurfaceEXT = PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) );
366         vkGetPhysicalDeviceDirectFBPresentationSupportEXT =
367           PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) );
368 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
369 
370 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
371         //=== VK_QNX_screen_surface ===
372         vkCreateScreenSurfaceQNX = PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) );
373         vkGetPhysicalDeviceScreenPresentationSupportQNX =
374           PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) );
375 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
376 
377         //=== VK_NV_optical_flow ===
378         vkGetPhysicalDeviceOpticalFlowImageFormatsNV =
379           PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV" ) );
380 
381         //=== VK_KHR_cooperative_matrix ===
382         vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR =
383           PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR" ) );
384 
385         //=== VK_KHR_calibrated_timestamps ===
386         vkGetPhysicalDeviceCalibrateableTimeDomainsKHR =
387           PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR" ) );
388 
389         vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) );
390       }
391 
392     public:
393       //=== VK_VERSION_1_0 ===
394       PFN_vkDestroyInstance                              vkDestroyInstance                              = 0;
395       PFN_vkEnumeratePhysicalDevices                     vkEnumeratePhysicalDevices                     = 0;
396       PFN_vkGetPhysicalDeviceFeatures                    vkGetPhysicalDeviceFeatures                    = 0;
397       PFN_vkGetPhysicalDeviceFormatProperties            vkGetPhysicalDeviceFormatProperties            = 0;
398       PFN_vkGetPhysicalDeviceImageFormatProperties       vkGetPhysicalDeviceImageFormatProperties       = 0;
399       PFN_vkGetPhysicalDeviceProperties                  vkGetPhysicalDeviceProperties                  = 0;
400       PFN_vkGetPhysicalDeviceQueueFamilyProperties       vkGetPhysicalDeviceQueueFamilyProperties       = 0;
401       PFN_vkGetPhysicalDeviceMemoryProperties            vkGetPhysicalDeviceMemoryProperties            = 0;
402       PFN_vkGetInstanceProcAddr                          vkGetInstanceProcAddr                          = 0;
403       PFN_vkCreateDevice                                 vkCreateDevice                                 = 0;
404       PFN_vkEnumerateDeviceExtensionProperties           vkEnumerateDeviceExtensionProperties           = 0;
405       PFN_vkEnumerateDeviceLayerProperties               vkEnumerateDeviceLayerProperties               = 0;
406       PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0;
407 
408       //=== VK_VERSION_1_1 ===
409       PFN_vkEnumeratePhysicalDeviceGroups                 vkEnumeratePhysicalDeviceGroups                 = 0;
410       PFN_vkGetPhysicalDeviceFeatures2                    vkGetPhysicalDeviceFeatures2                    = 0;
411       PFN_vkGetPhysicalDeviceProperties2                  vkGetPhysicalDeviceProperties2                  = 0;
412       PFN_vkGetPhysicalDeviceFormatProperties2            vkGetPhysicalDeviceFormatProperties2            = 0;
413       PFN_vkGetPhysicalDeviceImageFormatProperties2       vkGetPhysicalDeviceImageFormatProperties2       = 0;
414       PFN_vkGetPhysicalDeviceQueueFamilyProperties2       vkGetPhysicalDeviceQueueFamilyProperties2       = 0;
415       PFN_vkGetPhysicalDeviceMemoryProperties2            vkGetPhysicalDeviceMemoryProperties2            = 0;
416       PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0;
417       PFN_vkGetPhysicalDeviceExternalBufferProperties     vkGetPhysicalDeviceExternalBufferProperties     = 0;
418       PFN_vkGetPhysicalDeviceExternalFenceProperties      vkGetPhysicalDeviceExternalFenceProperties      = 0;
419       PFN_vkGetPhysicalDeviceExternalSemaphoreProperties  vkGetPhysicalDeviceExternalSemaphoreProperties  = 0;
420 
421       //=== VK_VERSION_1_3 ===
422       PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties = 0;
423 
424       //=== VK_KHR_surface ===
425       PFN_vkDestroySurfaceKHR                       vkDestroySurfaceKHR                       = 0;
426       PFN_vkGetPhysicalDeviceSurfaceSupportKHR      vkGetPhysicalDeviceSurfaceSupportKHR      = 0;
427       PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0;
428       PFN_vkGetPhysicalDeviceSurfaceFormatsKHR      vkGetPhysicalDeviceSurfaceFormatsKHR      = 0;
429       PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0;
430 
431       //=== VK_KHR_swapchain ===
432       PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0;
433 
434       //=== VK_KHR_display ===
435       PFN_vkGetPhysicalDeviceDisplayPropertiesKHR      vkGetPhysicalDeviceDisplayPropertiesKHR      = 0;
436       PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0;
437       PFN_vkGetDisplayPlaneSupportedDisplaysKHR        vkGetDisplayPlaneSupportedDisplaysKHR        = 0;
438       PFN_vkGetDisplayModePropertiesKHR                vkGetDisplayModePropertiesKHR                = 0;
439       PFN_vkCreateDisplayModeKHR                       vkCreateDisplayModeKHR                       = 0;
440       PFN_vkGetDisplayPlaneCapabilitiesKHR             vkGetDisplayPlaneCapabilitiesKHR             = 0;
441       PFN_vkCreateDisplayPlaneSurfaceKHR               vkCreateDisplayPlaneSurfaceKHR               = 0;
442 
443 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
444       //=== VK_KHR_xlib_surface ===
445       PFN_vkCreateXlibSurfaceKHR                        vkCreateXlibSurfaceKHR                        = 0;
446       PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0;
447 #  else
448       PFN_dummy vkCreateXlibSurfaceKHR_placeholder                            = 0;
449       PFN_dummy vkGetPhysicalDeviceXlibPresentationSupportKHR_placeholder     = 0;
450 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
451 
452 #  if defined( VK_USE_PLATFORM_XCB_KHR )
453       //=== VK_KHR_xcb_surface ===
454       PFN_vkCreateXcbSurfaceKHR                        vkCreateXcbSurfaceKHR                        = 0;
455       PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0;
456 #  else
457       PFN_dummy vkCreateXcbSurfaceKHR_placeholder                             = 0;
458       PFN_dummy vkGetPhysicalDeviceXcbPresentationSupportKHR_placeholder      = 0;
459 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
460 
461 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
462       //=== VK_KHR_wayland_surface ===
463       PFN_vkCreateWaylandSurfaceKHR                        vkCreateWaylandSurfaceKHR                        = 0;
464       PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0;
465 #  else
466       PFN_dummy vkCreateWaylandSurfaceKHR_placeholder                         = 0;
467       PFN_dummy vkGetPhysicalDeviceWaylandPresentationSupportKHR_placeholder  = 0;
468 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
469 
470 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
471       //=== VK_KHR_android_surface ===
472       PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0;
473 #  else
474       PFN_dummy vkCreateAndroidSurfaceKHR_placeholder                         = 0;
475 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
476 
477 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
478       //=== VK_KHR_win32_surface ===
479       PFN_vkCreateWin32SurfaceKHR                        vkCreateWin32SurfaceKHR                        = 0;
480       PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0;
481 #  else
482       PFN_dummy vkCreateWin32SurfaceKHR_placeholder                           = 0;
483       PFN_dummy vkGetPhysicalDeviceWin32PresentationSupportKHR_placeholder    = 0;
484 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
485 
486       //=== VK_EXT_debug_report ===
487       PFN_vkCreateDebugReportCallbackEXT  vkCreateDebugReportCallbackEXT  = 0;
488       PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0;
489       PFN_vkDebugReportMessageEXT         vkDebugReportMessageEXT         = 0;
490 
491       //=== VK_KHR_video_queue ===
492       PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR     vkGetPhysicalDeviceVideoCapabilitiesKHR     = 0;
493       PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR = 0;
494 
495 #  if defined( VK_USE_PLATFORM_GGP )
496       //=== VK_GGP_stream_descriptor_surface ===
497       PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0;
498 #  else
499       PFN_dummy vkCreateStreamDescriptorSurfaceGGP_placeholder                = 0;
500 #  endif /*VK_USE_PLATFORM_GGP*/
501 
502       //=== VK_NV_external_memory_capabilities ===
503       PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0;
504 
505       //=== VK_KHR_get_physical_device_properties2 ===
506       PFN_vkGetPhysicalDeviceFeatures2KHR                    vkGetPhysicalDeviceFeatures2KHR                    = 0;
507       PFN_vkGetPhysicalDeviceProperties2KHR                  vkGetPhysicalDeviceProperties2KHR                  = 0;
508       PFN_vkGetPhysicalDeviceFormatProperties2KHR            vkGetPhysicalDeviceFormatProperties2KHR            = 0;
509       PFN_vkGetPhysicalDeviceImageFormatProperties2KHR       vkGetPhysicalDeviceImageFormatProperties2KHR       = 0;
510       PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR       vkGetPhysicalDeviceQueueFamilyProperties2KHR       = 0;
511       PFN_vkGetPhysicalDeviceMemoryProperties2KHR            vkGetPhysicalDeviceMemoryProperties2KHR            = 0;
512       PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0;
513 
514 #  if defined( VK_USE_PLATFORM_VI_NN )
515       //=== VK_NN_vi_surface ===
516       PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0;
517 #  else
518       PFN_dummy vkCreateViSurfaceNN_placeholder                               = 0;
519 #  endif /*VK_USE_PLATFORM_VI_NN*/
520 
521       //=== VK_KHR_device_group_creation ===
522       PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0;
523 
524       //=== VK_KHR_external_memory_capabilities ===
525       PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0;
526 
527       //=== VK_KHR_external_semaphore_capabilities ===
528       PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0;
529 
530       //=== VK_EXT_direct_mode_display ===
531       PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0;
532 
533 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
534       //=== VK_EXT_acquire_xlib_display ===
535       PFN_vkAcquireXlibDisplayEXT    vkAcquireXlibDisplayEXT    = 0;
536       PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0;
537 #  else
538       PFN_dummy vkAcquireXlibDisplayEXT_placeholder                           = 0;
539       PFN_dummy vkGetRandROutputDisplayEXT_placeholder                        = 0;
540 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
541 
542       //=== VK_EXT_display_surface_counter ===
543       PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0;
544 
545       //=== VK_KHR_external_fence_capabilities ===
546       PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0;
547 
548       //=== VK_KHR_performance_query ===
549       PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0;
550       PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR         vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR         = 0;
551 
552       //=== VK_KHR_get_surface_capabilities2 ===
553       PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0;
554       PFN_vkGetPhysicalDeviceSurfaceFormats2KHR      vkGetPhysicalDeviceSurfaceFormats2KHR      = 0;
555 
556       //=== VK_KHR_get_display_properties2 ===
557       PFN_vkGetPhysicalDeviceDisplayProperties2KHR      vkGetPhysicalDeviceDisplayProperties2KHR      = 0;
558       PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0;
559       PFN_vkGetDisplayModeProperties2KHR                vkGetDisplayModeProperties2KHR                = 0;
560       PFN_vkGetDisplayPlaneCapabilities2KHR             vkGetDisplayPlaneCapabilities2KHR             = 0;
561 
562 #  if defined( VK_USE_PLATFORM_IOS_MVK )
563       //=== VK_MVK_ios_surface ===
564       PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0;
565 #  else
566       PFN_dummy vkCreateIOSSurfaceMVK_placeholder                             = 0;
567 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
568 
569 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
570       //=== VK_MVK_macos_surface ===
571       PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0;
572 #  else
573       PFN_dummy vkCreateMacOSSurfaceMVK_placeholder                           = 0;
574 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
575 
576       //=== VK_EXT_debug_utils ===
577       PFN_vkCreateDebugUtilsMessengerEXT  vkCreateDebugUtilsMessengerEXT  = 0;
578       PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0;
579       PFN_vkSubmitDebugUtilsMessageEXT    vkSubmitDebugUtilsMessageEXT    = 0;
580 
581       //=== VK_EXT_sample_locations ===
582       PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0;
583 
584       //=== VK_EXT_calibrated_timestamps ===
585       PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0;
586 
587 #  if defined( VK_USE_PLATFORM_FUCHSIA )
588       //=== VK_FUCHSIA_imagepipe_surface ===
589       PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0;
590 #  else
591       PFN_dummy vkCreateImagePipeSurfaceFUCHSIA_placeholder                   = 0;
592 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
593 
594 #  if defined( VK_USE_PLATFORM_METAL_EXT )
595       //=== VK_EXT_metal_surface ===
596       PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0;
597 #  else
598       PFN_dummy vkCreateMetalSurfaceEXT_placeholder                           = 0;
599 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
600 
601       //=== VK_KHR_fragment_shading_rate ===
602       PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR = 0;
603 
604       //=== VK_EXT_tooling_info ===
605       PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT = 0;
606 
607       //=== VK_NV_cooperative_matrix ===
608       PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0;
609 
610       //=== VK_NV_coverage_reduction_mode ===
611       PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0;
612 
613 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
614       //=== VK_EXT_full_screen_exclusive ===
615       PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0;
616 #  else
617       PFN_dummy vkGetPhysicalDeviceSurfacePresentModes2EXT_placeholder        = 0;
618 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
619 
620       //=== VK_EXT_headless_surface ===
621       PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0;
622 
623       //=== VK_EXT_acquire_drm_display ===
624       PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT = 0;
625       PFN_vkGetDrmDisplayEXT     vkGetDrmDisplayEXT     = 0;
626 
627       //=== VK_KHR_video_encode_queue ===
628       PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = 0;
629 
630 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
631       //=== VK_NV_acquire_winrt_display ===
632       PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0;
633       PFN_vkGetWinrtDisplayNV     vkGetWinrtDisplayNV     = 0;
634 #  else
635       PFN_dummy vkAcquireWinrtDisplayNV_placeholder                           = 0;
636       PFN_dummy vkGetWinrtDisplayNV_placeholder                               = 0;
637 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
638 
639 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
640       //=== VK_EXT_directfb_surface ===
641       PFN_vkCreateDirectFBSurfaceEXT                        vkCreateDirectFBSurfaceEXT                        = 0;
642       PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0;
643 #  else
644       PFN_dummy vkCreateDirectFBSurfaceEXT_placeholder                        = 0;
645       PFN_dummy vkGetPhysicalDeviceDirectFBPresentationSupportEXT_placeholder = 0;
646 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
647 
648 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
649       //=== VK_QNX_screen_surface ===
650       PFN_vkCreateScreenSurfaceQNX                        vkCreateScreenSurfaceQNX                        = 0;
651       PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0;
652 #  else
653       PFN_dummy vkCreateScreenSurfaceQNX_placeholder                          = 0;
654       PFN_dummy vkGetPhysicalDeviceScreenPresentationSupportQNX_placeholder   = 0;
655 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
656 
657       //=== VK_NV_optical_flow ===
658       PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV vkGetPhysicalDeviceOpticalFlowImageFormatsNV = 0;
659 
660       //=== VK_KHR_cooperative_matrix ===
661       PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = 0;
662 
663       //=== VK_KHR_calibrated_timestamps ===
664       PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = 0;
665 
666       PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0;
667     };
668 
669     class DeviceDispatcher : public DispatchLoaderBase
670     {
671     public:
DeviceDispatcher(PFN_vkGetDeviceProcAddr getProcAddr,VkDevice device)672       DeviceDispatcher( PFN_vkGetDeviceProcAddr getProcAddr, VkDevice device ) : vkGetDeviceProcAddr( getProcAddr )
673       {
674         //=== VK_VERSION_1_0 ===
675         vkGetDeviceProcAddr                = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) );
676         vkDestroyDevice                    = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) );
677         vkGetDeviceQueue                   = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) );
678         vkQueueSubmit                      = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) );
679         vkQueueWaitIdle                    = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) );
680         vkDeviceWaitIdle                   = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) );
681         vkAllocateMemory                   = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) );
682         vkFreeMemory                       = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) );
683         vkMapMemory                        = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) );
684         vkUnmapMemory                      = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) );
685         vkFlushMappedMemoryRanges          = PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) );
686         vkInvalidateMappedMemoryRanges     = PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) );
687         vkGetDeviceMemoryCommitment        = PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) );
688         vkBindBufferMemory                 = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) );
689         vkBindImageMemory                  = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) );
690         vkGetBufferMemoryRequirements      = PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) );
691         vkGetImageMemoryRequirements       = PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) );
692         vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) );
693         vkQueueBindSparse                  = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) );
694         vkCreateFence                      = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) );
695         vkDestroyFence                     = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) );
696         vkResetFences                      = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) );
697         vkGetFenceStatus                   = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) );
698         vkWaitForFences                    = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) );
699         vkCreateSemaphore                  = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) );
700         vkDestroySemaphore                 = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) );
701         vkCreateEvent                      = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) );
702         vkDestroyEvent                     = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) );
703         vkGetEventStatus                   = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) );
704         vkSetEvent                         = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) );
705         vkResetEvent                       = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) );
706         vkCreateQueryPool                  = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) );
707         vkDestroyQueryPool                 = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) );
708         vkGetQueryPoolResults              = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) );
709         vkCreateBuffer                     = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) );
710         vkDestroyBuffer                    = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) );
711         vkCreateBufferView                 = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) );
712         vkDestroyBufferView                = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) );
713         vkCreateImage                      = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) );
714         vkDestroyImage                     = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) );
715         vkGetImageSubresourceLayout        = PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) );
716         vkCreateImageView                  = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) );
717         vkDestroyImageView                 = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) );
718         vkCreateShaderModule               = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) );
719         vkDestroyShaderModule              = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) );
720         vkCreatePipelineCache              = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) );
721         vkDestroyPipelineCache             = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) );
722         vkGetPipelineCacheData             = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) );
723         vkMergePipelineCaches              = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) );
724         vkCreateGraphicsPipelines          = PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) );
725         vkCreateComputePipelines           = PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) );
726         vkDestroyPipeline                  = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) );
727         vkCreatePipelineLayout             = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) );
728         vkDestroyPipelineLayout            = PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) );
729         vkCreateSampler                    = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) );
730         vkDestroySampler                   = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) );
731         vkCreateDescriptorSetLayout        = PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) );
732         vkDestroyDescriptorSetLayout       = PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) );
733         vkCreateDescriptorPool             = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) );
734         vkDestroyDescriptorPool            = PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) );
735         vkResetDescriptorPool              = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) );
736         vkAllocateDescriptorSets           = PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) );
737         vkFreeDescriptorSets               = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) );
738         vkUpdateDescriptorSets             = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) );
739         vkCreateFramebuffer                = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) );
740         vkDestroyFramebuffer               = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) );
741         vkCreateRenderPass                 = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) );
742         vkDestroyRenderPass                = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) );
743         vkGetRenderAreaGranularity         = PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) );
744         vkCreateCommandPool                = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) );
745         vkDestroyCommandPool               = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) );
746         vkResetCommandPool                 = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) );
747         vkAllocateCommandBuffers           = PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) );
748         vkFreeCommandBuffers               = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) );
749         vkBeginCommandBuffer               = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) );
750         vkEndCommandBuffer                 = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) );
751         vkResetCommandBuffer               = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) );
752         vkCmdBindPipeline                  = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) );
753         vkCmdSetViewport                   = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) );
754         vkCmdSetScissor                    = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) );
755         vkCmdSetLineWidth                  = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) );
756         vkCmdSetDepthBias                  = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) );
757         vkCmdSetBlendConstants             = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) );
758         vkCmdSetDepthBounds                = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) );
759         vkCmdSetStencilCompareMask         = PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) );
760         vkCmdSetStencilWriteMask           = PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) );
761         vkCmdSetStencilReference           = PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) );
762         vkCmdBindDescriptorSets            = PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) );
763         vkCmdBindIndexBuffer               = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) );
764         vkCmdBindVertexBuffers             = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) );
765         vkCmdDraw                          = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) );
766         vkCmdDrawIndexed                   = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) );
767         vkCmdDrawIndirect                  = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) );
768         vkCmdDrawIndexedIndirect           = PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) );
769         vkCmdDispatch                      = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) );
770         vkCmdDispatchIndirect              = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) );
771         vkCmdCopyBuffer                    = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) );
772         vkCmdCopyImage                     = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) );
773         vkCmdBlitImage                     = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) );
774         vkCmdCopyBufferToImage             = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) );
775         vkCmdCopyImageToBuffer             = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) );
776         vkCmdUpdateBuffer                  = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) );
777         vkCmdFillBuffer                    = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) );
778         vkCmdClearColorImage               = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) );
779         vkCmdClearDepthStencilImage        = PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) );
780         vkCmdClearAttachments              = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) );
781         vkCmdResolveImage                  = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) );
782         vkCmdSetEvent                      = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) );
783         vkCmdResetEvent                    = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) );
784         vkCmdWaitEvents                    = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) );
785         vkCmdPipelineBarrier               = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) );
786         vkCmdBeginQuery                    = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) );
787         vkCmdEndQuery                      = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) );
788         vkCmdResetQueryPool                = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) );
789         vkCmdWriteTimestamp                = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) );
790         vkCmdCopyQueryPoolResults          = PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) );
791         vkCmdPushConstants                 = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) );
792         vkCmdBeginRenderPass               = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) );
793         vkCmdNextSubpass                   = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) );
794         vkCmdEndRenderPass                 = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) );
795         vkCmdExecuteCommands               = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) );
796 
797         //=== VK_VERSION_1_1 ===
798         vkBindBufferMemory2                 = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) );
799         vkBindImageMemory2                  = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) );
800         vkGetDeviceGroupPeerMemoryFeatures  = PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) );
801         vkCmdSetDeviceMask                  = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) );
802         vkCmdDispatchBase                   = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) );
803         vkGetImageMemoryRequirements2       = PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) );
804         vkGetBufferMemoryRequirements2      = PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) );
805         vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) );
806         vkTrimCommandPool                   = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) );
807         vkGetDeviceQueue2                   = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) );
808         vkCreateSamplerYcbcrConversion      = PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) );
809         vkDestroySamplerYcbcrConversion     = PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) );
810         vkCreateDescriptorUpdateTemplate    = PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) );
811         vkDestroyDescriptorUpdateTemplate   = PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) );
812         vkUpdateDescriptorSetWithTemplate   = PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) );
813         vkGetDescriptorSetLayoutSupport     = PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) );
814 
815         //=== VK_VERSION_1_2 ===
816         vkCmdDrawIndirectCount          = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) );
817         vkCmdDrawIndexedIndirectCount   = PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) );
818         vkCreateRenderPass2             = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) );
819         vkCmdBeginRenderPass2           = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) );
820         vkCmdNextSubpass2               = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) );
821         vkCmdEndRenderPass2             = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) );
822         vkResetQueryPool                = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) );
823         vkGetSemaphoreCounterValue      = PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) );
824         vkWaitSemaphores                = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) );
825         vkSignalSemaphore               = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) );
826         vkGetBufferDeviceAddress        = PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) );
827         vkGetBufferOpaqueCaptureAddress = PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) );
828         vkGetDeviceMemoryOpaqueCaptureAddress =
829           PFN_vkGetDeviceMemoryOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) );
830 
831         //=== VK_VERSION_1_3 ===
832         vkCreatePrivateDataSlot             = PFN_vkCreatePrivateDataSlot( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlot" ) );
833         vkDestroyPrivateDataSlot            = PFN_vkDestroyPrivateDataSlot( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlot" ) );
834         vkSetPrivateData                    = PFN_vkSetPrivateData( vkGetDeviceProcAddr( device, "vkSetPrivateData" ) );
835         vkGetPrivateData                    = PFN_vkGetPrivateData( vkGetDeviceProcAddr( device, "vkGetPrivateData" ) );
836         vkCmdSetEvent2                      = PFN_vkCmdSetEvent2( vkGetDeviceProcAddr( device, "vkCmdSetEvent2" ) );
837         vkCmdResetEvent2                    = PFN_vkCmdResetEvent2( vkGetDeviceProcAddr( device, "vkCmdResetEvent2" ) );
838         vkCmdWaitEvents2                    = PFN_vkCmdWaitEvents2( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2" ) );
839         vkCmdPipelineBarrier2               = PFN_vkCmdPipelineBarrier2( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2" ) );
840         vkCmdWriteTimestamp2                = PFN_vkCmdWriteTimestamp2( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2" ) );
841         vkQueueSubmit2                      = PFN_vkQueueSubmit2( vkGetDeviceProcAddr( device, "vkQueueSubmit2" ) );
842         vkCmdCopyBuffer2                    = PFN_vkCmdCopyBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2" ) );
843         vkCmdCopyImage2                     = PFN_vkCmdCopyImage2( vkGetDeviceProcAddr( device, "vkCmdCopyImage2" ) );
844         vkCmdCopyBufferToImage2             = PFN_vkCmdCopyBufferToImage2( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2" ) );
845         vkCmdCopyImageToBuffer2             = PFN_vkCmdCopyImageToBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2" ) );
846         vkCmdBlitImage2                     = PFN_vkCmdBlitImage2( vkGetDeviceProcAddr( device, "vkCmdBlitImage2" ) );
847         vkCmdResolveImage2                  = PFN_vkCmdResolveImage2( vkGetDeviceProcAddr( device, "vkCmdResolveImage2" ) );
848         vkCmdBeginRendering                 = PFN_vkCmdBeginRendering( vkGetDeviceProcAddr( device, "vkCmdBeginRendering" ) );
849         vkCmdEndRendering                   = PFN_vkCmdEndRendering( vkGetDeviceProcAddr( device, "vkCmdEndRendering" ) );
850         vkCmdSetCullMode                    = PFN_vkCmdSetCullMode( vkGetDeviceProcAddr( device, "vkCmdSetCullMode" ) );
851         vkCmdSetFrontFace                   = PFN_vkCmdSetFrontFace( vkGetDeviceProcAddr( device, "vkCmdSetFrontFace" ) );
852         vkCmdSetPrimitiveTopology           = PFN_vkCmdSetPrimitiveTopology( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopology" ) );
853         vkCmdSetViewportWithCount           = PFN_vkCmdSetViewportWithCount( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCount" ) );
854         vkCmdSetScissorWithCount            = PFN_vkCmdSetScissorWithCount( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCount" ) );
855         vkCmdBindVertexBuffers2             = PFN_vkCmdBindVertexBuffers2( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2" ) );
856         vkCmdSetDepthTestEnable             = PFN_vkCmdSetDepthTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnable" ) );
857         vkCmdSetDepthWriteEnable            = PFN_vkCmdSetDepthWriteEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnable" ) );
858         vkCmdSetDepthCompareOp              = PFN_vkCmdSetDepthCompareOp( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOp" ) );
859         vkCmdSetDepthBoundsTestEnable       = PFN_vkCmdSetDepthBoundsTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnable" ) );
860         vkCmdSetStencilTestEnable           = PFN_vkCmdSetStencilTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnable" ) );
861         vkCmdSetStencilOp                   = PFN_vkCmdSetStencilOp( vkGetDeviceProcAddr( device, "vkCmdSetStencilOp" ) );
862         vkCmdSetRasterizerDiscardEnable     = PFN_vkCmdSetRasterizerDiscardEnable( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnable" ) );
863         vkCmdSetDepthBiasEnable             = PFN_vkCmdSetDepthBiasEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnable" ) );
864         vkCmdSetPrimitiveRestartEnable      = PFN_vkCmdSetPrimitiveRestartEnable( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnable" ) );
865         vkGetDeviceBufferMemoryRequirements = PFN_vkGetDeviceBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirements" ) );
866         vkGetDeviceImageMemoryRequirements  = PFN_vkGetDeviceImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirements" ) );
867         vkGetDeviceImageSparseMemoryRequirements =
868           PFN_vkGetDeviceImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirements" ) );
869 
870         //=== VK_KHR_swapchain ===
871         vkCreateSwapchainKHR    = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) );
872         vkDestroySwapchainKHR   = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) );
873         vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) );
874         vkAcquireNextImageKHR   = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) );
875         vkQueuePresentKHR       = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) );
876         vkGetDeviceGroupPresentCapabilitiesKHR =
877           PFN_vkGetDeviceGroupPresentCapabilitiesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) );
878         vkGetDeviceGroupSurfacePresentModesKHR =
879           PFN_vkGetDeviceGroupSurfacePresentModesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) );
880         vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) );
881 
882         //=== VK_KHR_display_swapchain ===
883         vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) );
884 
885         //=== VK_EXT_debug_marker ===
886         vkDebugMarkerSetObjectTagEXT  = PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) );
887         vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) );
888         vkCmdDebugMarkerBeginEXT      = PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) );
889         vkCmdDebugMarkerEndEXT        = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) );
890         vkCmdDebugMarkerInsertEXT     = PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) );
891 
892         //=== VK_KHR_video_queue ===
893         vkCreateVideoSessionKHR  = PFN_vkCreateVideoSessionKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionKHR" ) );
894         vkDestroyVideoSessionKHR = PFN_vkDestroyVideoSessionKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionKHR" ) );
895         vkGetVideoSessionMemoryRequirementsKHR =
896           PFN_vkGetVideoSessionMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetVideoSessionMemoryRequirementsKHR" ) );
897         vkBindVideoSessionMemoryKHR        = PFN_vkBindVideoSessionMemoryKHR( vkGetDeviceProcAddr( device, "vkBindVideoSessionMemoryKHR" ) );
898         vkCreateVideoSessionParametersKHR  = PFN_vkCreateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionParametersKHR" ) );
899         vkUpdateVideoSessionParametersKHR  = PFN_vkUpdateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkUpdateVideoSessionParametersKHR" ) );
900         vkDestroyVideoSessionParametersKHR = PFN_vkDestroyVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionParametersKHR" ) );
901         vkCmdBeginVideoCodingKHR           = PFN_vkCmdBeginVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginVideoCodingKHR" ) );
902         vkCmdEndVideoCodingKHR             = PFN_vkCmdEndVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdEndVideoCodingKHR" ) );
903         vkCmdControlVideoCodingKHR         = PFN_vkCmdControlVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdControlVideoCodingKHR" ) );
904 
905         //=== VK_KHR_video_decode_queue ===
906         vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdDecodeVideoKHR" ) );
907 
908         //=== VK_EXT_transform_feedback ===
909         vkCmdBindTransformFeedbackBuffersEXT =
910           PFN_vkCmdBindTransformFeedbackBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) );
911         vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) );
912         vkCmdEndTransformFeedbackEXT   = PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) );
913         vkCmdBeginQueryIndexedEXT      = PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) );
914         vkCmdEndQueryIndexedEXT        = PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) );
915         vkCmdDrawIndirectByteCountEXT  = PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) );
916 
917         //=== VK_NVX_binary_import ===
918         vkCreateCuModuleNVX    = PFN_vkCreateCuModuleNVX( vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" ) );
919         vkCreateCuFunctionNVX  = PFN_vkCreateCuFunctionNVX( vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" ) );
920         vkDestroyCuModuleNVX   = PFN_vkDestroyCuModuleNVX( vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" ) );
921         vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" ) );
922         vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" ) );
923 
924         //=== VK_NVX_image_view_handle ===
925         vkGetImageViewHandleNVX  = PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) );
926         vkGetImageViewAddressNVX = PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) );
927 
928         //=== VK_AMD_draw_indirect_count ===
929         vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) );
930         if ( !vkCmdDrawIndirectCount )
931           vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD;
932         vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) );
933         if ( !vkCmdDrawIndexedIndirectCount )
934           vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD;
935 
936         //=== VK_AMD_shader_info ===
937         vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) );
938 
939         //=== VK_KHR_dynamic_rendering ===
940         vkCmdBeginRenderingKHR = PFN_vkCmdBeginRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderingKHR" ) );
941         if ( !vkCmdBeginRendering )
942           vkCmdBeginRendering = vkCmdBeginRenderingKHR;
943         vkCmdEndRenderingKHR = PFN_vkCmdEndRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderingKHR" ) );
944         if ( !vkCmdEndRendering )
945           vkCmdEndRendering = vkCmdEndRenderingKHR;
946 
947 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
948         //=== VK_NV_external_memory_win32 ===
949         vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) );
950 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
951 
952         //=== VK_KHR_device_group ===
953         vkGetDeviceGroupPeerMemoryFeaturesKHR =
954           PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) );
955         if ( !vkGetDeviceGroupPeerMemoryFeatures )
956           vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR;
957         vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) );
958         if ( !vkCmdSetDeviceMask )
959           vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR;
960         vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) );
961         if ( !vkCmdDispatchBase )
962           vkCmdDispatchBase = vkCmdDispatchBaseKHR;
963 
964         //=== VK_KHR_maintenance1 ===
965         vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) );
966         if ( !vkTrimCommandPool )
967           vkTrimCommandPool = vkTrimCommandPoolKHR;
968 
969 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
970         //=== VK_KHR_external_memory_win32 ===
971         vkGetMemoryWin32HandleKHR           = PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) );
972         vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) );
973 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
974 
975         //=== VK_KHR_external_memory_fd ===
976         vkGetMemoryFdKHR           = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) );
977         vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) );
978 
979 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
980         //=== VK_KHR_external_semaphore_win32 ===
981         vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) );
982         vkGetSemaphoreWin32HandleKHR    = PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) );
983 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
984 
985         //=== VK_KHR_external_semaphore_fd ===
986         vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) );
987         vkGetSemaphoreFdKHR    = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) );
988 
989         //=== VK_KHR_push_descriptor ===
990         vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) );
991         vkCmdPushDescriptorSetWithTemplateKHR =
992           PFN_vkCmdPushDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) );
993 
994         //=== VK_EXT_conditional_rendering ===
995         vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) );
996         vkCmdEndConditionalRenderingEXT   = PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) );
997 
998         //=== VK_KHR_descriptor_update_template ===
999         vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) );
1000         if ( !vkCreateDescriptorUpdateTemplate )
1001           vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR;
1002         vkDestroyDescriptorUpdateTemplateKHR =
1003           PFN_vkDestroyDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) );
1004         if ( !vkDestroyDescriptorUpdateTemplate )
1005           vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR;
1006         vkUpdateDescriptorSetWithTemplateKHR =
1007           PFN_vkUpdateDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) );
1008         if ( !vkUpdateDescriptorSetWithTemplate )
1009           vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR;
1010 
1011         //=== VK_NV_clip_space_w_scaling ===
1012         vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) );
1013 
1014         //=== VK_EXT_display_control ===
1015         vkDisplayPowerControlEXT  = PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) );
1016         vkRegisterDeviceEventEXT  = PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) );
1017         vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) );
1018         vkGetSwapchainCounterEXT  = PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) );
1019 
1020         //=== VK_GOOGLE_display_timing ===
1021         vkGetRefreshCycleDurationGOOGLE   = PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) );
1022         vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) );
1023 
1024         //=== VK_EXT_discard_rectangles ===
1025         vkCmdSetDiscardRectangleEXT       = PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) );
1026         vkCmdSetDiscardRectangleEnableEXT = PFN_vkCmdSetDiscardRectangleEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEnableEXT" ) );
1027         vkCmdSetDiscardRectangleModeEXT   = PFN_vkCmdSetDiscardRectangleModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleModeEXT" ) );
1028 
1029         //=== VK_EXT_hdr_metadata ===
1030         vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) );
1031 
1032         //=== VK_KHR_create_renderpass2 ===
1033         vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) );
1034         if ( !vkCreateRenderPass2 )
1035           vkCreateRenderPass2 = vkCreateRenderPass2KHR;
1036         vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) );
1037         if ( !vkCmdBeginRenderPass2 )
1038           vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR;
1039         vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) );
1040         if ( !vkCmdNextSubpass2 )
1041           vkCmdNextSubpass2 = vkCmdNextSubpass2KHR;
1042         vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) );
1043         if ( !vkCmdEndRenderPass2 )
1044           vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR;
1045 
1046         //=== VK_KHR_shared_presentable_image ===
1047         vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) );
1048 
1049 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1050         //=== VK_KHR_external_fence_win32 ===
1051         vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) );
1052         vkGetFenceWin32HandleKHR    = PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) );
1053 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1054 
1055         //=== VK_KHR_external_fence_fd ===
1056         vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) );
1057         vkGetFenceFdKHR    = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) );
1058 
1059         //=== VK_KHR_performance_query ===
1060         vkAcquireProfilingLockKHR = PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) );
1061         vkReleaseProfilingLockKHR = PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) );
1062 
1063         //=== VK_EXT_debug_utils ===
1064         vkSetDebugUtilsObjectNameEXT    = PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) );
1065         vkSetDebugUtilsObjectTagEXT     = PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) );
1066         vkQueueBeginDebugUtilsLabelEXT  = PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) );
1067         vkQueueEndDebugUtilsLabelEXT    = PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) );
1068         vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) );
1069         vkCmdBeginDebugUtilsLabelEXT    = PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) );
1070         vkCmdEndDebugUtilsLabelEXT      = PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) );
1071         vkCmdInsertDebugUtilsLabelEXT   = PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) );
1072 
1073 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
1074         //=== VK_ANDROID_external_memory_android_hardware_buffer ===
1075         vkGetAndroidHardwareBufferPropertiesANDROID =
1076           PFN_vkGetAndroidHardwareBufferPropertiesANDROID( vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) );
1077         vkGetMemoryAndroidHardwareBufferANDROID =
1078           PFN_vkGetMemoryAndroidHardwareBufferANDROID( vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) );
1079 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1080 
1081 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1082         //=== VK_AMDX_shader_enqueue ===
1083         vkCreateExecutionGraphPipelinesAMDX = PFN_vkCreateExecutionGraphPipelinesAMDX( vkGetDeviceProcAddr( device, "vkCreateExecutionGraphPipelinesAMDX" ) );
1084         vkGetExecutionGraphPipelineScratchSizeAMDX =
1085           PFN_vkGetExecutionGraphPipelineScratchSizeAMDX( vkGetDeviceProcAddr( device, "vkGetExecutionGraphPipelineScratchSizeAMDX" ) );
1086         vkGetExecutionGraphPipelineNodeIndexAMDX =
1087           PFN_vkGetExecutionGraphPipelineNodeIndexAMDX( vkGetDeviceProcAddr( device, "vkGetExecutionGraphPipelineNodeIndexAMDX" ) );
1088         vkCmdInitializeGraphScratchMemoryAMDX =
1089           PFN_vkCmdInitializeGraphScratchMemoryAMDX( vkGetDeviceProcAddr( device, "vkCmdInitializeGraphScratchMemoryAMDX" ) );
1090         vkCmdDispatchGraphAMDX              = PFN_vkCmdDispatchGraphAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphAMDX" ) );
1091         vkCmdDispatchGraphIndirectAMDX      = PFN_vkCmdDispatchGraphIndirectAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphIndirectAMDX" ) );
1092         vkCmdDispatchGraphIndirectCountAMDX = PFN_vkCmdDispatchGraphIndirectCountAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphIndirectCountAMDX" ) );
1093 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1094 
1095         //=== VK_EXT_sample_locations ===
1096         vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) );
1097 
1098         //=== VK_KHR_get_memory_requirements2 ===
1099         vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) );
1100         if ( !vkGetImageMemoryRequirements2 )
1101           vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR;
1102         vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) );
1103         if ( !vkGetBufferMemoryRequirements2 )
1104           vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR;
1105         vkGetImageSparseMemoryRequirements2KHR =
1106           PFN_vkGetImageSparseMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) );
1107         if ( !vkGetImageSparseMemoryRequirements2 )
1108           vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR;
1109 
1110         //=== VK_KHR_acceleration_structure ===
1111         vkCreateAccelerationStructureKHR    = PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) );
1112         vkDestroyAccelerationStructureKHR   = PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) );
1113         vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) );
1114         vkCmdBuildAccelerationStructuresIndirectKHR =
1115           PFN_vkCmdBuildAccelerationStructuresIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) );
1116         vkBuildAccelerationStructuresKHR = PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) );
1117         vkCopyAccelerationStructureKHR   = PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) );
1118         vkCopyAccelerationStructureToMemoryKHR =
1119           PFN_vkCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) );
1120         vkCopyMemoryToAccelerationStructureKHR =
1121           PFN_vkCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) );
1122         vkWriteAccelerationStructuresPropertiesKHR =
1123           PFN_vkWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) );
1124         vkCmdCopyAccelerationStructureKHR = PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) );
1125         vkCmdCopyAccelerationStructureToMemoryKHR =
1126           PFN_vkCmdCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) );
1127         vkCmdCopyMemoryToAccelerationStructureKHR =
1128           PFN_vkCmdCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) );
1129         vkGetAccelerationStructureDeviceAddressKHR =
1130           PFN_vkGetAccelerationStructureDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) );
1131         vkCmdWriteAccelerationStructuresPropertiesKHR =
1132           PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) );
1133         vkGetDeviceAccelerationStructureCompatibilityKHR =
1134           PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) );
1135         vkGetAccelerationStructureBuildSizesKHR =
1136           PFN_vkGetAccelerationStructureBuildSizesKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) );
1137 
1138         //=== VK_KHR_ray_tracing_pipeline ===
1139         vkCmdTraceRaysKHR              = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) );
1140         vkCreateRayTracingPipelinesKHR = PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) );
1141         vkGetRayTracingShaderGroupHandlesKHR =
1142           PFN_vkGetRayTracingShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) );
1143         vkGetRayTracingCaptureReplayShaderGroupHandlesKHR =
1144           PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) );
1145         vkCmdTraceRaysIndirectKHR = PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) );
1146         vkGetRayTracingShaderGroupStackSizeKHR =
1147           PFN_vkGetRayTracingShaderGroupStackSizeKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) );
1148         vkCmdSetRayTracingPipelineStackSizeKHR =
1149           PFN_vkCmdSetRayTracingPipelineStackSizeKHR( vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) );
1150 
1151         //=== VK_KHR_sampler_ycbcr_conversion ===
1152         vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) );
1153         if ( !vkCreateSamplerYcbcrConversion )
1154           vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR;
1155         vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) );
1156         if ( !vkDestroySamplerYcbcrConversion )
1157           vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR;
1158 
1159         //=== VK_KHR_bind_memory2 ===
1160         vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) );
1161         if ( !vkBindBufferMemory2 )
1162           vkBindBufferMemory2 = vkBindBufferMemory2KHR;
1163         vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) );
1164         if ( !vkBindImageMemory2 )
1165           vkBindImageMemory2 = vkBindImageMemory2KHR;
1166 
1167         //=== VK_EXT_image_drm_format_modifier ===
1168         vkGetImageDrmFormatModifierPropertiesEXT =
1169           PFN_vkGetImageDrmFormatModifierPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) );
1170 
1171         //=== VK_EXT_validation_cache ===
1172         vkCreateValidationCacheEXT  = PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) );
1173         vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) );
1174         vkMergeValidationCachesEXT  = PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) );
1175         vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) );
1176 
1177         //=== VK_NV_shading_rate_image ===
1178         vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) );
1179         vkCmdSetViewportShadingRatePaletteNV =
1180           PFN_vkCmdSetViewportShadingRatePaletteNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) );
1181         vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) );
1182 
1183         //=== VK_NV_ray_tracing ===
1184         vkCreateAccelerationStructureNV  = PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) );
1185         vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) );
1186         vkGetAccelerationStructureMemoryRequirementsNV =
1187           PFN_vkGetAccelerationStructureMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) );
1188         vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) );
1189         vkCmdBuildAccelerationStructureNV   = PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) );
1190         vkCmdCopyAccelerationStructureNV    = PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) );
1191         vkCmdTraceRaysNV                    = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) );
1192         vkCreateRayTracingPipelinesNV       = PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) );
1193         vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) );
1194         if ( !vkGetRayTracingShaderGroupHandlesKHR )
1195           vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV;
1196         vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) );
1197         vkCmdWriteAccelerationStructuresPropertiesNV =
1198           PFN_vkCmdWriteAccelerationStructuresPropertiesNV( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) );
1199         vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) );
1200 
1201         //=== VK_KHR_maintenance3 ===
1202         vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) );
1203         if ( !vkGetDescriptorSetLayoutSupport )
1204           vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR;
1205 
1206         //=== VK_KHR_draw_indirect_count ===
1207         vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) );
1208         if ( !vkCmdDrawIndirectCount )
1209           vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR;
1210         vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) );
1211         if ( !vkCmdDrawIndexedIndirectCount )
1212           vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR;
1213 
1214         //=== VK_EXT_external_memory_host ===
1215         vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) );
1216 
1217         //=== VK_AMD_buffer_marker ===
1218         vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) );
1219 
1220         //=== VK_EXT_calibrated_timestamps ===
1221         vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) );
1222         if ( !vkGetCalibratedTimestampsKHR )
1223           vkGetCalibratedTimestampsKHR = vkGetCalibratedTimestampsEXT;
1224 
1225         //=== VK_NV_mesh_shader ===
1226         vkCmdDrawMeshTasksNV              = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) );
1227         vkCmdDrawMeshTasksIndirectNV      = PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) );
1228         vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) );
1229 
1230         //=== VK_NV_scissor_exclusive ===
1231         vkCmdSetExclusiveScissorEnableNV = PFN_vkCmdSetExclusiveScissorEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorEnableNV" ) );
1232         vkCmdSetExclusiveScissorNV       = PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) );
1233 
1234         //=== VK_NV_device_diagnostic_checkpoints ===
1235         vkCmdSetCheckpointNV       = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) );
1236         vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) );
1237 
1238         //=== VK_KHR_timeline_semaphore ===
1239         vkGetSemaphoreCounterValueKHR = PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) );
1240         if ( !vkGetSemaphoreCounterValue )
1241           vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR;
1242         vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) );
1243         if ( !vkWaitSemaphores )
1244           vkWaitSemaphores = vkWaitSemaphoresKHR;
1245         vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) );
1246         if ( !vkSignalSemaphore )
1247           vkSignalSemaphore = vkSignalSemaphoreKHR;
1248 
1249         //=== VK_INTEL_performance_query ===
1250         vkInitializePerformanceApiINTEL   = PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) );
1251         vkUninitializePerformanceApiINTEL = PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) );
1252         vkCmdSetPerformanceMarkerINTEL    = PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) );
1253         vkCmdSetPerformanceStreamMarkerINTEL =
1254           PFN_vkCmdSetPerformanceStreamMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) );
1255         vkCmdSetPerformanceOverrideINTEL = PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) );
1256         vkAcquirePerformanceConfigurationINTEL =
1257           PFN_vkAcquirePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) );
1258         vkReleasePerformanceConfigurationINTEL =
1259           PFN_vkReleasePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) );
1260         vkQueueSetPerformanceConfigurationINTEL =
1261           PFN_vkQueueSetPerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) );
1262         vkGetPerformanceParameterINTEL = PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) );
1263 
1264         //=== VK_AMD_display_native_hdr ===
1265         vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) );
1266 
1267         //=== VK_KHR_fragment_shading_rate ===
1268         vkCmdSetFragmentShadingRateKHR = PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) );
1269 
1270         //=== VK_KHR_dynamic_rendering_local_read ===
1271         vkCmdSetRenderingAttachmentLocationsKHR =
1272           PFN_vkCmdSetRenderingAttachmentLocationsKHR( vkGetDeviceProcAddr( device, "vkCmdSetRenderingAttachmentLocationsKHR" ) );
1273         vkCmdSetRenderingInputAttachmentIndicesKHR =
1274           PFN_vkCmdSetRenderingInputAttachmentIndicesKHR( vkGetDeviceProcAddr( device, "vkCmdSetRenderingInputAttachmentIndicesKHR" ) );
1275 
1276         //=== VK_EXT_buffer_device_address ===
1277         vkGetBufferDeviceAddressEXT = PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) );
1278         if ( !vkGetBufferDeviceAddress )
1279           vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT;
1280 
1281         //=== VK_KHR_present_wait ===
1282         vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetDeviceProcAddr( device, "vkWaitForPresentKHR" ) );
1283 
1284 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1285         //=== VK_EXT_full_screen_exclusive ===
1286         vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) );
1287         vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) );
1288         vkGetDeviceGroupSurfacePresentModes2EXT =
1289           PFN_vkGetDeviceGroupSurfacePresentModes2EXT( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) );
1290 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1291 
1292         //=== VK_KHR_buffer_device_address ===
1293         vkGetBufferDeviceAddressKHR = PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) );
1294         if ( !vkGetBufferDeviceAddress )
1295           vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR;
1296         vkGetBufferOpaqueCaptureAddressKHR = PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) );
1297         if ( !vkGetBufferOpaqueCaptureAddress )
1298           vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR;
1299         vkGetDeviceMemoryOpaqueCaptureAddressKHR =
1300           PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) );
1301         if ( !vkGetDeviceMemoryOpaqueCaptureAddress )
1302           vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR;
1303 
1304         //=== VK_EXT_line_rasterization ===
1305         vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) );
1306         if ( !vkCmdSetLineStippleKHR )
1307           vkCmdSetLineStippleKHR = vkCmdSetLineStippleEXT;
1308 
1309         //=== VK_EXT_host_query_reset ===
1310         vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) );
1311         if ( !vkResetQueryPool )
1312           vkResetQueryPool = vkResetQueryPoolEXT;
1313 
1314         //=== VK_EXT_extended_dynamic_state ===
1315         vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) );
1316         if ( !vkCmdSetCullMode )
1317           vkCmdSetCullMode = vkCmdSetCullModeEXT;
1318         vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) );
1319         if ( !vkCmdSetFrontFace )
1320           vkCmdSetFrontFace = vkCmdSetFrontFaceEXT;
1321         vkCmdSetPrimitiveTopologyEXT = PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) );
1322         if ( !vkCmdSetPrimitiveTopology )
1323           vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopologyEXT;
1324         vkCmdSetViewportWithCountEXT = PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) );
1325         if ( !vkCmdSetViewportWithCount )
1326           vkCmdSetViewportWithCount = vkCmdSetViewportWithCountEXT;
1327         vkCmdSetScissorWithCountEXT = PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) );
1328         if ( !vkCmdSetScissorWithCount )
1329           vkCmdSetScissorWithCount = vkCmdSetScissorWithCountEXT;
1330         vkCmdBindVertexBuffers2EXT = PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) );
1331         if ( !vkCmdBindVertexBuffers2 )
1332           vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2EXT;
1333         vkCmdSetDepthTestEnableEXT = PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) );
1334         if ( !vkCmdSetDepthTestEnable )
1335           vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnableEXT;
1336         vkCmdSetDepthWriteEnableEXT = PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) );
1337         if ( !vkCmdSetDepthWriteEnable )
1338           vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnableEXT;
1339         vkCmdSetDepthCompareOpEXT = PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) );
1340         if ( !vkCmdSetDepthCompareOp )
1341           vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOpEXT;
1342         vkCmdSetDepthBoundsTestEnableEXT = PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) );
1343         if ( !vkCmdSetDepthBoundsTestEnable )
1344           vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnableEXT;
1345         vkCmdSetStencilTestEnableEXT = PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) );
1346         if ( !vkCmdSetStencilTestEnable )
1347           vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT;
1348         vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) );
1349         if ( !vkCmdSetStencilOp )
1350           vkCmdSetStencilOp = vkCmdSetStencilOpEXT;
1351 
1352         //=== VK_KHR_deferred_host_operations ===
1353         vkCreateDeferredOperationKHR  = PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) );
1354         vkDestroyDeferredOperationKHR = PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) );
1355         vkGetDeferredOperationMaxConcurrencyKHR =
1356           PFN_vkGetDeferredOperationMaxConcurrencyKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) );
1357         vkGetDeferredOperationResultKHR = PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) );
1358         vkDeferredOperationJoinKHR      = PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) );
1359 
1360         //=== VK_KHR_pipeline_executable_properties ===
1361         vkGetPipelineExecutablePropertiesKHR =
1362           PFN_vkGetPipelineExecutablePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) );
1363         vkGetPipelineExecutableStatisticsKHR =
1364           PFN_vkGetPipelineExecutableStatisticsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) );
1365         vkGetPipelineExecutableInternalRepresentationsKHR =
1366           PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) );
1367 
1368         //=== VK_EXT_host_image_copy ===
1369         vkCopyMemoryToImageEXT          = PFN_vkCopyMemoryToImageEXT( vkGetDeviceProcAddr( device, "vkCopyMemoryToImageEXT" ) );
1370         vkCopyImageToMemoryEXT          = PFN_vkCopyImageToMemoryEXT( vkGetDeviceProcAddr( device, "vkCopyImageToMemoryEXT" ) );
1371         vkCopyImageToImageEXT           = PFN_vkCopyImageToImageEXT( vkGetDeviceProcAddr( device, "vkCopyImageToImageEXT" ) );
1372         vkTransitionImageLayoutEXT      = PFN_vkTransitionImageLayoutEXT( vkGetDeviceProcAddr( device, "vkTransitionImageLayoutEXT" ) );
1373         vkGetImageSubresourceLayout2EXT = PFN_vkGetImageSubresourceLayout2EXT( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2EXT" ) );
1374         if ( !vkGetImageSubresourceLayout2KHR )
1375           vkGetImageSubresourceLayout2KHR = vkGetImageSubresourceLayout2EXT;
1376 
1377         //=== VK_KHR_map_memory2 ===
1378         vkMapMemory2KHR   = PFN_vkMapMemory2KHR( vkGetDeviceProcAddr( device, "vkMapMemory2KHR" ) );
1379         vkUnmapMemory2KHR = PFN_vkUnmapMemory2KHR( vkGetDeviceProcAddr( device, "vkUnmapMemory2KHR" ) );
1380 
1381         //=== VK_EXT_swapchain_maintenance1 ===
1382         vkReleaseSwapchainImagesEXT = PFN_vkReleaseSwapchainImagesEXT( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesEXT" ) );
1383 
1384         //=== VK_NV_device_generated_commands ===
1385         vkGetGeneratedCommandsMemoryRequirementsNV =
1386           PFN_vkGetGeneratedCommandsMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) );
1387         vkCmdPreprocessGeneratedCommandsNV = PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) );
1388         vkCmdExecuteGeneratedCommandsNV    = PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) );
1389         vkCmdBindPipelineShaderGroupNV     = PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) );
1390         vkCreateIndirectCommandsLayoutNV   = PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) );
1391         vkDestroyIndirectCommandsLayoutNV  = PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) );
1392 
1393         //=== VK_EXT_depth_bias_control ===
1394         vkCmdSetDepthBias2EXT = PFN_vkCmdSetDepthBias2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias2EXT" ) );
1395 
1396         //=== VK_EXT_private_data ===
1397         vkCreatePrivateDataSlotEXT = PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) );
1398         if ( !vkCreatePrivateDataSlot )
1399           vkCreatePrivateDataSlot = vkCreatePrivateDataSlotEXT;
1400         vkDestroyPrivateDataSlotEXT = PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) );
1401         if ( !vkDestroyPrivateDataSlot )
1402           vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlotEXT;
1403         vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) );
1404         if ( !vkSetPrivateData )
1405           vkSetPrivateData = vkSetPrivateDataEXT;
1406         vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) );
1407         if ( !vkGetPrivateData )
1408           vkGetPrivateData = vkGetPrivateDataEXT;
1409 
1410         //=== VK_KHR_video_encode_queue ===
1411         vkGetEncodedVideoSessionParametersKHR =
1412           PFN_vkGetEncodedVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkGetEncodedVideoSessionParametersKHR" ) );
1413         vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) );
1414 
1415 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1416         //=== VK_NV_cuda_kernel_launch ===
1417         vkCreateCudaModuleNV    = PFN_vkCreateCudaModuleNV( vkGetDeviceProcAddr( device, "vkCreateCudaModuleNV" ) );
1418         vkGetCudaModuleCacheNV  = PFN_vkGetCudaModuleCacheNV( vkGetDeviceProcAddr( device, "vkGetCudaModuleCacheNV" ) );
1419         vkCreateCudaFunctionNV  = PFN_vkCreateCudaFunctionNV( vkGetDeviceProcAddr( device, "vkCreateCudaFunctionNV" ) );
1420         vkDestroyCudaModuleNV   = PFN_vkDestroyCudaModuleNV( vkGetDeviceProcAddr( device, "vkDestroyCudaModuleNV" ) );
1421         vkDestroyCudaFunctionNV = PFN_vkDestroyCudaFunctionNV( vkGetDeviceProcAddr( device, "vkDestroyCudaFunctionNV" ) );
1422         vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetDeviceProcAddr( device, "vkCmdCudaLaunchKernelNV" ) );
1423 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1424 
1425 #  if defined( VK_USE_PLATFORM_METAL_EXT )
1426         //=== VK_EXT_metal_objects ===
1427         vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetDeviceProcAddr( device, "vkExportMetalObjectsEXT" ) );
1428 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
1429 
1430         //=== VK_KHR_synchronization2 ===
1431         vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) );
1432         if ( !vkCmdSetEvent2 )
1433           vkCmdSetEvent2 = vkCmdSetEvent2KHR;
1434         vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) );
1435         if ( !vkCmdResetEvent2 )
1436           vkCmdResetEvent2 = vkCmdResetEvent2KHR;
1437         vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) );
1438         if ( !vkCmdWaitEvents2 )
1439           vkCmdWaitEvents2 = vkCmdWaitEvents2KHR;
1440         vkCmdPipelineBarrier2KHR = PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) );
1441         if ( !vkCmdPipelineBarrier2 )
1442           vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR;
1443         vkCmdWriteTimestamp2KHR = PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) );
1444         if ( !vkCmdWriteTimestamp2 )
1445           vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2KHR;
1446         vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) );
1447         if ( !vkQueueSubmit2 )
1448           vkQueueSubmit2 = vkQueueSubmit2KHR;
1449         vkCmdWriteBufferMarker2AMD  = PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) );
1450         vkGetQueueCheckpointData2NV = PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) );
1451 
1452         //=== VK_EXT_descriptor_buffer ===
1453         vkGetDescriptorSetLayoutSizeEXT = PFN_vkGetDescriptorSetLayoutSizeEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSizeEXT" ) );
1454         vkGetDescriptorSetLayoutBindingOffsetEXT =
1455           PFN_vkGetDescriptorSetLayoutBindingOffsetEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutBindingOffsetEXT" ) );
1456         vkGetDescriptorEXT                 = PFN_vkGetDescriptorEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorEXT" ) );
1457         vkCmdBindDescriptorBuffersEXT      = PFN_vkCmdBindDescriptorBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBuffersEXT" ) );
1458         vkCmdSetDescriptorBufferOffsetsEXT = PFN_vkCmdSetDescriptorBufferOffsetsEXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsetsEXT" ) );
1459         vkCmdBindDescriptorBufferEmbeddedSamplersEXT =
1460           PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT" ) );
1461         vkGetBufferOpaqueCaptureDescriptorDataEXT =
1462           PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureDescriptorDataEXT" ) );
1463         vkGetImageOpaqueCaptureDescriptorDataEXT =
1464           PFN_vkGetImageOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetImageOpaqueCaptureDescriptorDataEXT" ) );
1465         vkGetImageViewOpaqueCaptureDescriptorDataEXT =
1466           PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetImageViewOpaqueCaptureDescriptorDataEXT" ) );
1467         vkGetSamplerOpaqueCaptureDescriptorDataEXT =
1468           PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetSamplerOpaqueCaptureDescriptorDataEXT" ) );
1469         vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
1470           vkGetDeviceProcAddr( device, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT" ) );
1471 
1472         //=== VK_NV_fragment_shading_rate_enums ===
1473         vkCmdSetFragmentShadingRateEnumNV = PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) );
1474 
1475         //=== VK_EXT_mesh_shader ===
1476         vkCmdDrawMeshTasksEXT              = PFN_vkCmdDrawMeshTasksEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksEXT" ) );
1477         vkCmdDrawMeshTasksIndirectEXT      = PFN_vkCmdDrawMeshTasksIndirectEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectEXT" ) );
1478         vkCmdDrawMeshTasksIndirectCountEXT = PFN_vkCmdDrawMeshTasksIndirectCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountEXT" ) );
1479 
1480         //=== VK_KHR_copy_commands2 ===
1481         vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) );
1482         if ( !vkCmdCopyBuffer2 )
1483           vkCmdCopyBuffer2 = vkCmdCopyBuffer2KHR;
1484         vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) );
1485         if ( !vkCmdCopyImage2 )
1486           vkCmdCopyImage2 = vkCmdCopyImage2KHR;
1487         vkCmdCopyBufferToImage2KHR = PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) );
1488         if ( !vkCmdCopyBufferToImage2 )
1489           vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2KHR;
1490         vkCmdCopyImageToBuffer2KHR = PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) );
1491         if ( !vkCmdCopyImageToBuffer2 )
1492           vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2KHR;
1493         vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) );
1494         if ( !vkCmdBlitImage2 )
1495           vkCmdBlitImage2 = vkCmdBlitImage2KHR;
1496         vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) );
1497         if ( !vkCmdResolveImage2 )
1498           vkCmdResolveImage2 = vkCmdResolveImage2KHR;
1499 
1500         //=== VK_EXT_device_fault ===
1501         vkGetDeviceFaultInfoEXT = PFN_vkGetDeviceFaultInfoEXT( vkGetDeviceProcAddr( device, "vkGetDeviceFaultInfoEXT" ) );
1502 
1503         //=== VK_EXT_vertex_input_dynamic_state ===
1504         vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" ) );
1505 
1506 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1507         //=== VK_FUCHSIA_external_memory ===
1508         vkGetMemoryZirconHandleFUCHSIA = PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandleFUCHSIA" ) );
1509         vkGetMemoryZirconHandlePropertiesFUCHSIA =
1510           PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) );
1511 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1512 
1513 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1514         //=== VK_FUCHSIA_external_semaphore ===
1515         vkImportSemaphoreZirconHandleFUCHSIA =
1516           PFN_vkImportSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkImportSemaphoreZirconHandleFUCHSIA" ) );
1517         vkGetSemaphoreZirconHandleFUCHSIA = PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetSemaphoreZirconHandleFUCHSIA" ) );
1518 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1519 
1520 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1521         //=== VK_FUCHSIA_buffer_collection ===
1522         vkCreateBufferCollectionFUCHSIA = PFN_vkCreateBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkCreateBufferCollectionFUCHSIA" ) );
1523         vkSetBufferCollectionImageConstraintsFUCHSIA =
1524           PFN_vkSetBufferCollectionImageConstraintsFUCHSIA( vkGetDeviceProcAddr( device, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) );
1525         vkSetBufferCollectionBufferConstraintsFUCHSIA =
1526           PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA( vkGetDeviceProcAddr( device, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) );
1527         vkDestroyBufferCollectionFUCHSIA = PFN_vkDestroyBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkDestroyBufferCollectionFUCHSIA" ) );
1528         vkGetBufferCollectionPropertiesFUCHSIA =
1529           PFN_vkGetBufferCollectionPropertiesFUCHSIA( vkGetDeviceProcAddr( device, "vkGetBufferCollectionPropertiesFUCHSIA" ) );
1530 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1531 
1532         //=== VK_HUAWEI_subpass_shading ===
1533         vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI =
1534           PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) );
1535         vkCmdSubpassShadingHUAWEI = PFN_vkCmdSubpassShadingHUAWEI( vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" ) );
1536 
1537         //=== VK_HUAWEI_invocation_mask ===
1538         vkCmdBindInvocationMaskHUAWEI = PFN_vkCmdBindInvocationMaskHUAWEI( vkGetDeviceProcAddr( device, "vkCmdBindInvocationMaskHUAWEI" ) );
1539 
1540         //=== VK_NV_external_memory_rdma ===
1541         vkGetMemoryRemoteAddressNV = PFN_vkGetMemoryRemoteAddressNV( vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" ) );
1542 
1543         //=== VK_EXT_pipeline_properties ===
1544         vkGetPipelinePropertiesEXT = PFN_vkGetPipelinePropertiesEXT( vkGetDeviceProcAddr( device, "vkGetPipelinePropertiesEXT" ) );
1545 
1546         //=== VK_EXT_extended_dynamic_state2 ===
1547         vkCmdSetPatchControlPointsEXT      = PFN_vkCmdSetPatchControlPointsEXT( vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" ) );
1548         vkCmdSetRasterizerDiscardEnableEXT = PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" ) );
1549         if ( !vkCmdSetRasterizerDiscardEnable )
1550           vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnableEXT;
1551         vkCmdSetDepthBiasEnableEXT = PFN_vkCmdSetDepthBiasEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" ) );
1552         if ( !vkCmdSetDepthBiasEnable )
1553           vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnableEXT;
1554         vkCmdSetLogicOpEXT                = PFN_vkCmdSetLogicOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" ) );
1555         vkCmdSetPrimitiveRestartEnableEXT = PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" ) );
1556         if ( !vkCmdSetPrimitiveRestartEnable )
1557           vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnableEXT;
1558 
1559         //=== VK_EXT_color_write_enable ===
1560         vkCmdSetColorWriteEnableEXT = PFN_vkCmdSetColorWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" ) );
1561 
1562         //=== VK_KHR_ray_tracing_maintenance1 ===
1563         vkCmdTraceRaysIndirect2KHR = PFN_vkCmdTraceRaysIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirect2KHR" ) );
1564 
1565         //=== VK_EXT_multi_draw ===
1566         vkCmdDrawMultiEXT        = PFN_vkCmdDrawMultiEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" ) );
1567         vkCmdDrawMultiIndexedEXT = PFN_vkCmdDrawMultiIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" ) );
1568 
1569         //=== VK_EXT_opacity_micromap ===
1570         vkCreateMicromapEXT                 = PFN_vkCreateMicromapEXT( vkGetDeviceProcAddr( device, "vkCreateMicromapEXT" ) );
1571         vkDestroyMicromapEXT                = PFN_vkDestroyMicromapEXT( vkGetDeviceProcAddr( device, "vkDestroyMicromapEXT" ) );
1572         vkCmdBuildMicromapsEXT              = PFN_vkCmdBuildMicromapsEXT( vkGetDeviceProcAddr( device, "vkCmdBuildMicromapsEXT" ) );
1573         vkBuildMicromapsEXT                 = PFN_vkBuildMicromapsEXT( vkGetDeviceProcAddr( device, "vkBuildMicromapsEXT" ) );
1574         vkCopyMicromapEXT                   = PFN_vkCopyMicromapEXT( vkGetDeviceProcAddr( device, "vkCopyMicromapEXT" ) );
1575         vkCopyMicromapToMemoryEXT           = PFN_vkCopyMicromapToMemoryEXT( vkGetDeviceProcAddr( device, "vkCopyMicromapToMemoryEXT" ) );
1576         vkCopyMemoryToMicromapEXT           = PFN_vkCopyMemoryToMicromapEXT( vkGetDeviceProcAddr( device, "vkCopyMemoryToMicromapEXT" ) );
1577         vkWriteMicromapsPropertiesEXT       = PFN_vkWriteMicromapsPropertiesEXT( vkGetDeviceProcAddr( device, "vkWriteMicromapsPropertiesEXT" ) );
1578         vkCmdCopyMicromapEXT                = PFN_vkCmdCopyMicromapEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMicromapEXT" ) );
1579         vkCmdCopyMicromapToMemoryEXT        = PFN_vkCmdCopyMicromapToMemoryEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMicromapToMemoryEXT" ) );
1580         vkCmdCopyMemoryToMicromapEXT        = PFN_vkCmdCopyMemoryToMicromapEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToMicromapEXT" ) );
1581         vkCmdWriteMicromapsPropertiesEXT    = PFN_vkCmdWriteMicromapsPropertiesEXT( vkGetDeviceProcAddr( device, "vkCmdWriteMicromapsPropertiesEXT" ) );
1582         vkGetDeviceMicromapCompatibilityEXT = PFN_vkGetDeviceMicromapCompatibilityEXT( vkGetDeviceProcAddr( device, "vkGetDeviceMicromapCompatibilityEXT" ) );
1583         vkGetMicromapBuildSizesEXT          = PFN_vkGetMicromapBuildSizesEXT( vkGetDeviceProcAddr( device, "vkGetMicromapBuildSizesEXT" ) );
1584 
1585         //=== VK_HUAWEI_cluster_culling_shader ===
1586         vkCmdDrawClusterHUAWEI         = PFN_vkCmdDrawClusterHUAWEI( vkGetDeviceProcAddr( device, "vkCmdDrawClusterHUAWEI" ) );
1587         vkCmdDrawClusterIndirectHUAWEI = PFN_vkCmdDrawClusterIndirectHUAWEI( vkGetDeviceProcAddr( device, "vkCmdDrawClusterIndirectHUAWEI" ) );
1588 
1589         //=== VK_EXT_pageable_device_local_memory ===
1590         vkSetDeviceMemoryPriorityEXT = PFN_vkSetDeviceMemoryPriorityEXT( vkGetDeviceProcAddr( device, "vkSetDeviceMemoryPriorityEXT" ) );
1591 
1592         //=== VK_KHR_maintenance4 ===
1593         vkGetDeviceBufferMemoryRequirementsKHR =
1594           PFN_vkGetDeviceBufferMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirementsKHR" ) );
1595         if ( !vkGetDeviceBufferMemoryRequirements )
1596           vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirementsKHR;
1597         vkGetDeviceImageMemoryRequirementsKHR =
1598           PFN_vkGetDeviceImageMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirementsKHR" ) );
1599         if ( !vkGetDeviceImageMemoryRequirements )
1600           vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirementsKHR;
1601         vkGetDeviceImageSparseMemoryRequirementsKHR =
1602           PFN_vkGetDeviceImageSparseMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) );
1603         if ( !vkGetDeviceImageSparseMemoryRequirements )
1604           vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirementsKHR;
1605 
1606         //=== VK_VALVE_descriptor_set_host_mapping ===
1607         vkGetDescriptorSetLayoutHostMappingInfoVALVE =
1608           PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutHostMappingInfoVALVE" ) );
1609         vkGetDescriptorSetHostMappingVALVE = PFN_vkGetDescriptorSetHostMappingVALVE( vkGetDeviceProcAddr( device, "vkGetDescriptorSetHostMappingVALVE" ) );
1610 
1611         //=== VK_NV_copy_memory_indirect ===
1612         vkCmdCopyMemoryIndirectNV        = PFN_vkCmdCopyMemoryIndirectNV( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryIndirectNV" ) );
1613         vkCmdCopyMemoryToImageIndirectNV = PFN_vkCmdCopyMemoryToImageIndirectNV( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageIndirectNV" ) );
1614 
1615         //=== VK_NV_memory_decompression ===
1616         vkCmdDecompressMemoryNV = PFN_vkCmdDecompressMemoryNV( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryNV" ) );
1617         vkCmdDecompressMemoryIndirectCountNV =
1618           PFN_vkCmdDecompressMemoryIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryIndirectCountNV" ) );
1619 
1620         //=== VK_NV_device_generated_commands_compute ===
1621         vkGetPipelineIndirectMemoryRequirementsNV =
1622           PFN_vkGetPipelineIndirectMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetPipelineIndirectMemoryRequirementsNV" ) );
1623         vkCmdUpdatePipelineIndirectBufferNV = PFN_vkCmdUpdatePipelineIndirectBufferNV( vkGetDeviceProcAddr( device, "vkCmdUpdatePipelineIndirectBufferNV" ) );
1624         vkGetPipelineIndirectDeviceAddressNV =
1625           PFN_vkGetPipelineIndirectDeviceAddressNV( vkGetDeviceProcAddr( device, "vkGetPipelineIndirectDeviceAddressNV" ) );
1626 
1627         //=== VK_EXT_extended_dynamic_state3 ===
1628         vkCmdSetDepthClampEnableEXT         = PFN_vkCmdSetDepthClampEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampEnableEXT" ) );
1629         vkCmdSetPolygonModeEXT              = PFN_vkCmdSetPolygonModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetPolygonModeEXT" ) );
1630         vkCmdSetRasterizationSamplesEXT     = PFN_vkCmdSetRasterizationSamplesEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizationSamplesEXT" ) );
1631         vkCmdSetSampleMaskEXT               = PFN_vkCmdSetSampleMaskEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleMaskEXT" ) );
1632         vkCmdSetAlphaToCoverageEnableEXT    = PFN_vkCmdSetAlphaToCoverageEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAlphaToCoverageEnableEXT" ) );
1633         vkCmdSetAlphaToOneEnableEXT         = PFN_vkCmdSetAlphaToOneEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAlphaToOneEnableEXT" ) );
1634         vkCmdSetLogicOpEnableEXT            = PFN_vkCmdSetLogicOpEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEnableEXT" ) );
1635         vkCmdSetColorBlendEnableEXT         = PFN_vkCmdSetColorBlendEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendEnableEXT" ) );
1636         vkCmdSetColorBlendEquationEXT       = PFN_vkCmdSetColorBlendEquationEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendEquationEXT" ) );
1637         vkCmdSetColorWriteMaskEXT           = PFN_vkCmdSetColorWriteMaskEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteMaskEXT" ) );
1638         vkCmdSetTessellationDomainOriginEXT = PFN_vkCmdSetTessellationDomainOriginEXT( vkGetDeviceProcAddr( device, "vkCmdSetTessellationDomainOriginEXT" ) );
1639         vkCmdSetRasterizationStreamEXT      = PFN_vkCmdSetRasterizationStreamEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizationStreamEXT" ) );
1640         vkCmdSetConservativeRasterizationModeEXT =
1641           PFN_vkCmdSetConservativeRasterizationModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetConservativeRasterizationModeEXT" ) );
1642         vkCmdSetExtraPrimitiveOverestimationSizeEXT =
1643           PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT( vkGetDeviceProcAddr( device, "vkCmdSetExtraPrimitiveOverestimationSizeEXT" ) );
1644         vkCmdSetDepthClipEnableEXT       = PFN_vkCmdSetDepthClipEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClipEnableEXT" ) );
1645         vkCmdSetSampleLocationsEnableEXT = PFN_vkCmdSetSampleLocationsEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEnableEXT" ) );
1646         vkCmdSetColorBlendAdvancedEXT    = PFN_vkCmdSetColorBlendAdvancedEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendAdvancedEXT" ) );
1647         vkCmdSetProvokingVertexModeEXT   = PFN_vkCmdSetProvokingVertexModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetProvokingVertexModeEXT" ) );
1648         vkCmdSetLineRasterizationModeEXT = PFN_vkCmdSetLineRasterizationModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineRasterizationModeEXT" ) );
1649         vkCmdSetLineStippleEnableEXT     = PFN_vkCmdSetLineStippleEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEnableEXT" ) );
1650         vkCmdSetDepthClipNegativeOneToOneEXT =
1651           PFN_vkCmdSetDepthClipNegativeOneToOneEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClipNegativeOneToOneEXT" ) );
1652         vkCmdSetViewportWScalingEnableNV  = PFN_vkCmdSetViewportWScalingEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingEnableNV" ) );
1653         vkCmdSetViewportSwizzleNV         = PFN_vkCmdSetViewportSwizzleNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportSwizzleNV" ) );
1654         vkCmdSetCoverageToColorEnableNV   = PFN_vkCmdSetCoverageToColorEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageToColorEnableNV" ) );
1655         vkCmdSetCoverageToColorLocationNV = PFN_vkCmdSetCoverageToColorLocationNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageToColorLocationNV" ) );
1656         vkCmdSetCoverageModulationModeNV  = PFN_vkCmdSetCoverageModulationModeNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationModeNV" ) );
1657         vkCmdSetCoverageModulationTableEnableNV =
1658           PFN_vkCmdSetCoverageModulationTableEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationTableEnableNV" ) );
1659         vkCmdSetCoverageModulationTableNV = PFN_vkCmdSetCoverageModulationTableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationTableNV" ) );
1660         vkCmdSetShadingRateImageEnableNV  = PFN_vkCmdSetShadingRateImageEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetShadingRateImageEnableNV" ) );
1661         vkCmdSetRepresentativeFragmentTestEnableNV =
1662           PFN_vkCmdSetRepresentativeFragmentTestEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetRepresentativeFragmentTestEnableNV" ) );
1663         vkCmdSetCoverageReductionModeNV = PFN_vkCmdSetCoverageReductionModeNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageReductionModeNV" ) );
1664 
1665         //=== VK_EXT_shader_module_identifier ===
1666         vkGetShaderModuleIdentifierEXT = PFN_vkGetShaderModuleIdentifierEXT( vkGetDeviceProcAddr( device, "vkGetShaderModuleIdentifierEXT" ) );
1667         vkGetShaderModuleCreateInfoIdentifierEXT =
1668           PFN_vkGetShaderModuleCreateInfoIdentifierEXT( vkGetDeviceProcAddr( device, "vkGetShaderModuleCreateInfoIdentifierEXT" ) );
1669 
1670         //=== VK_NV_optical_flow ===
1671         vkCreateOpticalFlowSessionNV    = PFN_vkCreateOpticalFlowSessionNV( vkGetDeviceProcAddr( device, "vkCreateOpticalFlowSessionNV" ) );
1672         vkDestroyOpticalFlowSessionNV   = PFN_vkDestroyOpticalFlowSessionNV( vkGetDeviceProcAddr( device, "vkDestroyOpticalFlowSessionNV" ) );
1673         vkBindOpticalFlowSessionImageNV = PFN_vkBindOpticalFlowSessionImageNV( vkGetDeviceProcAddr( device, "vkBindOpticalFlowSessionImageNV" ) );
1674         vkCmdOpticalFlowExecuteNV       = PFN_vkCmdOpticalFlowExecuteNV( vkGetDeviceProcAddr( device, "vkCmdOpticalFlowExecuteNV" ) );
1675 
1676         //=== VK_KHR_maintenance5 ===
1677         vkCmdBindIndexBuffer2KHR         = PFN_vkCmdBindIndexBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer2KHR" ) );
1678         vkGetRenderingAreaGranularityKHR = PFN_vkGetRenderingAreaGranularityKHR( vkGetDeviceProcAddr( device, "vkGetRenderingAreaGranularityKHR" ) );
1679         vkGetDeviceImageSubresourceLayoutKHR =
1680           PFN_vkGetDeviceImageSubresourceLayoutKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageSubresourceLayoutKHR" ) );
1681         vkGetImageSubresourceLayout2KHR = PFN_vkGetImageSubresourceLayout2KHR( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2KHR" ) );
1682 
1683         //=== VK_EXT_shader_object ===
1684         vkCreateShadersEXT       = PFN_vkCreateShadersEXT( vkGetDeviceProcAddr( device, "vkCreateShadersEXT" ) );
1685         vkDestroyShaderEXT       = PFN_vkDestroyShaderEXT( vkGetDeviceProcAddr( device, "vkDestroyShaderEXT" ) );
1686         vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetDeviceProcAddr( device, "vkGetShaderBinaryDataEXT" ) );
1687         vkCmdBindShadersEXT      = PFN_vkCmdBindShadersEXT( vkGetDeviceProcAddr( device, "vkCmdBindShadersEXT" ) );
1688 
1689         //=== VK_QCOM_tile_properties ===
1690         vkGetFramebufferTilePropertiesQCOM = PFN_vkGetFramebufferTilePropertiesQCOM( vkGetDeviceProcAddr( device, "vkGetFramebufferTilePropertiesQCOM" ) );
1691         vkGetDynamicRenderingTilePropertiesQCOM =
1692           PFN_vkGetDynamicRenderingTilePropertiesQCOM( vkGetDeviceProcAddr( device, "vkGetDynamicRenderingTilePropertiesQCOM" ) );
1693 
1694         //=== VK_NV_low_latency2 ===
1695         vkSetLatencySleepModeNV  = PFN_vkSetLatencySleepModeNV( vkGetDeviceProcAddr( device, "vkSetLatencySleepModeNV" ) );
1696         vkLatencySleepNV         = PFN_vkLatencySleepNV( vkGetDeviceProcAddr( device, "vkLatencySleepNV" ) );
1697         vkSetLatencyMarkerNV     = PFN_vkSetLatencyMarkerNV( vkGetDeviceProcAddr( device, "vkSetLatencyMarkerNV" ) );
1698         vkGetLatencyTimingsNV    = PFN_vkGetLatencyTimingsNV( vkGetDeviceProcAddr( device, "vkGetLatencyTimingsNV" ) );
1699         vkQueueNotifyOutOfBandNV = PFN_vkQueueNotifyOutOfBandNV( vkGetDeviceProcAddr( device, "vkQueueNotifyOutOfBandNV" ) );
1700 
1701         //=== VK_EXT_attachment_feedback_loop_dynamic_state ===
1702         vkCmdSetAttachmentFeedbackLoopEnableEXT =
1703           PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAttachmentFeedbackLoopEnableEXT" ) );
1704 
1705 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
1706         //=== VK_QNX_external_memory_screen_buffer ===
1707         vkGetScreenBufferPropertiesQNX = PFN_vkGetScreenBufferPropertiesQNX( vkGetDeviceProcAddr( device, "vkGetScreenBufferPropertiesQNX" ) );
1708 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
1709 
1710         //=== VK_KHR_line_rasterization ===
1711         vkCmdSetLineStippleKHR = PFN_vkCmdSetLineStippleKHR( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleKHR" ) );
1712 
1713         //=== VK_KHR_calibrated_timestamps ===
1714         vkGetCalibratedTimestampsKHR = PFN_vkGetCalibratedTimestampsKHR( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsKHR" ) );
1715 
1716         //=== VK_KHR_maintenance6 ===
1717         vkCmdBindDescriptorSets2KHR = PFN_vkCmdBindDescriptorSets2KHR( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets2KHR" ) );
1718         vkCmdPushConstants2KHR      = PFN_vkCmdPushConstants2KHR( vkGetDeviceProcAddr( device, "vkCmdPushConstants2KHR" ) );
1719         vkCmdPushDescriptorSet2KHR  = PFN_vkCmdPushDescriptorSet2KHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet2KHR" ) );
1720         vkCmdPushDescriptorSetWithTemplate2KHR =
1721           PFN_vkCmdPushDescriptorSetWithTemplate2KHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate2KHR" ) );
1722         vkCmdSetDescriptorBufferOffsets2EXT = PFN_vkCmdSetDescriptorBufferOffsets2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsets2EXT" ) );
1723         vkCmdBindDescriptorBufferEmbeddedSamplers2EXT =
1724           PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) );
1725       }
1726 
1727     public:
1728       //=== VK_VERSION_1_0 ===
1729       PFN_vkGetDeviceProcAddr                vkGetDeviceProcAddr                = 0;
1730       PFN_vkDestroyDevice                    vkDestroyDevice                    = 0;
1731       PFN_vkGetDeviceQueue                   vkGetDeviceQueue                   = 0;
1732       PFN_vkQueueSubmit                      vkQueueSubmit                      = 0;
1733       PFN_vkQueueWaitIdle                    vkQueueWaitIdle                    = 0;
1734       PFN_vkDeviceWaitIdle                   vkDeviceWaitIdle                   = 0;
1735       PFN_vkAllocateMemory                   vkAllocateMemory                   = 0;
1736       PFN_vkFreeMemory                       vkFreeMemory                       = 0;
1737       PFN_vkMapMemory                        vkMapMemory                        = 0;
1738       PFN_vkUnmapMemory                      vkUnmapMemory                      = 0;
1739       PFN_vkFlushMappedMemoryRanges          vkFlushMappedMemoryRanges          = 0;
1740       PFN_vkInvalidateMappedMemoryRanges     vkInvalidateMappedMemoryRanges     = 0;
1741       PFN_vkGetDeviceMemoryCommitment        vkGetDeviceMemoryCommitment        = 0;
1742       PFN_vkBindBufferMemory                 vkBindBufferMemory                 = 0;
1743       PFN_vkBindImageMemory                  vkBindImageMemory                  = 0;
1744       PFN_vkGetBufferMemoryRequirements      vkGetBufferMemoryRequirements      = 0;
1745       PFN_vkGetImageMemoryRequirements       vkGetImageMemoryRequirements       = 0;
1746       PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0;
1747       PFN_vkQueueBindSparse                  vkQueueBindSparse                  = 0;
1748       PFN_vkCreateFence                      vkCreateFence                      = 0;
1749       PFN_vkDestroyFence                     vkDestroyFence                     = 0;
1750       PFN_vkResetFences                      vkResetFences                      = 0;
1751       PFN_vkGetFenceStatus                   vkGetFenceStatus                   = 0;
1752       PFN_vkWaitForFences                    vkWaitForFences                    = 0;
1753       PFN_vkCreateSemaphore                  vkCreateSemaphore                  = 0;
1754       PFN_vkDestroySemaphore                 vkDestroySemaphore                 = 0;
1755       PFN_vkCreateEvent                      vkCreateEvent                      = 0;
1756       PFN_vkDestroyEvent                     vkDestroyEvent                     = 0;
1757       PFN_vkGetEventStatus                   vkGetEventStatus                   = 0;
1758       PFN_vkSetEvent                         vkSetEvent                         = 0;
1759       PFN_vkResetEvent                       vkResetEvent                       = 0;
1760       PFN_vkCreateQueryPool                  vkCreateQueryPool                  = 0;
1761       PFN_vkDestroyQueryPool                 vkDestroyQueryPool                 = 0;
1762       PFN_vkGetQueryPoolResults              vkGetQueryPoolResults              = 0;
1763       PFN_vkCreateBuffer                     vkCreateBuffer                     = 0;
1764       PFN_vkDestroyBuffer                    vkDestroyBuffer                    = 0;
1765       PFN_vkCreateBufferView                 vkCreateBufferView                 = 0;
1766       PFN_vkDestroyBufferView                vkDestroyBufferView                = 0;
1767       PFN_vkCreateImage                      vkCreateImage                      = 0;
1768       PFN_vkDestroyImage                     vkDestroyImage                     = 0;
1769       PFN_vkGetImageSubresourceLayout        vkGetImageSubresourceLayout        = 0;
1770       PFN_vkCreateImageView                  vkCreateImageView                  = 0;
1771       PFN_vkDestroyImageView                 vkDestroyImageView                 = 0;
1772       PFN_vkCreateShaderModule               vkCreateShaderModule               = 0;
1773       PFN_vkDestroyShaderModule              vkDestroyShaderModule              = 0;
1774       PFN_vkCreatePipelineCache              vkCreatePipelineCache              = 0;
1775       PFN_vkDestroyPipelineCache             vkDestroyPipelineCache             = 0;
1776       PFN_vkGetPipelineCacheData             vkGetPipelineCacheData             = 0;
1777       PFN_vkMergePipelineCaches              vkMergePipelineCaches              = 0;
1778       PFN_vkCreateGraphicsPipelines          vkCreateGraphicsPipelines          = 0;
1779       PFN_vkCreateComputePipelines           vkCreateComputePipelines           = 0;
1780       PFN_vkDestroyPipeline                  vkDestroyPipeline                  = 0;
1781       PFN_vkCreatePipelineLayout             vkCreatePipelineLayout             = 0;
1782       PFN_vkDestroyPipelineLayout            vkDestroyPipelineLayout            = 0;
1783       PFN_vkCreateSampler                    vkCreateSampler                    = 0;
1784       PFN_vkDestroySampler                   vkDestroySampler                   = 0;
1785       PFN_vkCreateDescriptorSetLayout        vkCreateDescriptorSetLayout        = 0;
1786       PFN_vkDestroyDescriptorSetLayout       vkDestroyDescriptorSetLayout       = 0;
1787       PFN_vkCreateDescriptorPool             vkCreateDescriptorPool             = 0;
1788       PFN_vkDestroyDescriptorPool            vkDestroyDescriptorPool            = 0;
1789       PFN_vkResetDescriptorPool              vkResetDescriptorPool              = 0;
1790       PFN_vkAllocateDescriptorSets           vkAllocateDescriptorSets           = 0;
1791       PFN_vkFreeDescriptorSets               vkFreeDescriptorSets               = 0;
1792       PFN_vkUpdateDescriptorSets             vkUpdateDescriptorSets             = 0;
1793       PFN_vkCreateFramebuffer                vkCreateFramebuffer                = 0;
1794       PFN_vkDestroyFramebuffer               vkDestroyFramebuffer               = 0;
1795       PFN_vkCreateRenderPass                 vkCreateRenderPass                 = 0;
1796       PFN_vkDestroyRenderPass                vkDestroyRenderPass                = 0;
1797       PFN_vkGetRenderAreaGranularity         vkGetRenderAreaGranularity         = 0;
1798       PFN_vkCreateCommandPool                vkCreateCommandPool                = 0;
1799       PFN_vkDestroyCommandPool               vkDestroyCommandPool               = 0;
1800       PFN_vkResetCommandPool                 vkResetCommandPool                 = 0;
1801       PFN_vkAllocateCommandBuffers           vkAllocateCommandBuffers           = 0;
1802       PFN_vkFreeCommandBuffers               vkFreeCommandBuffers               = 0;
1803       PFN_vkBeginCommandBuffer               vkBeginCommandBuffer               = 0;
1804       PFN_vkEndCommandBuffer                 vkEndCommandBuffer                 = 0;
1805       PFN_vkResetCommandBuffer               vkResetCommandBuffer               = 0;
1806       PFN_vkCmdBindPipeline                  vkCmdBindPipeline                  = 0;
1807       PFN_vkCmdSetViewport                   vkCmdSetViewport                   = 0;
1808       PFN_vkCmdSetScissor                    vkCmdSetScissor                    = 0;
1809       PFN_vkCmdSetLineWidth                  vkCmdSetLineWidth                  = 0;
1810       PFN_vkCmdSetDepthBias                  vkCmdSetDepthBias                  = 0;
1811       PFN_vkCmdSetBlendConstants             vkCmdSetBlendConstants             = 0;
1812       PFN_vkCmdSetDepthBounds                vkCmdSetDepthBounds                = 0;
1813       PFN_vkCmdSetStencilCompareMask         vkCmdSetStencilCompareMask         = 0;
1814       PFN_vkCmdSetStencilWriteMask           vkCmdSetStencilWriteMask           = 0;
1815       PFN_vkCmdSetStencilReference           vkCmdSetStencilReference           = 0;
1816       PFN_vkCmdBindDescriptorSets            vkCmdBindDescriptorSets            = 0;
1817       PFN_vkCmdBindIndexBuffer               vkCmdBindIndexBuffer               = 0;
1818       PFN_vkCmdBindVertexBuffers             vkCmdBindVertexBuffers             = 0;
1819       PFN_vkCmdDraw                          vkCmdDraw                          = 0;
1820       PFN_vkCmdDrawIndexed                   vkCmdDrawIndexed                   = 0;
1821       PFN_vkCmdDrawIndirect                  vkCmdDrawIndirect                  = 0;
1822       PFN_vkCmdDrawIndexedIndirect           vkCmdDrawIndexedIndirect           = 0;
1823       PFN_vkCmdDispatch                      vkCmdDispatch                      = 0;
1824       PFN_vkCmdDispatchIndirect              vkCmdDispatchIndirect              = 0;
1825       PFN_vkCmdCopyBuffer                    vkCmdCopyBuffer                    = 0;
1826       PFN_vkCmdCopyImage                     vkCmdCopyImage                     = 0;
1827       PFN_vkCmdBlitImage                     vkCmdBlitImage                     = 0;
1828       PFN_vkCmdCopyBufferToImage             vkCmdCopyBufferToImage             = 0;
1829       PFN_vkCmdCopyImageToBuffer             vkCmdCopyImageToBuffer             = 0;
1830       PFN_vkCmdUpdateBuffer                  vkCmdUpdateBuffer                  = 0;
1831       PFN_vkCmdFillBuffer                    vkCmdFillBuffer                    = 0;
1832       PFN_vkCmdClearColorImage               vkCmdClearColorImage               = 0;
1833       PFN_vkCmdClearDepthStencilImage        vkCmdClearDepthStencilImage        = 0;
1834       PFN_vkCmdClearAttachments              vkCmdClearAttachments              = 0;
1835       PFN_vkCmdResolveImage                  vkCmdResolveImage                  = 0;
1836       PFN_vkCmdSetEvent                      vkCmdSetEvent                      = 0;
1837       PFN_vkCmdResetEvent                    vkCmdResetEvent                    = 0;
1838       PFN_vkCmdWaitEvents                    vkCmdWaitEvents                    = 0;
1839       PFN_vkCmdPipelineBarrier               vkCmdPipelineBarrier               = 0;
1840       PFN_vkCmdBeginQuery                    vkCmdBeginQuery                    = 0;
1841       PFN_vkCmdEndQuery                      vkCmdEndQuery                      = 0;
1842       PFN_vkCmdResetQueryPool                vkCmdResetQueryPool                = 0;
1843       PFN_vkCmdWriteTimestamp                vkCmdWriteTimestamp                = 0;
1844       PFN_vkCmdCopyQueryPoolResults          vkCmdCopyQueryPoolResults          = 0;
1845       PFN_vkCmdPushConstants                 vkCmdPushConstants                 = 0;
1846       PFN_vkCmdBeginRenderPass               vkCmdBeginRenderPass               = 0;
1847       PFN_vkCmdNextSubpass                   vkCmdNextSubpass                   = 0;
1848       PFN_vkCmdEndRenderPass                 vkCmdEndRenderPass                 = 0;
1849       PFN_vkCmdExecuteCommands               vkCmdExecuteCommands               = 0;
1850 
1851       //=== VK_VERSION_1_1 ===
1852       PFN_vkBindBufferMemory2                 vkBindBufferMemory2                 = 0;
1853       PFN_vkBindImageMemory2                  vkBindImageMemory2                  = 0;
1854       PFN_vkGetDeviceGroupPeerMemoryFeatures  vkGetDeviceGroupPeerMemoryFeatures  = 0;
1855       PFN_vkCmdSetDeviceMask                  vkCmdSetDeviceMask                  = 0;
1856       PFN_vkCmdDispatchBase                   vkCmdDispatchBase                   = 0;
1857       PFN_vkGetImageMemoryRequirements2       vkGetImageMemoryRequirements2       = 0;
1858       PFN_vkGetBufferMemoryRequirements2      vkGetBufferMemoryRequirements2      = 0;
1859       PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0;
1860       PFN_vkTrimCommandPool                   vkTrimCommandPool                   = 0;
1861       PFN_vkGetDeviceQueue2                   vkGetDeviceQueue2                   = 0;
1862       PFN_vkCreateSamplerYcbcrConversion      vkCreateSamplerYcbcrConversion      = 0;
1863       PFN_vkDestroySamplerYcbcrConversion     vkDestroySamplerYcbcrConversion     = 0;
1864       PFN_vkCreateDescriptorUpdateTemplate    vkCreateDescriptorUpdateTemplate    = 0;
1865       PFN_vkDestroyDescriptorUpdateTemplate   vkDestroyDescriptorUpdateTemplate   = 0;
1866       PFN_vkUpdateDescriptorSetWithTemplate   vkUpdateDescriptorSetWithTemplate   = 0;
1867       PFN_vkGetDescriptorSetLayoutSupport     vkGetDescriptorSetLayoutSupport     = 0;
1868 
1869       //=== VK_VERSION_1_2 ===
1870       PFN_vkCmdDrawIndirectCount                vkCmdDrawIndirectCount                = 0;
1871       PFN_vkCmdDrawIndexedIndirectCount         vkCmdDrawIndexedIndirectCount         = 0;
1872       PFN_vkCreateRenderPass2                   vkCreateRenderPass2                   = 0;
1873       PFN_vkCmdBeginRenderPass2                 vkCmdBeginRenderPass2                 = 0;
1874       PFN_vkCmdNextSubpass2                     vkCmdNextSubpass2                     = 0;
1875       PFN_vkCmdEndRenderPass2                   vkCmdEndRenderPass2                   = 0;
1876       PFN_vkResetQueryPool                      vkResetQueryPool                      = 0;
1877       PFN_vkGetSemaphoreCounterValue            vkGetSemaphoreCounterValue            = 0;
1878       PFN_vkWaitSemaphores                      vkWaitSemaphores                      = 0;
1879       PFN_vkSignalSemaphore                     vkSignalSemaphore                     = 0;
1880       PFN_vkGetBufferDeviceAddress              vkGetBufferDeviceAddress              = 0;
1881       PFN_vkGetBufferOpaqueCaptureAddress       vkGetBufferOpaqueCaptureAddress       = 0;
1882       PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress = 0;
1883 
1884       //=== VK_VERSION_1_3 ===
1885       PFN_vkCreatePrivateDataSlot                  vkCreatePrivateDataSlot                  = 0;
1886       PFN_vkDestroyPrivateDataSlot                 vkDestroyPrivateDataSlot                 = 0;
1887       PFN_vkSetPrivateData                         vkSetPrivateData                         = 0;
1888       PFN_vkGetPrivateData                         vkGetPrivateData                         = 0;
1889       PFN_vkCmdSetEvent2                           vkCmdSetEvent2                           = 0;
1890       PFN_vkCmdResetEvent2                         vkCmdResetEvent2                         = 0;
1891       PFN_vkCmdWaitEvents2                         vkCmdWaitEvents2                         = 0;
1892       PFN_vkCmdPipelineBarrier2                    vkCmdPipelineBarrier2                    = 0;
1893       PFN_vkCmdWriteTimestamp2                     vkCmdWriteTimestamp2                     = 0;
1894       PFN_vkQueueSubmit2                           vkQueueSubmit2                           = 0;
1895       PFN_vkCmdCopyBuffer2                         vkCmdCopyBuffer2                         = 0;
1896       PFN_vkCmdCopyImage2                          vkCmdCopyImage2                          = 0;
1897       PFN_vkCmdCopyBufferToImage2                  vkCmdCopyBufferToImage2                  = 0;
1898       PFN_vkCmdCopyImageToBuffer2                  vkCmdCopyImageToBuffer2                  = 0;
1899       PFN_vkCmdBlitImage2                          vkCmdBlitImage2                          = 0;
1900       PFN_vkCmdResolveImage2                       vkCmdResolveImage2                       = 0;
1901       PFN_vkCmdBeginRendering                      vkCmdBeginRendering                      = 0;
1902       PFN_vkCmdEndRendering                        vkCmdEndRendering                        = 0;
1903       PFN_vkCmdSetCullMode                         vkCmdSetCullMode                         = 0;
1904       PFN_vkCmdSetFrontFace                        vkCmdSetFrontFace                        = 0;
1905       PFN_vkCmdSetPrimitiveTopology                vkCmdSetPrimitiveTopology                = 0;
1906       PFN_vkCmdSetViewportWithCount                vkCmdSetViewportWithCount                = 0;
1907       PFN_vkCmdSetScissorWithCount                 vkCmdSetScissorWithCount                 = 0;
1908       PFN_vkCmdBindVertexBuffers2                  vkCmdBindVertexBuffers2                  = 0;
1909       PFN_vkCmdSetDepthTestEnable                  vkCmdSetDepthTestEnable                  = 0;
1910       PFN_vkCmdSetDepthWriteEnable                 vkCmdSetDepthWriteEnable                 = 0;
1911       PFN_vkCmdSetDepthCompareOp                   vkCmdSetDepthCompareOp                   = 0;
1912       PFN_vkCmdSetDepthBoundsTestEnable            vkCmdSetDepthBoundsTestEnable            = 0;
1913       PFN_vkCmdSetStencilTestEnable                vkCmdSetStencilTestEnable                = 0;
1914       PFN_vkCmdSetStencilOp                        vkCmdSetStencilOp                        = 0;
1915       PFN_vkCmdSetRasterizerDiscardEnable          vkCmdSetRasterizerDiscardEnable          = 0;
1916       PFN_vkCmdSetDepthBiasEnable                  vkCmdSetDepthBiasEnable                  = 0;
1917       PFN_vkCmdSetPrimitiveRestartEnable           vkCmdSetPrimitiveRestartEnable           = 0;
1918       PFN_vkGetDeviceBufferMemoryRequirements      vkGetDeviceBufferMemoryRequirements      = 0;
1919       PFN_vkGetDeviceImageMemoryRequirements       vkGetDeviceImageMemoryRequirements       = 0;
1920       PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements = 0;
1921 
1922       //=== VK_KHR_swapchain ===
1923       PFN_vkCreateSwapchainKHR                   vkCreateSwapchainKHR                   = 0;
1924       PFN_vkDestroySwapchainKHR                  vkDestroySwapchainKHR                  = 0;
1925       PFN_vkGetSwapchainImagesKHR                vkGetSwapchainImagesKHR                = 0;
1926       PFN_vkAcquireNextImageKHR                  vkAcquireNextImageKHR                  = 0;
1927       PFN_vkQueuePresentKHR                      vkQueuePresentKHR                      = 0;
1928       PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0;
1929       PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0;
1930       PFN_vkAcquireNextImage2KHR                 vkAcquireNextImage2KHR                 = 0;
1931 
1932       //=== VK_KHR_display_swapchain ===
1933       PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0;
1934 
1935       //=== VK_EXT_debug_marker ===
1936       PFN_vkDebugMarkerSetObjectTagEXT  vkDebugMarkerSetObjectTagEXT  = 0;
1937       PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0;
1938       PFN_vkCmdDebugMarkerBeginEXT      vkCmdDebugMarkerBeginEXT      = 0;
1939       PFN_vkCmdDebugMarkerEndEXT        vkCmdDebugMarkerEndEXT        = 0;
1940       PFN_vkCmdDebugMarkerInsertEXT     vkCmdDebugMarkerInsertEXT     = 0;
1941 
1942       //=== VK_KHR_video_queue ===
1943       PFN_vkCreateVideoSessionKHR                vkCreateVideoSessionKHR                = 0;
1944       PFN_vkDestroyVideoSessionKHR               vkDestroyVideoSessionKHR               = 0;
1945       PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR = 0;
1946       PFN_vkBindVideoSessionMemoryKHR            vkBindVideoSessionMemoryKHR            = 0;
1947       PFN_vkCreateVideoSessionParametersKHR      vkCreateVideoSessionParametersKHR      = 0;
1948       PFN_vkUpdateVideoSessionParametersKHR      vkUpdateVideoSessionParametersKHR      = 0;
1949       PFN_vkDestroyVideoSessionParametersKHR     vkDestroyVideoSessionParametersKHR     = 0;
1950       PFN_vkCmdBeginVideoCodingKHR               vkCmdBeginVideoCodingKHR               = 0;
1951       PFN_vkCmdEndVideoCodingKHR                 vkCmdEndVideoCodingKHR                 = 0;
1952       PFN_vkCmdControlVideoCodingKHR             vkCmdControlVideoCodingKHR             = 0;
1953 
1954       //=== VK_KHR_video_decode_queue ===
1955       PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR = 0;
1956 
1957       //=== VK_EXT_transform_feedback ===
1958       PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0;
1959       PFN_vkCmdBeginTransformFeedbackEXT       vkCmdBeginTransformFeedbackEXT       = 0;
1960       PFN_vkCmdEndTransformFeedbackEXT         vkCmdEndTransformFeedbackEXT         = 0;
1961       PFN_vkCmdBeginQueryIndexedEXT            vkCmdBeginQueryIndexedEXT            = 0;
1962       PFN_vkCmdEndQueryIndexedEXT              vkCmdEndQueryIndexedEXT              = 0;
1963       PFN_vkCmdDrawIndirectByteCountEXT        vkCmdDrawIndirectByteCountEXT        = 0;
1964 
1965       //=== VK_NVX_binary_import ===
1966       PFN_vkCreateCuModuleNVX    vkCreateCuModuleNVX    = 0;
1967       PFN_vkCreateCuFunctionNVX  vkCreateCuFunctionNVX  = 0;
1968       PFN_vkDestroyCuModuleNVX   vkDestroyCuModuleNVX   = 0;
1969       PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX = 0;
1970       PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX = 0;
1971 
1972       //=== VK_NVX_image_view_handle ===
1973       PFN_vkGetImageViewHandleNVX  vkGetImageViewHandleNVX  = 0;
1974       PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX = 0;
1975 
1976       //=== VK_AMD_draw_indirect_count ===
1977       PFN_vkCmdDrawIndirectCountAMD        vkCmdDrawIndirectCountAMD        = 0;
1978       PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0;
1979 
1980       //=== VK_AMD_shader_info ===
1981       PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0;
1982 
1983       //=== VK_KHR_dynamic_rendering ===
1984       PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR = 0;
1985       PFN_vkCmdEndRenderingKHR   vkCmdEndRenderingKHR   = 0;
1986 
1987 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1988       //=== VK_NV_external_memory_win32 ===
1989       PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0;
1990 #  else
1991       PFN_dummy vkGetMemoryWin32HandleNV_placeholder                          = 0;
1992 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1993 
1994       //=== VK_KHR_device_group ===
1995       PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0;
1996       PFN_vkCmdSetDeviceMaskKHR                 vkCmdSetDeviceMaskKHR                 = 0;
1997       PFN_vkCmdDispatchBaseKHR                  vkCmdDispatchBaseKHR                  = 0;
1998 
1999       //=== VK_KHR_maintenance1 ===
2000       PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0;
2001 
2002 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2003       //=== VK_KHR_external_memory_win32 ===
2004       PFN_vkGetMemoryWin32HandleKHR           vkGetMemoryWin32HandleKHR           = 0;
2005       PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0;
2006 #  else
2007       PFN_dummy vkGetMemoryWin32HandleKHR_placeholder                         = 0;
2008       PFN_dummy vkGetMemoryWin32HandlePropertiesKHR_placeholder               = 0;
2009 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2010 
2011       //=== VK_KHR_external_memory_fd ===
2012       PFN_vkGetMemoryFdKHR           vkGetMemoryFdKHR           = 0;
2013       PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0;
2014 
2015 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2016       //=== VK_KHR_external_semaphore_win32 ===
2017       PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0;
2018       PFN_vkGetSemaphoreWin32HandleKHR    vkGetSemaphoreWin32HandleKHR    = 0;
2019 #  else
2020       PFN_dummy vkImportSemaphoreWin32HandleKHR_placeholder                   = 0;
2021       PFN_dummy vkGetSemaphoreWin32HandleKHR_placeholder                      = 0;
2022 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2023 
2024       //=== VK_KHR_external_semaphore_fd ===
2025       PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0;
2026       PFN_vkGetSemaphoreFdKHR    vkGetSemaphoreFdKHR    = 0;
2027 
2028       //=== VK_KHR_push_descriptor ===
2029       PFN_vkCmdPushDescriptorSetKHR             vkCmdPushDescriptorSetKHR             = 0;
2030       PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0;
2031 
2032       //=== VK_EXT_conditional_rendering ===
2033       PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0;
2034       PFN_vkCmdEndConditionalRenderingEXT   vkCmdEndConditionalRenderingEXT   = 0;
2035 
2036       //=== VK_KHR_descriptor_update_template ===
2037       PFN_vkCreateDescriptorUpdateTemplateKHR  vkCreateDescriptorUpdateTemplateKHR  = 0;
2038       PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0;
2039       PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0;
2040 
2041       //=== VK_NV_clip_space_w_scaling ===
2042       PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0;
2043 
2044       //=== VK_EXT_display_control ===
2045       PFN_vkDisplayPowerControlEXT  vkDisplayPowerControlEXT  = 0;
2046       PFN_vkRegisterDeviceEventEXT  vkRegisterDeviceEventEXT  = 0;
2047       PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0;
2048       PFN_vkGetSwapchainCounterEXT  vkGetSwapchainCounterEXT  = 0;
2049 
2050       //=== VK_GOOGLE_display_timing ===
2051       PFN_vkGetRefreshCycleDurationGOOGLE   vkGetRefreshCycleDurationGOOGLE   = 0;
2052       PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0;
2053 
2054       //=== VK_EXT_discard_rectangles ===
2055       PFN_vkCmdSetDiscardRectangleEXT       vkCmdSetDiscardRectangleEXT       = 0;
2056       PFN_vkCmdSetDiscardRectangleEnableEXT vkCmdSetDiscardRectangleEnableEXT = 0;
2057       PFN_vkCmdSetDiscardRectangleModeEXT   vkCmdSetDiscardRectangleModeEXT   = 0;
2058 
2059       //=== VK_EXT_hdr_metadata ===
2060       PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0;
2061 
2062       //=== VK_KHR_create_renderpass2 ===
2063       PFN_vkCreateRenderPass2KHR   vkCreateRenderPass2KHR   = 0;
2064       PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0;
2065       PFN_vkCmdNextSubpass2KHR     vkCmdNextSubpass2KHR     = 0;
2066       PFN_vkCmdEndRenderPass2KHR   vkCmdEndRenderPass2KHR   = 0;
2067 
2068       //=== VK_KHR_shared_presentable_image ===
2069       PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0;
2070 
2071 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2072       //=== VK_KHR_external_fence_win32 ===
2073       PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0;
2074       PFN_vkGetFenceWin32HandleKHR    vkGetFenceWin32HandleKHR    = 0;
2075 #  else
2076       PFN_dummy vkImportFenceWin32HandleKHR_placeholder                       = 0;
2077       PFN_dummy vkGetFenceWin32HandleKHR_placeholder                          = 0;
2078 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2079 
2080       //=== VK_KHR_external_fence_fd ===
2081       PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0;
2082       PFN_vkGetFenceFdKHR    vkGetFenceFdKHR    = 0;
2083 
2084       //=== VK_KHR_performance_query ===
2085       PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR = 0;
2086       PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR = 0;
2087 
2088       //=== VK_EXT_debug_utils ===
2089       PFN_vkSetDebugUtilsObjectNameEXT    vkSetDebugUtilsObjectNameEXT    = 0;
2090       PFN_vkSetDebugUtilsObjectTagEXT     vkSetDebugUtilsObjectTagEXT     = 0;
2091       PFN_vkQueueBeginDebugUtilsLabelEXT  vkQueueBeginDebugUtilsLabelEXT  = 0;
2092       PFN_vkQueueEndDebugUtilsLabelEXT    vkQueueEndDebugUtilsLabelEXT    = 0;
2093       PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0;
2094       PFN_vkCmdBeginDebugUtilsLabelEXT    vkCmdBeginDebugUtilsLabelEXT    = 0;
2095       PFN_vkCmdEndDebugUtilsLabelEXT      vkCmdEndDebugUtilsLabelEXT      = 0;
2096       PFN_vkCmdInsertDebugUtilsLabelEXT   vkCmdInsertDebugUtilsLabelEXT   = 0;
2097 
2098 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
2099       //=== VK_ANDROID_external_memory_android_hardware_buffer ===
2100       PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0;
2101       PFN_vkGetMemoryAndroidHardwareBufferANDROID     vkGetMemoryAndroidHardwareBufferANDROID     = 0;
2102 #  else
2103       PFN_dummy vkGetAndroidHardwareBufferPropertiesANDROID_placeholder       = 0;
2104       PFN_dummy vkGetMemoryAndroidHardwareBufferANDROID_placeholder           = 0;
2105 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
2106 
2107 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
2108       //=== VK_AMDX_shader_enqueue ===
2109       PFN_vkCreateExecutionGraphPipelinesAMDX        vkCreateExecutionGraphPipelinesAMDX        = 0;
2110       PFN_vkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDX = 0;
2111       PFN_vkGetExecutionGraphPipelineNodeIndexAMDX   vkGetExecutionGraphPipelineNodeIndexAMDX   = 0;
2112       PFN_vkCmdInitializeGraphScratchMemoryAMDX      vkCmdInitializeGraphScratchMemoryAMDX      = 0;
2113       PFN_vkCmdDispatchGraphAMDX                     vkCmdDispatchGraphAMDX                     = 0;
2114       PFN_vkCmdDispatchGraphIndirectAMDX             vkCmdDispatchGraphIndirectAMDX             = 0;
2115       PFN_vkCmdDispatchGraphIndirectCountAMDX        vkCmdDispatchGraphIndirectCountAMDX        = 0;
2116 #  else
2117       PFN_dummy vkCreateExecutionGraphPipelinesAMDX_placeholder               = 0;
2118       PFN_dummy vkGetExecutionGraphPipelineScratchSizeAMDX_placeholder        = 0;
2119       PFN_dummy vkGetExecutionGraphPipelineNodeIndexAMDX_placeholder          = 0;
2120       PFN_dummy vkCmdInitializeGraphScratchMemoryAMDX_placeholder             = 0;
2121       PFN_dummy vkCmdDispatchGraphAMDX_placeholder                            = 0;
2122       PFN_dummy vkCmdDispatchGraphIndirectAMDX_placeholder                    = 0;
2123       PFN_dummy vkCmdDispatchGraphIndirectCountAMDX_placeholder               = 0;
2124 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
2125 
2126       //=== VK_EXT_sample_locations ===
2127       PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0;
2128 
2129       //=== VK_KHR_get_memory_requirements2 ===
2130       PFN_vkGetImageMemoryRequirements2KHR       vkGetImageMemoryRequirements2KHR       = 0;
2131       PFN_vkGetBufferMemoryRequirements2KHR      vkGetBufferMemoryRequirements2KHR      = 0;
2132       PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0;
2133 
2134       //=== VK_KHR_acceleration_structure ===
2135       PFN_vkCreateAccelerationStructureKHR                 vkCreateAccelerationStructureKHR                 = 0;
2136       PFN_vkDestroyAccelerationStructureKHR                vkDestroyAccelerationStructureKHR                = 0;
2137       PFN_vkCmdBuildAccelerationStructuresKHR              vkCmdBuildAccelerationStructuresKHR              = 0;
2138       PFN_vkCmdBuildAccelerationStructuresIndirectKHR      vkCmdBuildAccelerationStructuresIndirectKHR      = 0;
2139       PFN_vkBuildAccelerationStructuresKHR                 vkBuildAccelerationStructuresKHR                 = 0;
2140       PFN_vkCopyAccelerationStructureKHR                   vkCopyAccelerationStructureKHR                   = 0;
2141       PFN_vkCopyAccelerationStructureToMemoryKHR           vkCopyAccelerationStructureToMemoryKHR           = 0;
2142       PFN_vkCopyMemoryToAccelerationStructureKHR           vkCopyMemoryToAccelerationStructureKHR           = 0;
2143       PFN_vkWriteAccelerationStructuresPropertiesKHR       vkWriteAccelerationStructuresPropertiesKHR       = 0;
2144       PFN_vkCmdCopyAccelerationStructureKHR                vkCmdCopyAccelerationStructureKHR                = 0;
2145       PFN_vkCmdCopyAccelerationStructureToMemoryKHR        vkCmdCopyAccelerationStructureToMemoryKHR        = 0;
2146       PFN_vkCmdCopyMemoryToAccelerationStructureKHR        vkCmdCopyMemoryToAccelerationStructureKHR        = 0;
2147       PFN_vkGetAccelerationStructureDeviceAddressKHR       vkGetAccelerationStructureDeviceAddressKHR       = 0;
2148       PFN_vkCmdWriteAccelerationStructuresPropertiesKHR    vkCmdWriteAccelerationStructuresPropertiesKHR    = 0;
2149       PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0;
2150       PFN_vkGetAccelerationStructureBuildSizesKHR          vkGetAccelerationStructureBuildSizesKHR          = 0;
2151 
2152       //=== VK_KHR_ray_tracing_pipeline ===
2153       PFN_vkCmdTraceRaysKHR                                 vkCmdTraceRaysKHR                                 = 0;
2154       PFN_vkCreateRayTracingPipelinesKHR                    vkCreateRayTracingPipelinesKHR                    = 0;
2155       PFN_vkGetRayTracingShaderGroupHandlesKHR              vkGetRayTracingShaderGroupHandlesKHR              = 0;
2156       PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0;
2157       PFN_vkCmdTraceRaysIndirectKHR                         vkCmdTraceRaysIndirectKHR                         = 0;
2158       PFN_vkGetRayTracingShaderGroupStackSizeKHR            vkGetRayTracingShaderGroupStackSizeKHR            = 0;
2159       PFN_vkCmdSetRayTracingPipelineStackSizeKHR            vkCmdSetRayTracingPipelineStackSizeKHR            = 0;
2160 
2161       //=== VK_KHR_sampler_ycbcr_conversion ===
2162       PFN_vkCreateSamplerYcbcrConversionKHR  vkCreateSamplerYcbcrConversionKHR  = 0;
2163       PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0;
2164 
2165       //=== VK_KHR_bind_memory2 ===
2166       PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0;
2167       PFN_vkBindImageMemory2KHR  vkBindImageMemory2KHR  = 0;
2168 
2169       //=== VK_EXT_image_drm_format_modifier ===
2170       PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0;
2171 
2172       //=== VK_EXT_validation_cache ===
2173       PFN_vkCreateValidationCacheEXT  vkCreateValidationCacheEXT  = 0;
2174       PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0;
2175       PFN_vkMergeValidationCachesEXT  vkMergeValidationCachesEXT  = 0;
2176       PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0;
2177 
2178       //=== VK_NV_shading_rate_image ===
2179       PFN_vkCmdBindShadingRateImageNV          vkCmdBindShadingRateImageNV          = 0;
2180       PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0;
2181       PFN_vkCmdSetCoarseSampleOrderNV          vkCmdSetCoarseSampleOrderNV          = 0;
2182 
2183       //=== VK_NV_ray_tracing ===
2184       PFN_vkCreateAccelerationStructureNV                vkCreateAccelerationStructureNV                = 0;
2185       PFN_vkDestroyAccelerationStructureNV               vkDestroyAccelerationStructureNV               = 0;
2186       PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0;
2187       PFN_vkBindAccelerationStructureMemoryNV            vkBindAccelerationStructureMemoryNV            = 0;
2188       PFN_vkCmdBuildAccelerationStructureNV              vkCmdBuildAccelerationStructureNV              = 0;
2189       PFN_vkCmdCopyAccelerationStructureNV               vkCmdCopyAccelerationStructureNV               = 0;
2190       PFN_vkCmdTraceRaysNV                               vkCmdTraceRaysNV                               = 0;
2191       PFN_vkCreateRayTracingPipelinesNV                  vkCreateRayTracingPipelinesNV                  = 0;
2192       PFN_vkGetRayTracingShaderGroupHandlesNV            vkGetRayTracingShaderGroupHandlesNV            = 0;
2193       PFN_vkGetAccelerationStructureHandleNV             vkGetAccelerationStructureHandleNV             = 0;
2194       PFN_vkCmdWriteAccelerationStructuresPropertiesNV   vkCmdWriteAccelerationStructuresPropertiesNV   = 0;
2195       PFN_vkCompileDeferredNV                            vkCompileDeferredNV                            = 0;
2196 
2197       //=== VK_KHR_maintenance3 ===
2198       PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0;
2199 
2200       //=== VK_KHR_draw_indirect_count ===
2201       PFN_vkCmdDrawIndirectCountKHR        vkCmdDrawIndirectCountKHR        = 0;
2202       PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0;
2203 
2204       //=== VK_EXT_external_memory_host ===
2205       PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0;
2206 
2207       //=== VK_AMD_buffer_marker ===
2208       PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0;
2209 
2210       //=== VK_EXT_calibrated_timestamps ===
2211       PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0;
2212 
2213       //=== VK_NV_mesh_shader ===
2214       PFN_vkCmdDrawMeshTasksNV              vkCmdDrawMeshTasksNV              = 0;
2215       PFN_vkCmdDrawMeshTasksIndirectNV      vkCmdDrawMeshTasksIndirectNV      = 0;
2216       PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0;
2217 
2218       //=== VK_NV_scissor_exclusive ===
2219       PFN_vkCmdSetExclusiveScissorEnableNV vkCmdSetExclusiveScissorEnableNV = 0;
2220       PFN_vkCmdSetExclusiveScissorNV       vkCmdSetExclusiveScissorNV       = 0;
2221 
2222       //=== VK_NV_device_diagnostic_checkpoints ===
2223       PFN_vkCmdSetCheckpointNV       vkCmdSetCheckpointNV       = 0;
2224       PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0;
2225 
2226       //=== VK_KHR_timeline_semaphore ===
2227       PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR = 0;
2228       PFN_vkWaitSemaphoresKHR           vkWaitSemaphoresKHR           = 0;
2229       PFN_vkSignalSemaphoreKHR          vkSignalSemaphoreKHR          = 0;
2230 
2231       //=== VK_INTEL_performance_query ===
2232       PFN_vkInitializePerformanceApiINTEL         vkInitializePerformanceApiINTEL         = 0;
2233       PFN_vkUninitializePerformanceApiINTEL       vkUninitializePerformanceApiINTEL       = 0;
2234       PFN_vkCmdSetPerformanceMarkerINTEL          vkCmdSetPerformanceMarkerINTEL          = 0;
2235       PFN_vkCmdSetPerformanceStreamMarkerINTEL    vkCmdSetPerformanceStreamMarkerINTEL    = 0;
2236       PFN_vkCmdSetPerformanceOverrideINTEL        vkCmdSetPerformanceOverrideINTEL        = 0;
2237       PFN_vkAcquirePerformanceConfigurationINTEL  vkAcquirePerformanceConfigurationINTEL  = 0;
2238       PFN_vkReleasePerformanceConfigurationINTEL  vkReleasePerformanceConfigurationINTEL  = 0;
2239       PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0;
2240       PFN_vkGetPerformanceParameterINTEL          vkGetPerformanceParameterINTEL          = 0;
2241 
2242       //=== VK_AMD_display_native_hdr ===
2243       PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0;
2244 
2245       //=== VK_KHR_fragment_shading_rate ===
2246       PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR = 0;
2247 
2248       //=== VK_KHR_dynamic_rendering_local_read ===
2249       PFN_vkCmdSetRenderingAttachmentLocationsKHR    vkCmdSetRenderingAttachmentLocationsKHR    = 0;
2250       PFN_vkCmdSetRenderingInputAttachmentIndicesKHR vkCmdSetRenderingInputAttachmentIndicesKHR = 0;
2251 
2252       //=== VK_EXT_buffer_device_address ===
2253       PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0;
2254 
2255       //=== VK_KHR_present_wait ===
2256       PFN_vkWaitForPresentKHR vkWaitForPresentKHR = 0;
2257 
2258 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2259       //=== VK_EXT_full_screen_exclusive ===
2260       PFN_vkAcquireFullScreenExclusiveModeEXT     vkAcquireFullScreenExclusiveModeEXT     = 0;
2261       PFN_vkReleaseFullScreenExclusiveModeEXT     vkReleaseFullScreenExclusiveModeEXT     = 0;
2262       PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0;
2263 #  else
2264       PFN_dummy vkAcquireFullScreenExclusiveModeEXT_placeholder               = 0;
2265       PFN_dummy vkReleaseFullScreenExclusiveModeEXT_placeholder               = 0;
2266       PFN_dummy vkGetDeviceGroupSurfacePresentModes2EXT_placeholder           = 0;
2267 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2268 
2269       //=== VK_KHR_buffer_device_address ===
2270       PFN_vkGetBufferDeviceAddressKHR              vkGetBufferDeviceAddressKHR              = 0;
2271       PFN_vkGetBufferOpaqueCaptureAddressKHR       vkGetBufferOpaqueCaptureAddressKHR       = 0;
2272       PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0;
2273 
2274       //=== VK_EXT_line_rasterization ===
2275       PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0;
2276 
2277       //=== VK_EXT_host_query_reset ===
2278       PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0;
2279 
2280       //=== VK_EXT_extended_dynamic_state ===
2281       PFN_vkCmdSetCullModeEXT              vkCmdSetCullModeEXT              = 0;
2282       PFN_vkCmdSetFrontFaceEXT             vkCmdSetFrontFaceEXT             = 0;
2283       PFN_vkCmdSetPrimitiveTopologyEXT     vkCmdSetPrimitiveTopologyEXT     = 0;
2284       PFN_vkCmdSetViewportWithCountEXT     vkCmdSetViewportWithCountEXT     = 0;
2285       PFN_vkCmdSetScissorWithCountEXT      vkCmdSetScissorWithCountEXT      = 0;
2286       PFN_vkCmdBindVertexBuffers2EXT       vkCmdBindVertexBuffers2EXT       = 0;
2287       PFN_vkCmdSetDepthTestEnableEXT       vkCmdSetDepthTestEnableEXT       = 0;
2288       PFN_vkCmdSetDepthWriteEnableEXT      vkCmdSetDepthWriteEnableEXT      = 0;
2289       PFN_vkCmdSetDepthCompareOpEXT        vkCmdSetDepthCompareOpEXT        = 0;
2290       PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT = 0;
2291       PFN_vkCmdSetStencilTestEnableEXT     vkCmdSetStencilTestEnableEXT     = 0;
2292       PFN_vkCmdSetStencilOpEXT             vkCmdSetStencilOpEXT             = 0;
2293 
2294       //=== VK_KHR_deferred_host_operations ===
2295       PFN_vkCreateDeferredOperationKHR            vkCreateDeferredOperationKHR            = 0;
2296       PFN_vkDestroyDeferredOperationKHR           vkDestroyDeferredOperationKHR           = 0;
2297       PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR = 0;
2298       PFN_vkGetDeferredOperationResultKHR         vkGetDeferredOperationResultKHR         = 0;
2299       PFN_vkDeferredOperationJoinKHR              vkDeferredOperationJoinKHR              = 0;
2300 
2301       //=== VK_KHR_pipeline_executable_properties ===
2302       PFN_vkGetPipelineExecutablePropertiesKHR              vkGetPipelineExecutablePropertiesKHR              = 0;
2303       PFN_vkGetPipelineExecutableStatisticsKHR              vkGetPipelineExecutableStatisticsKHR              = 0;
2304       PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0;
2305 
2306       //=== VK_EXT_host_image_copy ===
2307       PFN_vkCopyMemoryToImageEXT          vkCopyMemoryToImageEXT          = 0;
2308       PFN_vkCopyImageToMemoryEXT          vkCopyImageToMemoryEXT          = 0;
2309       PFN_vkCopyImageToImageEXT           vkCopyImageToImageEXT           = 0;
2310       PFN_vkTransitionImageLayoutEXT      vkTransitionImageLayoutEXT      = 0;
2311       PFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT = 0;
2312 
2313       //=== VK_KHR_map_memory2 ===
2314       PFN_vkMapMemory2KHR   vkMapMemory2KHR   = 0;
2315       PFN_vkUnmapMemory2KHR vkUnmapMemory2KHR = 0;
2316 
2317       //=== VK_EXT_swapchain_maintenance1 ===
2318       PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT = 0;
2319 
2320       //=== VK_NV_device_generated_commands ===
2321       PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0;
2322       PFN_vkCmdPreprocessGeneratedCommandsNV         vkCmdPreprocessGeneratedCommandsNV         = 0;
2323       PFN_vkCmdExecuteGeneratedCommandsNV            vkCmdExecuteGeneratedCommandsNV            = 0;
2324       PFN_vkCmdBindPipelineShaderGroupNV             vkCmdBindPipelineShaderGroupNV             = 0;
2325       PFN_vkCreateIndirectCommandsLayoutNV           vkCreateIndirectCommandsLayoutNV           = 0;
2326       PFN_vkDestroyIndirectCommandsLayoutNV          vkDestroyIndirectCommandsLayoutNV          = 0;
2327 
2328       //=== VK_EXT_depth_bias_control ===
2329       PFN_vkCmdSetDepthBias2EXT vkCmdSetDepthBias2EXT = 0;
2330 
2331       //=== VK_EXT_private_data ===
2332       PFN_vkCreatePrivateDataSlotEXT  vkCreatePrivateDataSlotEXT  = 0;
2333       PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT = 0;
2334       PFN_vkSetPrivateDataEXT         vkSetPrivateDataEXT         = 0;
2335       PFN_vkGetPrivateDataEXT         vkGetPrivateDataEXT         = 0;
2336 
2337       //=== VK_KHR_video_encode_queue ===
2338       PFN_vkGetEncodedVideoSessionParametersKHR vkGetEncodedVideoSessionParametersKHR = 0;
2339       PFN_vkCmdEncodeVideoKHR                   vkCmdEncodeVideoKHR                   = 0;
2340 
2341 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
2342       //=== VK_NV_cuda_kernel_launch ===
2343       PFN_vkCreateCudaModuleNV    vkCreateCudaModuleNV    = 0;
2344       PFN_vkGetCudaModuleCacheNV  vkGetCudaModuleCacheNV  = 0;
2345       PFN_vkCreateCudaFunctionNV  vkCreateCudaFunctionNV  = 0;
2346       PFN_vkDestroyCudaModuleNV   vkDestroyCudaModuleNV   = 0;
2347       PFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV = 0;
2348       PFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV = 0;
2349 #  else
2350       PFN_dummy vkCreateCudaModuleNV_placeholder                              = 0;
2351       PFN_dummy vkGetCudaModuleCacheNV_placeholder                            = 0;
2352       PFN_dummy vkCreateCudaFunctionNV_placeholder                            = 0;
2353       PFN_dummy vkDestroyCudaModuleNV_placeholder                             = 0;
2354       PFN_dummy vkDestroyCudaFunctionNV_placeholder                           = 0;
2355       PFN_dummy vkCmdCudaLaunchKernelNV_placeholder                           = 0;
2356 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
2357 
2358 #  if defined( VK_USE_PLATFORM_METAL_EXT )
2359       //=== VK_EXT_metal_objects ===
2360       PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT = 0;
2361 #  else
2362       PFN_dummy vkExportMetalObjectsEXT_placeholder                           = 0;
2363 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
2364 
2365       //=== VK_KHR_synchronization2 ===
2366       PFN_vkCmdSetEvent2KHR           vkCmdSetEvent2KHR           = 0;
2367       PFN_vkCmdResetEvent2KHR         vkCmdResetEvent2KHR         = 0;
2368       PFN_vkCmdWaitEvents2KHR         vkCmdWaitEvents2KHR         = 0;
2369       PFN_vkCmdPipelineBarrier2KHR    vkCmdPipelineBarrier2KHR    = 0;
2370       PFN_vkCmdWriteTimestamp2KHR     vkCmdWriteTimestamp2KHR     = 0;
2371       PFN_vkQueueSubmit2KHR           vkQueueSubmit2KHR           = 0;
2372       PFN_vkCmdWriteBufferMarker2AMD  vkCmdWriteBufferMarker2AMD  = 0;
2373       PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV = 0;
2374 
2375       //=== VK_EXT_descriptor_buffer ===
2376       PFN_vkGetDescriptorSetLayoutSizeEXT                          vkGetDescriptorSetLayoutSizeEXT                          = 0;
2377       PFN_vkGetDescriptorSetLayoutBindingOffsetEXT                 vkGetDescriptorSetLayoutBindingOffsetEXT                 = 0;
2378       PFN_vkGetDescriptorEXT                                       vkGetDescriptorEXT                                       = 0;
2379       PFN_vkCmdBindDescriptorBuffersEXT                            vkCmdBindDescriptorBuffersEXT                            = 0;
2380       PFN_vkCmdSetDescriptorBufferOffsetsEXT                       vkCmdSetDescriptorBufferOffsetsEXT                       = 0;
2381       PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT             vkCmdBindDescriptorBufferEmbeddedSamplersEXT             = 0;
2382       PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT                vkGetBufferOpaqueCaptureDescriptorDataEXT                = 0;
2383       PFN_vkGetImageOpaqueCaptureDescriptorDataEXT                 vkGetImageOpaqueCaptureDescriptorDataEXT                 = 0;
2384       PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT             vkGetImageViewOpaqueCaptureDescriptorDataEXT             = 0;
2385       PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT               vkGetSamplerOpaqueCaptureDescriptorDataEXT               = 0;
2386       PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = 0;
2387 
2388       //=== VK_NV_fragment_shading_rate_enums ===
2389       PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV = 0;
2390 
2391       //=== VK_EXT_mesh_shader ===
2392       PFN_vkCmdDrawMeshTasksEXT              vkCmdDrawMeshTasksEXT              = 0;
2393       PFN_vkCmdDrawMeshTasksIndirectEXT      vkCmdDrawMeshTasksIndirectEXT      = 0;
2394       PFN_vkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXT = 0;
2395 
2396       //=== VK_KHR_copy_commands2 ===
2397       PFN_vkCmdCopyBuffer2KHR        vkCmdCopyBuffer2KHR        = 0;
2398       PFN_vkCmdCopyImage2KHR         vkCmdCopyImage2KHR         = 0;
2399       PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR = 0;
2400       PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR = 0;
2401       PFN_vkCmdBlitImage2KHR         vkCmdBlitImage2KHR         = 0;
2402       PFN_vkCmdResolveImage2KHR      vkCmdResolveImage2KHR      = 0;
2403 
2404       //=== VK_EXT_device_fault ===
2405       PFN_vkGetDeviceFaultInfoEXT vkGetDeviceFaultInfoEXT = 0;
2406 
2407       //=== VK_EXT_vertex_input_dynamic_state ===
2408       PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT = 0;
2409 
2410 #  if defined( VK_USE_PLATFORM_FUCHSIA )
2411       //=== VK_FUCHSIA_external_memory ===
2412       PFN_vkGetMemoryZirconHandleFUCHSIA           vkGetMemoryZirconHandleFUCHSIA           = 0;
2413       PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA = 0;
2414 #  else
2415       PFN_dummy vkGetMemoryZirconHandleFUCHSIA_placeholder                    = 0;
2416       PFN_dummy vkGetMemoryZirconHandlePropertiesFUCHSIA_placeholder          = 0;
2417 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
2418 
2419 #  if defined( VK_USE_PLATFORM_FUCHSIA )
2420       //=== VK_FUCHSIA_external_semaphore ===
2421       PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA = 0;
2422       PFN_vkGetSemaphoreZirconHandleFUCHSIA    vkGetSemaphoreZirconHandleFUCHSIA    = 0;
2423 #  else
2424       PFN_dummy vkImportSemaphoreZirconHandleFUCHSIA_placeholder              = 0;
2425       PFN_dummy vkGetSemaphoreZirconHandleFUCHSIA_placeholder                 = 0;
2426 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
2427 
2428 #  if defined( VK_USE_PLATFORM_FUCHSIA )
2429       //=== VK_FUCHSIA_buffer_collection ===
2430       PFN_vkCreateBufferCollectionFUCHSIA               vkCreateBufferCollectionFUCHSIA               = 0;
2431       PFN_vkSetBufferCollectionImageConstraintsFUCHSIA  vkSetBufferCollectionImageConstraintsFUCHSIA  = 0;
2432       PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA = 0;
2433       PFN_vkDestroyBufferCollectionFUCHSIA              vkDestroyBufferCollectionFUCHSIA              = 0;
2434       PFN_vkGetBufferCollectionPropertiesFUCHSIA        vkGetBufferCollectionPropertiesFUCHSIA        = 0;
2435 #  else
2436       PFN_dummy vkCreateBufferCollectionFUCHSIA_placeholder                   = 0;
2437       PFN_dummy vkSetBufferCollectionImageConstraintsFUCHSIA_placeholder      = 0;
2438       PFN_dummy vkSetBufferCollectionBufferConstraintsFUCHSIA_placeholder     = 0;
2439       PFN_dummy vkDestroyBufferCollectionFUCHSIA_placeholder                  = 0;
2440       PFN_dummy vkGetBufferCollectionPropertiesFUCHSIA_placeholder            = 0;
2441 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
2442 
2443       //=== VK_HUAWEI_subpass_shading ===
2444       PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 0;
2445       PFN_vkCmdSubpassShadingHUAWEI                       vkCmdSubpassShadingHUAWEI                       = 0;
2446 
2447       //=== VK_HUAWEI_invocation_mask ===
2448       PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI = 0;
2449 
2450       //=== VK_NV_external_memory_rdma ===
2451       PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV = 0;
2452 
2453       //=== VK_EXT_pipeline_properties ===
2454       PFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT = 0;
2455 
2456       //=== VK_EXT_extended_dynamic_state2 ===
2457       PFN_vkCmdSetPatchControlPointsEXT      vkCmdSetPatchControlPointsEXT      = 0;
2458       PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT = 0;
2459       PFN_vkCmdSetDepthBiasEnableEXT         vkCmdSetDepthBiasEnableEXT         = 0;
2460       PFN_vkCmdSetLogicOpEXT                 vkCmdSetLogicOpEXT                 = 0;
2461       PFN_vkCmdSetPrimitiveRestartEnableEXT  vkCmdSetPrimitiveRestartEnableEXT  = 0;
2462 
2463       //=== VK_EXT_color_write_enable ===
2464       PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT = 0;
2465 
2466       //=== VK_KHR_ray_tracing_maintenance1 ===
2467       PFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR = 0;
2468 
2469       //=== VK_EXT_multi_draw ===
2470       PFN_vkCmdDrawMultiEXT        vkCmdDrawMultiEXT        = 0;
2471       PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT = 0;
2472 
2473       //=== VK_EXT_opacity_micromap ===
2474       PFN_vkCreateMicromapEXT                 vkCreateMicromapEXT                 = 0;
2475       PFN_vkDestroyMicromapEXT                vkDestroyMicromapEXT                = 0;
2476       PFN_vkCmdBuildMicromapsEXT              vkCmdBuildMicromapsEXT              = 0;
2477       PFN_vkBuildMicromapsEXT                 vkBuildMicromapsEXT                 = 0;
2478       PFN_vkCopyMicromapEXT                   vkCopyMicromapEXT                   = 0;
2479       PFN_vkCopyMicromapToMemoryEXT           vkCopyMicromapToMemoryEXT           = 0;
2480       PFN_vkCopyMemoryToMicromapEXT           vkCopyMemoryToMicromapEXT           = 0;
2481       PFN_vkWriteMicromapsPropertiesEXT       vkWriteMicromapsPropertiesEXT       = 0;
2482       PFN_vkCmdCopyMicromapEXT                vkCmdCopyMicromapEXT                = 0;
2483       PFN_vkCmdCopyMicromapToMemoryEXT        vkCmdCopyMicromapToMemoryEXT        = 0;
2484       PFN_vkCmdCopyMemoryToMicromapEXT        vkCmdCopyMemoryToMicromapEXT        = 0;
2485       PFN_vkCmdWriteMicromapsPropertiesEXT    vkCmdWriteMicromapsPropertiesEXT    = 0;
2486       PFN_vkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXT = 0;
2487       PFN_vkGetMicromapBuildSizesEXT          vkGetMicromapBuildSizesEXT          = 0;
2488 
2489       //=== VK_HUAWEI_cluster_culling_shader ===
2490       PFN_vkCmdDrawClusterHUAWEI         vkCmdDrawClusterHUAWEI         = 0;
2491       PFN_vkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEI = 0;
2492 
2493       //=== VK_EXT_pageable_device_local_memory ===
2494       PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT = 0;
2495 
2496       //=== VK_KHR_maintenance4 ===
2497       PFN_vkGetDeviceBufferMemoryRequirementsKHR      vkGetDeviceBufferMemoryRequirementsKHR      = 0;
2498       PFN_vkGetDeviceImageMemoryRequirementsKHR       vkGetDeviceImageMemoryRequirementsKHR       = 0;
2499       PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR = 0;
2500 
2501       //=== VK_VALVE_descriptor_set_host_mapping ===
2502       PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE = 0;
2503       PFN_vkGetDescriptorSetHostMappingVALVE           vkGetDescriptorSetHostMappingVALVE           = 0;
2504 
2505       //=== VK_NV_copy_memory_indirect ===
2506       PFN_vkCmdCopyMemoryIndirectNV        vkCmdCopyMemoryIndirectNV        = 0;
2507       PFN_vkCmdCopyMemoryToImageIndirectNV vkCmdCopyMemoryToImageIndirectNV = 0;
2508 
2509       //=== VK_NV_memory_decompression ===
2510       PFN_vkCmdDecompressMemoryNV              vkCmdDecompressMemoryNV              = 0;
2511       PFN_vkCmdDecompressMemoryIndirectCountNV vkCmdDecompressMemoryIndirectCountNV = 0;
2512 
2513       //=== VK_NV_device_generated_commands_compute ===
2514       PFN_vkGetPipelineIndirectMemoryRequirementsNV vkGetPipelineIndirectMemoryRequirementsNV = 0;
2515       PFN_vkCmdUpdatePipelineIndirectBufferNV       vkCmdUpdatePipelineIndirectBufferNV       = 0;
2516       PFN_vkGetPipelineIndirectDeviceAddressNV      vkGetPipelineIndirectDeviceAddressNV      = 0;
2517 
2518       //=== VK_EXT_extended_dynamic_state3 ===
2519       PFN_vkCmdSetDepthClampEnableEXT                 vkCmdSetDepthClampEnableEXT                 = 0;
2520       PFN_vkCmdSetPolygonModeEXT                      vkCmdSetPolygonModeEXT                      = 0;
2521       PFN_vkCmdSetRasterizationSamplesEXT             vkCmdSetRasterizationSamplesEXT             = 0;
2522       PFN_vkCmdSetSampleMaskEXT                       vkCmdSetSampleMaskEXT                       = 0;
2523       PFN_vkCmdSetAlphaToCoverageEnableEXT            vkCmdSetAlphaToCoverageEnableEXT            = 0;
2524       PFN_vkCmdSetAlphaToOneEnableEXT                 vkCmdSetAlphaToOneEnableEXT                 = 0;
2525       PFN_vkCmdSetLogicOpEnableEXT                    vkCmdSetLogicOpEnableEXT                    = 0;
2526       PFN_vkCmdSetColorBlendEnableEXT                 vkCmdSetColorBlendEnableEXT                 = 0;
2527       PFN_vkCmdSetColorBlendEquationEXT               vkCmdSetColorBlendEquationEXT               = 0;
2528       PFN_vkCmdSetColorWriteMaskEXT                   vkCmdSetColorWriteMaskEXT                   = 0;
2529       PFN_vkCmdSetTessellationDomainOriginEXT         vkCmdSetTessellationDomainOriginEXT         = 0;
2530       PFN_vkCmdSetRasterizationStreamEXT              vkCmdSetRasterizationStreamEXT              = 0;
2531       PFN_vkCmdSetConservativeRasterizationModeEXT    vkCmdSetConservativeRasterizationModeEXT    = 0;
2532       PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT vkCmdSetExtraPrimitiveOverestimationSizeEXT = 0;
2533       PFN_vkCmdSetDepthClipEnableEXT                  vkCmdSetDepthClipEnableEXT                  = 0;
2534       PFN_vkCmdSetSampleLocationsEnableEXT            vkCmdSetSampleLocationsEnableEXT            = 0;
2535       PFN_vkCmdSetColorBlendAdvancedEXT               vkCmdSetColorBlendAdvancedEXT               = 0;
2536       PFN_vkCmdSetProvokingVertexModeEXT              vkCmdSetProvokingVertexModeEXT              = 0;
2537       PFN_vkCmdSetLineRasterizationModeEXT            vkCmdSetLineRasterizationModeEXT            = 0;
2538       PFN_vkCmdSetLineStippleEnableEXT                vkCmdSetLineStippleEnableEXT                = 0;
2539       PFN_vkCmdSetDepthClipNegativeOneToOneEXT        vkCmdSetDepthClipNegativeOneToOneEXT        = 0;
2540       PFN_vkCmdSetViewportWScalingEnableNV            vkCmdSetViewportWScalingEnableNV            = 0;
2541       PFN_vkCmdSetViewportSwizzleNV                   vkCmdSetViewportSwizzleNV                   = 0;
2542       PFN_vkCmdSetCoverageToColorEnableNV             vkCmdSetCoverageToColorEnableNV             = 0;
2543       PFN_vkCmdSetCoverageToColorLocationNV           vkCmdSetCoverageToColorLocationNV           = 0;
2544       PFN_vkCmdSetCoverageModulationModeNV            vkCmdSetCoverageModulationModeNV            = 0;
2545       PFN_vkCmdSetCoverageModulationTableEnableNV     vkCmdSetCoverageModulationTableEnableNV     = 0;
2546       PFN_vkCmdSetCoverageModulationTableNV           vkCmdSetCoverageModulationTableNV           = 0;
2547       PFN_vkCmdSetShadingRateImageEnableNV            vkCmdSetShadingRateImageEnableNV            = 0;
2548       PFN_vkCmdSetRepresentativeFragmentTestEnableNV  vkCmdSetRepresentativeFragmentTestEnableNV  = 0;
2549       PFN_vkCmdSetCoverageReductionModeNV             vkCmdSetCoverageReductionModeNV             = 0;
2550 
2551       //=== VK_EXT_shader_module_identifier ===
2552       PFN_vkGetShaderModuleIdentifierEXT           vkGetShaderModuleIdentifierEXT           = 0;
2553       PFN_vkGetShaderModuleCreateInfoIdentifierEXT vkGetShaderModuleCreateInfoIdentifierEXT = 0;
2554 
2555       //=== VK_NV_optical_flow ===
2556       PFN_vkCreateOpticalFlowSessionNV    vkCreateOpticalFlowSessionNV    = 0;
2557       PFN_vkDestroyOpticalFlowSessionNV   vkDestroyOpticalFlowSessionNV   = 0;
2558       PFN_vkBindOpticalFlowSessionImageNV vkBindOpticalFlowSessionImageNV = 0;
2559       PFN_vkCmdOpticalFlowExecuteNV       vkCmdOpticalFlowExecuteNV       = 0;
2560 
2561       //=== VK_KHR_maintenance5 ===
2562       PFN_vkCmdBindIndexBuffer2KHR             vkCmdBindIndexBuffer2KHR             = 0;
2563       PFN_vkGetRenderingAreaGranularityKHR     vkGetRenderingAreaGranularityKHR     = 0;
2564       PFN_vkGetDeviceImageSubresourceLayoutKHR vkGetDeviceImageSubresourceLayoutKHR = 0;
2565       PFN_vkGetImageSubresourceLayout2KHR      vkGetImageSubresourceLayout2KHR      = 0;
2566 
2567       //=== VK_EXT_shader_object ===
2568       PFN_vkCreateShadersEXT       vkCreateShadersEXT       = 0;
2569       PFN_vkDestroyShaderEXT       vkDestroyShaderEXT       = 0;
2570       PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT = 0;
2571       PFN_vkCmdBindShadersEXT      vkCmdBindShadersEXT      = 0;
2572 
2573       //=== VK_QCOM_tile_properties ===
2574       PFN_vkGetFramebufferTilePropertiesQCOM      vkGetFramebufferTilePropertiesQCOM      = 0;
2575       PFN_vkGetDynamicRenderingTilePropertiesQCOM vkGetDynamicRenderingTilePropertiesQCOM = 0;
2576 
2577       //=== VK_NV_low_latency2 ===
2578       PFN_vkSetLatencySleepModeNV  vkSetLatencySleepModeNV  = 0;
2579       PFN_vkLatencySleepNV         vkLatencySleepNV         = 0;
2580       PFN_vkSetLatencyMarkerNV     vkSetLatencyMarkerNV     = 0;
2581       PFN_vkGetLatencyTimingsNV    vkGetLatencyTimingsNV    = 0;
2582       PFN_vkQueueNotifyOutOfBandNV vkQueueNotifyOutOfBandNV = 0;
2583 
2584       //=== VK_EXT_attachment_feedback_loop_dynamic_state ===
2585       PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT vkCmdSetAttachmentFeedbackLoopEnableEXT = 0;
2586 
2587 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
2588       //=== VK_QNX_external_memory_screen_buffer ===
2589       PFN_vkGetScreenBufferPropertiesQNX vkGetScreenBufferPropertiesQNX = 0;
2590 #  else
2591       PFN_dummy vkGetScreenBufferPropertiesQNX_placeholder                    = 0;
2592 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
2593 
2594       //=== VK_KHR_line_rasterization ===
2595       PFN_vkCmdSetLineStippleKHR vkCmdSetLineStippleKHR = 0;
2596 
2597       //=== VK_KHR_calibrated_timestamps ===
2598       PFN_vkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHR = 0;
2599 
2600       //=== VK_KHR_maintenance6 ===
2601       PFN_vkCmdBindDescriptorSets2KHR                   vkCmdBindDescriptorSets2KHR                   = 0;
2602       PFN_vkCmdPushConstants2KHR                        vkCmdPushConstants2KHR                        = 0;
2603       PFN_vkCmdPushDescriptorSet2KHR                    vkCmdPushDescriptorSet2KHR                    = 0;
2604       PFN_vkCmdPushDescriptorSetWithTemplate2KHR        vkCmdPushDescriptorSetWithTemplate2KHR        = 0;
2605       PFN_vkCmdSetDescriptorBufferOffsets2EXT           vkCmdSetDescriptorBufferOffsets2EXT           = 0;
2606       PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 0;
2607     };
2608 
2609     //========================================
2610     //=== RAII HANDLE forward declarations ===
2611     //========================================
2612 
2613     //=== VK_VERSION_1_0 ===
2614     class Instance;
2615     class PhysicalDevice;
2616     class Device;
2617     class Queue;
2618     class DeviceMemory;
2619     class Fence;
2620     class Semaphore;
2621     class Event;
2622     class QueryPool;
2623     class Buffer;
2624     class BufferView;
2625     class Image;
2626     class ImageView;
2627     class ShaderModule;
2628     class PipelineCache;
2629     class Pipeline;
2630     class PipelineLayout;
2631     class Sampler;
2632     class DescriptorPool;
2633     class DescriptorSet;
2634     class DescriptorSetLayout;
2635     class Framebuffer;
2636     class RenderPass;
2637     class CommandPool;
2638     class CommandBuffer;
2639 
2640     //=== VK_VERSION_1_1 ===
2641     class SamplerYcbcrConversion;
2642     class DescriptorUpdateTemplate;
2643 
2644     //=== VK_VERSION_1_3 ===
2645     class PrivateDataSlot;
2646 
2647     //=== VK_KHR_surface ===
2648     class SurfaceKHR;
2649 
2650     //=== VK_KHR_swapchain ===
2651     class SwapchainKHR;
2652 
2653     //=== VK_KHR_display ===
2654     class DisplayKHR;
2655     class DisplayModeKHR;
2656 
2657     //=== VK_EXT_debug_report ===
2658     class DebugReportCallbackEXT;
2659 
2660     //=== VK_KHR_video_queue ===
2661     class VideoSessionKHR;
2662     class VideoSessionParametersKHR;
2663 
2664     //=== VK_NVX_binary_import ===
2665     class CuModuleNVX;
2666     class CuFunctionNVX;
2667 
2668     //=== VK_EXT_debug_utils ===
2669     class DebugUtilsMessengerEXT;
2670 
2671     //=== VK_KHR_acceleration_structure ===
2672     class AccelerationStructureKHR;
2673 
2674     //=== VK_EXT_validation_cache ===
2675     class ValidationCacheEXT;
2676 
2677     //=== VK_NV_ray_tracing ===
2678     class AccelerationStructureNV;
2679 
2680     //=== VK_INTEL_performance_query ===
2681     class PerformanceConfigurationINTEL;
2682 
2683     //=== VK_KHR_deferred_host_operations ===
2684     class DeferredOperationKHR;
2685 
2686     //=== VK_NV_device_generated_commands ===
2687     class IndirectCommandsLayoutNV;
2688 
2689 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
2690     //=== VK_NV_cuda_kernel_launch ===
2691     class CudaModuleNV;
2692     class CudaFunctionNV;
2693 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
2694 
2695 #  if defined( VK_USE_PLATFORM_FUCHSIA )
2696     //=== VK_FUCHSIA_buffer_collection ===
2697     class BufferCollectionFUCHSIA;
2698 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
2699 
2700     //=== VK_EXT_opacity_micromap ===
2701     class MicromapEXT;
2702 
2703     //=== VK_NV_optical_flow ===
2704     class OpticalFlowSessionNV;
2705 
2706     //=== VK_EXT_shader_object ===
2707     class ShaderEXT;
2708 
2709     //====================
2710     //=== RAII HANDLES ===
2711     //====================
2712 
2713     class Context
2714     {
2715     public:
2716 #  if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
Context()2717       Context()
2718         : m_dispatcher( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher(
2719             m_dynamicLoader.getProcAddress<PFN_vkGetInstanceProcAddr>( "vkGetInstanceProcAddr" ) ) )
2720 #  else
2721       Context( PFN_vkGetInstanceProcAddr getInstanceProcAddr )
2722         : m_dispatcher( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher( getInstanceProcAddr ) )
2723 #  endif
2724       {
2725       }
2726 
2727       ~Context() = default;
2728 
2729       Context( Context const & ) = delete;
Context(Context && rhs)2730       Context( Context && rhs ) VULKAN_HPP_NOEXCEPT
2731 #  if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
2732         : m_dynamicLoader( std::move( rhs.m_dynamicLoader ) )
2733         , m_dispatcher( rhs.m_dispatcher.release() )
2734 #  else
2735         : m_dispatcher( rhs.m_dispatcher.release() )
2736 #  endif
2737       {
2738       }
2739       Context & operator=( Context const & ) = delete;
2740 
operator =(Context && rhs)2741       Context & operator=( Context && rhs ) VULKAN_HPP_NOEXCEPT
2742       {
2743         if ( this != &rhs )
2744         {
2745 #  if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
2746           m_dynamicLoader = std::move( rhs.m_dynamicLoader );
2747 #  endif
2748           m_dispatcher.reset( rhs.m_dispatcher.release() );
2749         }
2750         return *this;
2751       }
2752 
getDispatcher() const2753       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher const * getDispatcher() const
2754       {
2755         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
2756         return &*m_dispatcher;
2757       }
2758 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context & rhs)2759       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context & rhs )
2760       {
2761 #  if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
2762         std::swap( m_dynamicLoader, rhs.m_dynamicLoader );
2763 #  endif
2764         m_dispatcher.swap( rhs.m_dispatcher );
2765       }
2766 
2767       //=== VK_VERSION_1_0 ===
2768 
2769       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance>::Type
2770                            createInstance( VULKAN_HPP_NAMESPACE::InstanceCreateInfo const &                                createInfo,
2771                                            VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2772         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2773 
2774       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties>
2775                            enumerateInstanceExtensionProperties( Optional<const std::string> layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
2776 
2777       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> enumerateInstanceLayerProperties() const;
2778 
2779       //=== VK_VERSION_1_1 ===
2780 
2781       VULKAN_HPP_NODISCARD uint32_t enumerateInstanceVersion() const;
2782 
2783     private:
2784 #  if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL
2785       VULKAN_HPP_NAMESPACE::DynamicLoader m_dynamicLoader;
2786 #  endif
2787       std::unique_ptr<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher> m_dispatcher;
2788     };
2789 
2790     class Instance
2791     {
2792     public:
2793       using CType   = VkInstance;
2794       using CppType = VULKAN_HPP_NAMESPACE::Instance;
2795 
2796       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eInstance;
2797       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
2798         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eInstance;
2799 
2800     public:
2801 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)2802       Instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const &                context,
2803                 VULKAN_HPP_NAMESPACE::InstanceCreateInfo const &                                createInfo,
2804                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2805       {
2806         *this = context.createInstance( createInfo, allocator );
2807       }
2808 #  endif
2809 
Instance(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const & context,VkInstance instance,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2810       Instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const &                context,
2811                 VkInstance                                                                      instance,
2812                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2813         : m_instance( instance ), m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
2814       {
2815         m_dispatcher.reset( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher( context.getDispatcher()->vkGetInstanceProcAddr,
2816                                                                                                      static_cast<VkInstance>( m_instance ) ) );
2817       }
2818 
Instance(std::nullptr_t)2819       Instance( std::nullptr_t ) {}
2820 
~Instance()2821       ~Instance()
2822       {
2823         clear();
2824       }
2825 
2826       Instance()                   = delete;
2827       Instance( Instance const & ) = delete;
2828 
Instance(Instance && rhs)2829       Instance( Instance && rhs ) VULKAN_HPP_NOEXCEPT
2830         : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) )
2831         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
2832         , m_dispatcher( rhs.m_dispatcher.release() )
2833       {
2834       }
2835 
2836       Instance & operator=( Instance const & ) = delete;
2837 
operator =(Instance && rhs)2838       Instance & operator=( Instance && rhs ) VULKAN_HPP_NOEXCEPT
2839       {
2840         if ( this != &rhs )
2841         {
2842           std::swap( m_instance, rhs.m_instance );
2843           std::swap( m_allocator, rhs.m_allocator );
2844           std::swap( m_dispatcher, rhs.m_dispatcher );
2845         }
2846         return *this;
2847       }
2848 
operator *() const2849       VULKAN_HPP_NAMESPACE::Instance const & operator*() const VULKAN_HPP_NOEXCEPT
2850       {
2851         return m_instance;
2852       }
2853 
operator VULKAN_HPP_NAMESPACE::Instance() const2854       operator VULKAN_HPP_NAMESPACE::Instance() const VULKAN_HPP_NOEXCEPT
2855       {
2856         return m_instance;
2857       }
2858 
clear()2859       void clear() VULKAN_HPP_NOEXCEPT
2860       {
2861         if ( m_instance )
2862         {
2863           getDispatcher()->vkDestroyInstance( static_cast<VkInstance>( m_instance ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
2864         }
2865         m_instance   = nullptr;
2866         m_allocator  = nullptr;
2867         m_dispatcher = nullptr;
2868       }
2869 
release()2870       VULKAN_HPP_NAMESPACE::Instance release()
2871       {
2872         m_allocator  = nullptr;
2873         m_dispatcher = nullptr;
2874         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_instance, nullptr );
2875       }
2876 
getDispatcher() const2877       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
2878       {
2879         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
2880         return &*m_dispatcher;
2881       }
2882 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance & rhs)2883       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance & rhs ) VULKAN_HPP_NOEXCEPT
2884       {
2885         std::swap( m_instance, rhs.m_instance );
2886         std::swap( m_allocator, rhs.m_allocator );
2887         std::swap( m_dispatcher, rhs.m_dispatcher );
2888       }
2889 
2890       //=== VK_VERSION_1_0 ===
2891 
2892       VULKAN_HPP_NODISCARD
2893         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice>>::Type
2894         enumeratePhysicalDevices() const;
2895 
2896       VULKAN_HPP_NODISCARD PFN_vkVoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT;
2897 
2898       //=== VK_VERSION_1_1 ===
2899 
2900       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> enumeratePhysicalDeviceGroups() const;
2901 
2902       //=== VK_KHR_display ===
2903 
2904       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2905                            createDisplayPlaneSurfaceKHR( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const &                       createInfo,
2906                                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2907         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2908 
2909 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
2910       //=== VK_KHR_xlib_surface ===
2911 
2912       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2913                            createXlibSurfaceKHR( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const &                          createInfo,
2914                                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2915         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2916 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
2917 
2918 #  if defined( VK_USE_PLATFORM_XCB_KHR )
2919       //=== VK_KHR_xcb_surface ===
2920 
2921       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2922                            createXcbSurfaceKHR( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const &                           createInfo,
2923                                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2924         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2925 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
2926 
2927 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
2928       //=== VK_KHR_wayland_surface ===
2929 
2930       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2931                            createWaylandSurfaceKHR( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const &                       createInfo,
2932                                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2933         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2934 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
2935 
2936 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
2937       //=== VK_KHR_android_surface ===
2938 
2939       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2940                            createAndroidSurfaceKHR( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const &                       createInfo,
2941                                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2942         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2943 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
2944 
2945 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2946       //=== VK_KHR_win32_surface ===
2947 
2948       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2949                            createWin32SurfaceKHR( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const &                         createInfo,
2950                                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2951         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2952 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2953 
2954       //=== VK_EXT_debug_report ===
2955 
2956       VULKAN_HPP_NODISCARD
2957         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT>::Type
2958         createDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const &                  createInfo,
2959                                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2960         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2961 
2962       void debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT      flags,
2963                                   VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_,
2964                                   uint64_t                                       object,
2965                                   size_t                                         location,
2966                                   int32_t                                        messageCode,
2967                                   const std::string &                            layerPrefix,
2968                                   const std::string &                            message ) const VULKAN_HPP_NOEXCEPT;
2969 
2970 #  if defined( VK_USE_PLATFORM_GGP )
2971       //=== VK_GGP_stream_descriptor_surface ===
2972 
2973       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2974                            createStreamDescriptorSurfaceGGP( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const &              createInfo,
2975                                                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2976         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2977 #  endif /*VK_USE_PLATFORM_GGP*/
2978 
2979 #  if defined( VK_USE_PLATFORM_VI_NN )
2980       //=== VK_NN_vi_surface ===
2981 
2982       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2983                            createViSurfaceNN( VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const &                             createInfo,
2984                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2985         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2986 #  endif /*VK_USE_PLATFORM_VI_NN*/
2987 
2988       //=== VK_KHR_device_group_creation ===
2989 
2990       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> enumeratePhysicalDeviceGroupsKHR() const;
2991 
2992 #  if defined( VK_USE_PLATFORM_IOS_MVK )
2993       //=== VK_MVK_ios_surface ===
2994 
2995       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
2996                            createIOSSurfaceMVK( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const &                           createInfo,
2997                                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
2998         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
2999 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
3000 
3001 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
3002       //=== VK_MVK_macos_surface ===
3003 
3004       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
3005                            createMacOSSurfaceMVK( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const &                         createInfo,
3006                                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3007         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3008 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
3009 
3010       //=== VK_EXT_debug_utils ===
3011 
3012       VULKAN_HPP_NODISCARD
3013         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugUtilsMessengerEXT>::Type
3014         createDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const &                  createInfo,
3015                                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3016         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3017 
3018       void submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT       messageSeverity,
3019                                        VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT              messageTypes,
3020                                        const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT;
3021 
3022 #  if defined( VK_USE_PLATFORM_FUCHSIA )
3023       //=== VK_FUCHSIA_imagepipe_surface ===
3024 
3025       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
3026                            createImagePipeSurfaceFUCHSIA( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const &                 createInfo,
3027                                                           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3028         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3029 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
3030 
3031 #  if defined( VK_USE_PLATFORM_METAL_EXT )
3032       //=== VK_EXT_metal_surface ===
3033 
3034       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
3035                            createMetalSurfaceEXT( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const &                         createInfo,
3036                                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3037         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3038 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
3039 
3040       //=== VK_EXT_headless_surface ===
3041 
3042       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
3043                            createHeadlessSurfaceEXT( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const &                      createInfo,
3044                                                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3045         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3046 
3047 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
3048       //=== VK_EXT_directfb_surface ===
3049 
3050       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
3051                            createDirectFBSurfaceEXT( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const &                      createInfo,
3052                                                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3053         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3054 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
3055 
3056 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
3057       //=== VK_QNX_screen_surface ===
3058 
3059       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
3060                            createScreenSurfaceQNX( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const &                        createInfo,
3061                                                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3062         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3063 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
3064 
3065     private:
3066       VULKAN_HPP_NAMESPACE::Instance                                                       m_instance  = {};
3067       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                                    m_allocator = {};
3068       std::unique_ptr<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher> m_dispatcher;
3069     };
3070 
3071     class PhysicalDevice
3072     {
3073     public:
3074       using CType   = VkPhysicalDevice;
3075       using CppType = VULKAN_HPP_NAMESPACE::PhysicalDevice;
3076 
3077       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePhysicalDevice;
3078       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3079         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePhysicalDevice;
3080 
3081     public:
PhysicalDevice(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkPhysicalDevice physicalDevice)3082       PhysicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance, VkPhysicalDevice physicalDevice )
3083         : m_physicalDevice( physicalDevice ), m_dispatcher( instance.getDispatcher() )
3084       {
3085       }
3086 
PhysicalDevice(std::nullptr_t)3087       PhysicalDevice( std::nullptr_t ) {}
3088 
~PhysicalDevice()3089       ~PhysicalDevice()
3090       {
3091         clear();
3092       }
3093 
3094       PhysicalDevice() = delete;
3095 
PhysicalDevice(PhysicalDevice const & rhs)3096       PhysicalDevice( PhysicalDevice const & rhs ) : m_physicalDevice( rhs.m_physicalDevice ), m_dispatcher( rhs.m_dispatcher ) {}
3097 
PhysicalDevice(PhysicalDevice && rhs)3098       PhysicalDevice( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT
3099         : m_physicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ) )
3100         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
3101       {
3102       }
3103 
operator =(PhysicalDevice const & rhs)3104       PhysicalDevice & operator=( PhysicalDevice const & rhs )
3105       {
3106         m_physicalDevice = rhs.m_physicalDevice;
3107         m_dispatcher     = rhs.m_dispatcher;
3108         return *this;
3109       }
3110 
operator =(PhysicalDevice && rhs)3111       PhysicalDevice & operator=( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT
3112       {
3113         if ( this != &rhs )
3114         {
3115           std::swap( m_physicalDevice, rhs.m_physicalDevice );
3116           std::swap( m_dispatcher, rhs.m_dispatcher );
3117         }
3118         return *this;
3119       }
3120 
operator *() const3121       VULKAN_HPP_NAMESPACE::PhysicalDevice const & operator*() const VULKAN_HPP_NOEXCEPT
3122       {
3123         return m_physicalDevice;
3124       }
3125 
operator VULKAN_HPP_NAMESPACE::PhysicalDevice() const3126       operator VULKAN_HPP_NAMESPACE::PhysicalDevice() const VULKAN_HPP_NOEXCEPT
3127       {
3128         return m_physicalDevice;
3129       }
3130 
clear()3131       void clear() VULKAN_HPP_NOEXCEPT
3132       {
3133         m_physicalDevice = nullptr;
3134         m_dispatcher     = nullptr;
3135       }
3136 
release()3137       VULKAN_HPP_NAMESPACE::PhysicalDevice release()
3138       {
3139         m_dispatcher = nullptr;
3140         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_physicalDevice, nullptr );
3141       }
3142 
getDispatcher() const3143       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
3144       {
3145         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3146         return m_dispatcher;
3147       }
3148 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice & rhs)3149       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice & rhs ) VULKAN_HPP_NOEXCEPT
3150       {
3151         std::swap( m_physicalDevice, rhs.m_physicalDevice );
3152         std::swap( m_dispatcher, rhs.m_dispatcher );
3153       }
3154 
3155       //=== VK_VERSION_1_0 ===
3156 
3157       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures getFeatures() const VULKAN_HPP_NOEXCEPT;
3158 
3159       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties getFormatProperties( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
3160 
3161       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties
3162                            getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format                 format,
3163                                                      VULKAN_HPP_NAMESPACE::ImageType              type,
3164                                                      VULKAN_HPP_NAMESPACE::ImageTiling            tiling,
3165                                                      VULKAN_HPP_NAMESPACE::ImageUsageFlags        usage,
3166                                                      VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
3167 
3168       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties getProperties() const VULKAN_HPP_NOEXCEPT;
3169 
3170       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties> getQueueFamilyProperties() const;
3171 
3172       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties getMemoryProperties() const VULKAN_HPP_NOEXCEPT;
3173 
3174       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device>::Type
3175                            createDevice( VULKAN_HPP_NAMESPACE::DeviceCreateInfo const &                                  createInfo,
3176                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3177         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3178 
3179       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties>
3180                            enumerateDeviceExtensionProperties( Optional<const std::string> layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
3181 
3182       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> enumerateDeviceLayerProperties() const;
3183 
3184       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties>
3185                            getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format              format,
3186                                                            VULKAN_HPP_NAMESPACE::ImageType           type,
3187                                                            VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,
3188                                                            VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage,
3189                                                            VULKAN_HPP_NAMESPACE::ImageTiling         tiling ) const;
3190 
3191       //=== VK_VERSION_1_1 ===
3192 
3193       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2() const VULKAN_HPP_NOEXCEPT;
3194 
3195       template <typename X, typename Y, typename... Z>
3196       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> getFeatures2() const VULKAN_HPP_NOEXCEPT;
3197 
3198       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 getProperties2() const VULKAN_HPP_NOEXCEPT;
3199 
3200       template <typename X, typename Y, typename... Z>
3201       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> getProperties2() const VULKAN_HPP_NOEXCEPT;
3202 
3203       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2 getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
3204 
3205       template <typename X, typename Y, typename... Z>
3206       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3207                            getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
3208 
3209       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties2
3210                            getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
3211 
3212       template <typename X, typename Y, typename... Z>
3213       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3214                            getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
3215 
3216       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> getQueueFamilyProperties2() const;
3217 
3218       template <typename StructureChain>
3219       VULKAN_HPP_NODISCARD std::vector<StructureChain> getQueueFamilyProperties2() const;
3220 
3221       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 getMemoryProperties2() const VULKAN_HPP_NOEXCEPT;
3222 
3223       template <typename X, typename Y, typename... Z>
3224       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> getMemoryProperties2() const VULKAN_HPP_NOEXCEPT;
3225 
3226       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
3227                            getSparseImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const;
3228 
3229       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties
3230         getExternalBufferProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT;
3231 
3232       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties
3233         getExternalFenceProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT;
3234 
3235       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties
3236         getExternalSemaphoreProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT;
3237 
3238       //=== VK_VERSION_1_3 ===
3239 
3240       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties> getToolProperties() const;
3241 
3242       //=== VK_KHR_surface ===
3243 
3244       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3245 
3246       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3247 
3248       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>
3249                            getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
3250 
3251       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
3252                            getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
3253 
3254       //=== VK_KHR_swapchain ===
3255 
3256       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::Rect2D> getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3257 
3258       //=== VK_KHR_display ===
3259 
3260       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR> getDisplayPropertiesKHR() const;
3261 
3262       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR> getDisplayPlanePropertiesKHR() const;
3263 
3264       VULKAN_HPP_NODISCARD
3265         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>>::Type
3266         getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
3267 
3268 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
3269       //=== VK_KHR_xlib_surface ===
3270 
3271       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
3272                            getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT;
3273 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
3274 
3275 #  if defined( VK_USE_PLATFORM_XCB_KHR )
3276       //=== VK_KHR_xcb_surface ===
3277 
3278       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
3279         getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT;
3280 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
3281 
3282 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
3283       //=== VK_KHR_wayland_surface ===
3284 
3285       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getWaylandPresentationSupportKHR( uint32_t            queueFamilyIndex,
3286                                                                                           struct wl_display & display ) const VULKAN_HPP_NOEXCEPT;
3287 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
3288 
3289 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
3290       //=== VK_KHR_win32_surface ===
3291 
3292       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT;
3293 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3294 
3295       //=== VK_KHR_video_queue ===
3296 
3297       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR
3298                            getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR & videoProfile ) const;
3299 
3300       template <typename X, typename Y, typename... Z>
3301       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3302                            getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR & videoProfile ) const;
3303 
3304       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR>
3305                            getVideoFormatPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const;
3306 
3307       //=== VK_NV_external_memory_capabilities ===
3308 
3309       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV getExternalImageFormatPropertiesNV(
3310         VULKAN_HPP_NAMESPACE::Format                                             format,
3311         VULKAN_HPP_NAMESPACE::ImageType                                          type,
3312         VULKAN_HPP_NAMESPACE::ImageTiling                                        tiling,
3313         VULKAN_HPP_NAMESPACE::ImageUsageFlags                                    usage,
3314         VULKAN_HPP_NAMESPACE::ImageCreateFlags flags                             VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
3315         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
3316 
3317       //=== VK_KHR_get_physical_device_properties2 ===
3318 
3319       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2KHR() const VULKAN_HPP_NOEXCEPT;
3320 
3321       template <typename X, typename Y, typename... Z>
3322       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> getFeatures2KHR() const VULKAN_HPP_NOEXCEPT;
3323 
3324       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 getProperties2KHR() const VULKAN_HPP_NOEXCEPT;
3325 
3326       template <typename X, typename Y, typename... Z>
3327       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> getProperties2KHR() const VULKAN_HPP_NOEXCEPT;
3328 
3329       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2 getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
3330 
3331       template <typename X, typename Y, typename... Z>
3332       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3333                            getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
3334 
3335       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties2
3336                            getImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
3337 
3338       template <typename X, typename Y, typename... Z>
3339       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3340                            getImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
3341 
3342       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> getQueueFamilyProperties2KHR() const;
3343 
3344       template <typename StructureChain>
3345       VULKAN_HPP_NODISCARD std::vector<StructureChain> getQueueFamilyProperties2KHR() const;
3346 
3347       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT;
3348 
3349       template <typename X, typename Y, typename... Z>
3350       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT;
3351 
3352       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
3353                            getSparseImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const;
3354 
3355       //=== VK_KHR_external_memory_capabilities ===
3356 
3357       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties
3358         getExternalBufferPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT;
3359 
3360       //=== VK_KHR_external_semaphore_capabilities ===
3361 
3362       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties
3363         getExternalSemaphorePropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT;
3364 
3365 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
3366       //=== VK_EXT_acquire_xlib_display ===
3367 
3368       void acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const;
3369 
3370       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>::Type
3371                            getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3372 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
3373 
3374       //=== VK_EXT_display_surface_counter ===
3375 
3376       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3377 
3378       //=== VK_KHR_external_fence_capabilities ===
3379 
3380       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties
3381         getExternalFencePropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT;
3382 
3383       //=== VK_KHR_performance_query ===
3384 
3385       VULKAN_HPP_NODISCARD
3386         std::pair<std::vector<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR>, std::vector<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR>>
3387         enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const;
3388 
3389       VULKAN_HPP_NODISCARD uint32_t getQueueFamilyPerformanceQueryPassesKHR(
3390         const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const VULKAN_HPP_NOEXCEPT;
3391 
3392       //=== VK_KHR_get_surface_capabilities2 ===
3393 
3394       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR
3395                            getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3396 
3397       template <typename X, typename Y, typename... Z>
3398       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3399                            getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3400 
3401       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>
3402                            getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3403 
3404       template <typename StructureChain>
3405       VULKAN_HPP_NODISCARD std::vector<StructureChain> getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3406 
3407       //=== VK_KHR_get_display_properties2 ===
3408 
3409       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR> getDisplayProperties2KHR() const;
3410 
3411       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR> getDisplayPlaneProperties2KHR() const;
3412 
3413       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR
3414                            getDisplayPlaneCapabilities2KHR( const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo ) const;
3415 
3416       //=== VK_EXT_sample_locations ===
3417 
3418       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT
3419                            getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT;
3420 
3421       //=== VK_EXT_calibrated_timestamps ===
3422 
3423       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::TimeDomainKHR> getCalibrateableTimeDomainsEXT() const;
3424 
3425       //=== VK_KHR_fragment_shading_rate ===
3426 
3427       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR> getFragmentShadingRatesKHR() const;
3428 
3429       //=== VK_EXT_tooling_info ===
3430 
3431       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties> getToolPropertiesEXT() const;
3432 
3433       //=== VK_NV_cooperative_matrix ===
3434 
3435       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV> getCooperativeMatrixPropertiesNV() const;
3436 
3437       //=== VK_NV_coverage_reduction_mode ===
3438 
3439       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV> getSupportedFramebufferMixedSamplesCombinationsNV() const;
3440 
3441 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
3442       //=== VK_EXT_full_screen_exclusive ===
3443 
3444       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
3445                            getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
3446 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3447 
3448       //=== VK_EXT_acquire_drm_display ===
3449 
3450       void acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const;
3451 
3452       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>::Type
3453                            getDrmDisplayEXT( int32_t drmFd, uint32_t connectorId ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3454 
3455       //=== VK_KHR_video_encode_queue ===
3456 
3457       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR
3458         getVideoEncodeQualityLevelPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo ) const;
3459 
3460       template <typename X, typename Y, typename... Z>
3461       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3462         getVideoEncodeQualityLevelPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo ) const;
3463 
3464 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
3465       //=== VK_NV_acquire_winrt_display ===
3466 
3467       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>::Type
3468                            getWinrtDisplayNV( uint32_t deviceRelativeId ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3469 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3470 
3471 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
3472       //=== VK_EXT_directfb_surface ===
3473 
3474       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getDirectFBPresentationSupportEXT( uint32_t    queueFamilyIndex,
3475                                                                                            IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT;
3476 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
3477 
3478 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
3479       //=== VK_QNX_screen_surface ===
3480 
3481       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getScreenPresentationSupportQNX( uint32_t                queueFamilyIndex,
3482                                                                                          struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT;
3483 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
3484 
3485       //=== VK_NV_optical_flow ===
3486 
3487       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV>
3488                            getOpticalFlowImageFormatsNV( const VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV & opticalFlowImageFormatInfo ) const;
3489 
3490       //=== VK_KHR_cooperative_matrix ===
3491 
3492       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR> getCooperativeMatrixPropertiesKHR() const;
3493 
3494       //=== VK_KHR_calibrated_timestamps ===
3495 
3496       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::TimeDomainKHR> getCalibrateableTimeDomainsKHR() const;
3497 
3498     private:
3499       VULKAN_HPP_NAMESPACE::PhysicalDevice                                        m_physicalDevice = {};
3500       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher     = nullptr;
3501     };
3502 
3503     class PhysicalDevices : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice>
3504     {
3505     public:
3506 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
PhysicalDevices(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance)3507       PhysicalDevices( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance )
3508       {
3509         *this = instance.enumeratePhysicalDevices();
3510       }
3511 #  endif
3512 
PhysicalDevices(std::nullptr_t)3513       PhysicalDevices( std::nullptr_t ) {}
3514 
3515       PhysicalDevices()                                      = delete;
3516       PhysicalDevices( PhysicalDevices const & )             = delete;
3517       PhysicalDevices( PhysicalDevices && rhs )              = default;
3518       PhysicalDevices & operator=( PhysicalDevices const & ) = delete;
3519       PhysicalDevices & operator=( PhysicalDevices && rhs )  = default;
3520 
3521     private:
PhysicalDevices(std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice> && rhs)3522       PhysicalDevices( std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice> && rhs )
3523       {
3524         std::swap( *this, rhs );
3525       }
3526     };
3527 
3528     class Device
3529     {
3530     public:
3531       using CType   = VkDevice;
3532       using CppType = VULKAN_HPP_NAMESPACE::Device;
3533 
3534       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDevice;
3535       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3536         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDevice;
3537 
3538     public:
3539 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)3540       Device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const &         physicalDevice,
3541               VULKAN_HPP_NAMESPACE::DeviceCreateInfo const &                                  createInfo,
3542               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3543       {
3544         *this = physicalDevice.createDevice( createInfo, allocator );
3545       }
3546 #  endif
3547 
Device(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VkDevice device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3548       Device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const &         physicalDevice,
3549               VkDevice                                                                        device,
3550               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3551         : m_device( device ), m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
3552       {
3553         m_dispatcher.reset( new VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher( physicalDevice.getDispatcher()->vkGetDeviceProcAddr,
3554                                                                                                    static_cast<VkDevice>( m_device ) ) );
3555       }
3556 
Device(std::nullptr_t)3557       Device( std::nullptr_t ) {}
3558 
~Device()3559       ~Device()
3560       {
3561         clear();
3562       }
3563 
3564       Device()                 = delete;
3565       Device( Device const & ) = delete;
3566 
Device(Device && rhs)3567       Device( Device && rhs ) VULKAN_HPP_NOEXCEPT
3568         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
3569         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
3570         , m_dispatcher( rhs.m_dispatcher.release() )
3571       {
3572       }
3573 
3574       Device & operator=( Device const & ) = delete;
3575 
operator =(Device && rhs)3576       Device & operator=( Device && rhs ) VULKAN_HPP_NOEXCEPT
3577       {
3578         if ( this != &rhs )
3579         {
3580           std::swap( m_device, rhs.m_device );
3581           std::swap( m_allocator, rhs.m_allocator );
3582           std::swap( m_dispatcher, rhs.m_dispatcher );
3583         }
3584         return *this;
3585       }
3586 
operator *() const3587       VULKAN_HPP_NAMESPACE::Device const & operator*() const VULKAN_HPP_NOEXCEPT
3588       {
3589         return m_device;
3590       }
3591 
operator VULKAN_HPP_NAMESPACE::Device() const3592       operator VULKAN_HPP_NAMESPACE::Device() const VULKAN_HPP_NOEXCEPT
3593       {
3594         return m_device;
3595       }
3596 
clear()3597       void clear() VULKAN_HPP_NOEXCEPT
3598       {
3599         if ( m_device )
3600         {
3601           getDispatcher()->vkDestroyDevice( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
3602         }
3603         m_device     = nullptr;
3604         m_allocator  = nullptr;
3605         m_dispatcher = nullptr;
3606       }
3607 
release()3608       VULKAN_HPP_NAMESPACE::Device release()
3609       {
3610         m_allocator  = nullptr;
3611         m_dispatcher = nullptr;
3612         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_device, nullptr );
3613       }
3614 
getDispatcher() const3615       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3616       {
3617         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
3618         return &*m_dispatcher;
3619       }
3620 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device & rhs)3621       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device & rhs ) VULKAN_HPP_NOEXCEPT
3622       {
3623         std::swap( m_device, rhs.m_device );
3624         std::swap( m_allocator, rhs.m_allocator );
3625         std::swap( m_dispatcher, rhs.m_dispatcher );
3626       }
3627 
3628       //=== VK_VERSION_1_0 ===
3629 
3630       VULKAN_HPP_NODISCARD PFN_vkVoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT;
3631 
3632       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Queue>::Type
3633                            getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3634 
3635       void waitIdle() const;
3636 
3637       VULKAN_HPP_NODISCARD
3638         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceMemory>::Type
3639         allocateMemory( VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const &                                allocateInfo,
3640                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3641         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3642 
3643       void flushMappedMemoryRanges( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const;
3644 
3645       void invalidateMappedMemoryRanges( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const;
3646 
3647       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence>::Type
3648                            createFence( VULKAN_HPP_NAMESPACE::FenceCreateInfo const &                                   createInfo,
3649                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3650         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3651 
3652       void resetFences( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences ) const;
3653 
3654       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result waitForFences( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,
3655                                                                        VULKAN_HPP_NAMESPACE::Bool32                                                waitAll,
3656                                                                        uint64_t timeout ) const;
3657 
3658       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Semaphore>::Type
3659                            createSemaphore( VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const &                               createInfo,
3660                                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3661         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3662 
3663       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Event>::Type
3664                            createEvent( VULKAN_HPP_NAMESPACE::EventCreateInfo const &                                   createInfo,
3665                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3666         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3667 
3668       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::QueryPool>::Type
3669                            createQueryPool( VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const &                               createInfo,
3670                                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3671         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3672 
3673       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Buffer>::Type
3674                            createBuffer( VULKAN_HPP_NAMESPACE::BufferCreateInfo const &                                  createInfo,
3675                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3676         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3677 
3678       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferView>::Type
3679                            createBufferView( VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const &                              createInfo,
3680                                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3681         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3682 
3683       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Image>::Type
3684                            createImage( VULKAN_HPP_NAMESPACE::ImageCreateInfo const &                                   createInfo,
3685                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3686         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3687 
3688       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ImageView>::Type
3689                            createImageView( VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const &                               createInfo,
3690                                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3691         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3692 
3693       VULKAN_HPP_NODISCARD
3694         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderModule>::Type
3695         createShaderModule( VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const &                            createInfo,
3696                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3697         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3698 
3699       VULKAN_HPP_NODISCARD
3700         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache>::Type
3701         createPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const &                           createInfo,
3702                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3703         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3704 
3705       VULKAN_HPP_NODISCARD
3706         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
3707         createGraphicsPipelines( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
3708                                  VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo> const &                   createInfos,
3709                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const;
3710 
3711       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
3712         createGraphicsPipeline( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
3713                                 VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const &                                                     createInfo,
3714                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3715         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3716 
3717       VULKAN_HPP_NODISCARD
3718         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
3719         createComputePipelines( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
3720                                 VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo> const &                    createInfos,
3721                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const;
3722 
3723       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
3724         createComputePipeline( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
3725                                VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const &                                                      createInfo,
3726                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3727         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3728 
3729       VULKAN_HPP_NODISCARD
3730         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineLayout>::Type
3731         createPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const &                          createInfo,
3732                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3733         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3734 
3735       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Sampler>::Type
3736                            createSampler( VULKAN_HPP_NAMESPACE::SamplerCreateInfo const &                                 createInfo,
3737                                           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3738         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3739 
3740       VULKAN_HPP_NODISCARD
3741         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSetLayout>::Type
3742         createDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const &                     createInfo,
3743                                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3744         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3745 
3746       VULKAN_HPP_NODISCARD
3747         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool>::Type
3748         createDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const &                          createInfo,
3749                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3750         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3751 
3752       VULKAN_HPP_NODISCARD
3753         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet>>::Type
3754         allocateDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo ) const;
3755 
3756       void updateDescriptorSets( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,
3757                                  VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const &  descriptorCopies ) const
3758         VULKAN_HPP_NOEXCEPT;
3759 
3760       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Framebuffer>::Type
3761                            createFramebuffer( VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const &                             createInfo,
3762                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3763         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3764 
3765       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass>::Type
3766                            createRenderPass( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const &                              createInfo,
3767                                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3768         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3769 
3770       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool>::Type
3771                            createCommandPool( VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const &                             createInfo,
3772                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3773         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3774 
3775       VULKAN_HPP_NODISCARD
3776         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer>>::Type
3777         allocateCommandBuffers( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo ) const;
3778 
3779       //=== VK_VERSION_1_1 ===
3780 
3781       void bindBufferMemory2( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const;
3782 
3783       void bindImageMemory2( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const;
3784 
3785       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags
3786                            getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT;
3787 
3788       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
3789                            getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3790 
3791       template <typename X, typename Y, typename... Z>
3792       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3793                            getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3794 
3795       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
3796                            getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3797 
3798       template <typename X, typename Y, typename... Z>
3799       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3800                            getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
3801 
3802       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
3803                            getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const;
3804 
3805       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Queue>::Type
3806                            getQueue2( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3807 
3808       VULKAN_HPP_NODISCARD
3809         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion>::Type
3810         createSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const &                  createInfo,
3811                                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3812         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3813 
3814       VULKAN_HPP_NODISCARD
3815         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate>::Type
3816         createDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const &                createInfo,
3817                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3818         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3819 
3820       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
3821                            getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
3822 
3823       template <typename X, typename Y, typename... Z>
3824       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3825                            getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
3826 
3827       //=== VK_VERSION_1_2 ===
3828 
3829       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass>::Type
3830                            createRenderPass2( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const &                             createInfo,
3831                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3832         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3833 
3834       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const;
3835 
3836       void signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const;
3837 
3838       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
3839                            getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
3840 
3841       VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
3842 
3843       VULKAN_HPP_NODISCARD uint64_t
3844         getMemoryOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
3845 
3846       //=== VK_VERSION_1_3 ===
3847 
3848       VULKAN_HPP_NODISCARD
3849         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot>::Type
3850         createPrivateDataSlot( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const &                         createInfo,
3851                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3852         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3853 
3854       void setPrivateData( VULKAN_HPP_NAMESPACE::ObjectType      objectType_,
3855                            uint64_t                              objectHandle,
3856                            VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot,
3857                            uint64_t                              data ) const;
3858 
3859       VULKAN_HPP_NODISCARD uint64_t getPrivateData( VULKAN_HPP_NAMESPACE::ObjectType      objectType_,
3860                                                     uint64_t                              objectHandle,
3861                                                     VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT;
3862 
3863       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
3864                            getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
3865 
3866       template <typename X, typename Y, typename... Z>
3867       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3868                            getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
3869 
3870       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
3871                            getImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
3872 
3873       template <typename X, typename Y, typename... Z>
3874       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
3875                            getImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
3876 
3877       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
3878                            getImageSparseMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const;
3879 
3880       //=== VK_KHR_swapchain ===
3881 
3882       VULKAN_HPP_NODISCARD
3883         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>::Type
3884         createSwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const &                            createInfo,
3885                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3886         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3887 
3888       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR getGroupPresentCapabilitiesKHR() const;
3889 
3890       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
3891                            getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
3892 
3893       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
3894                            acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo ) const;
3895 
3896       //=== VK_KHR_display_swapchain ===
3897 
3898       VULKAN_HPP_NODISCARD
3899         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>>::Type
3900         createSharedSwapchainsKHR( VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR> const & createInfos,
3901                                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>        allocator = nullptr ) const;
3902 
3903       VULKAN_HPP_NODISCARD
3904         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>::Type
3905         createSharedSwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const &                            createInfo,
3906                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3907         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3908 
3909       //=== VK_EXT_debug_marker ===
3910 
3911       void debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo ) const;
3912 
3913       void debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo ) const;
3914 
3915       //=== VK_KHR_video_queue ===
3916 
3917       VULKAN_HPP_NODISCARD
3918         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionKHR>::Type
3919         createVideoSessionKHR( VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const &                         createInfo,
3920                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3921         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3922 
3923       VULKAN_HPP_NODISCARD
3924         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionParametersKHR>::Type
3925         createVideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const &               createInfo,
3926                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3927         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3928 
3929       //=== VK_NVX_binary_import ===
3930 
3931       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuModuleNVX>::Type
3932                            createCuModuleNVX( VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const &                             createInfo,
3933                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3934         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3935 
3936       VULKAN_HPP_NODISCARD
3937         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuFunctionNVX>::Type
3938         createCuFunctionNVX( VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const &                           createInfo,
3939                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3940         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3941 
3942       //=== VK_NVX_image_view_handle ===
3943 
3944       VULKAN_HPP_NODISCARD uint32_t getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT;
3945 
3946       //=== VK_KHR_device_group ===
3947 
3948       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags
3949                            getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT;
3950 
3951 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
3952       //=== VK_KHR_external_memory_win32 ===
3953 
3954       VULKAN_HPP_NODISCARD HANDLE getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
3955 
3956       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR
3957                            getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle ) const;
3958 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3959 
3960       //=== VK_KHR_external_memory_fd ===
3961 
3962       VULKAN_HPP_NODISCARD int getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo ) const;
3963 
3964       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR
3965                            getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd ) const;
3966 
3967 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
3968       //=== VK_KHR_external_semaphore_win32 ===
3969 
3970       void importSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
3971 
3972       VULKAN_HPP_NODISCARD HANDLE getSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
3973 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
3974 
3975       //=== VK_KHR_external_semaphore_fd ===
3976 
3977       void importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
3978 
3979       VULKAN_HPP_NODISCARD int getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo ) const;
3980 
3981       //=== VK_KHR_descriptor_update_template ===
3982 
3983       VULKAN_HPP_NODISCARD
3984         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate>::Type
3985         createDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const &                createInfo,
3986                                            VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
3987         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
3988 
3989       void destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
3990                                                Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator
3991                                                  VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
3992 
3993       //=== VK_EXT_display_control ===
3994 
3995       void displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo ) const;
3996 
3997       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence>::Type
3998                            registerEventEXT( VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const &                                deviceEventInfo,
3999                                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4000         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4001 
4002       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence>::Type
4003                            registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const &             display,
4004                                                     VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const &                               displayEventInfo,
4005                                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4006         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4007 
4008       //=== VK_EXT_hdr_metadata ===
4009 
4010       void setHdrMetadataEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const &   swapchains,
4011                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata ) const;
4012 
4013       //=== VK_KHR_create_renderpass2 ===
4014 
4015       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass>::Type
4016                            createRenderPass2KHR( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const &                             createInfo,
4017                                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4018         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4019 
4020 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
4021       //=== VK_KHR_external_fence_win32 ===
4022 
4023       void importFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
4024 
4025       VULKAN_HPP_NODISCARD HANDLE getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
4026 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
4027 
4028       //=== VK_KHR_external_fence_fd ===
4029 
4030       void importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo ) const;
4031 
4032       VULKAN_HPP_NODISCARD int getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo ) const;
4033 
4034       //=== VK_KHR_performance_query ===
4035 
4036       void acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info ) const;
4037 
4038       void releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT;
4039 
4040       //=== VK_EXT_debug_utils ===
4041 
4042       void setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo ) const;
4043 
4044       void setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo ) const;
4045 
4046 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
4047       //=== VK_ANDROID_external_memory_android_hardware_buffer ===
4048 
4049       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID
4050                            getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const;
4051 
4052       template <typename X, typename Y, typename... Z>
4053       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4054                            getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const;
4055 
4056       VULKAN_HPP_NODISCARD struct AHardwareBuffer *
4057         getMemoryAndroidHardwareBufferANDROID( const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info ) const;
4058 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
4059 
4060 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
4061       //=== VK_AMDX_shader_enqueue ===
4062 
4063       VULKAN_HPP_NODISCARD
4064         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
4065         createExecutionGraphPipelinesAMDX(
4066           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
4067           VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX> const &         createInfos,
4068           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr ) const;
4069 
4070       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
4071                            createExecutionGraphPipelineAMDX(
4072                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
4073                              VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX const &                                           createInfo,
4074                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4075 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
4076 
4077       //=== VK_KHR_get_memory_requirements2 ===
4078 
4079       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
4080                            getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4081 
4082       template <typename X, typename Y, typename... Z>
4083       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4084                            getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4085 
4086       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
4087                            getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4088 
4089       template <typename X, typename Y, typename... Z>
4090       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4091                            getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
4092 
4093       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
4094                            getImageSparseMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const;
4095 
4096       //=== VK_KHR_acceleration_structure ===
4097 
4098       VULKAN_HPP_NODISCARD
4099         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureKHR>::Type
4100         createAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const &                createInfo,
4101                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4102         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4103 
4104       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result buildAccelerationStructuresKHR(
4105         VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                                                           deferredOperation,
4106         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const &      infos,
4107         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos ) const;
4108 
4109       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
4110                            copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                     deferredOperation,
4111                                                          const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const;
4112 
4113       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
4114                            copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                             deferredOperation,
4115                                                                  const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const;
4116 
4117       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
4118                            copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                             deferredOperation,
4119                                                                  const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const;
4120 
4121       template <typename DataType>
4122       VULKAN_HPP_NODISCARD std::vector<DataType> writeAccelerationStructuresPropertiesKHR(
4123         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
4124         VULKAN_HPP_NAMESPACE::QueryType                                                                queryType,
4125         size_t                                                                                         dataSize,
4126         size_t                                                                                         stride ) const;
4127 
4128       template <typename DataType>
4129       VULKAN_HPP_NODISCARD DataType writeAccelerationStructuresPropertyKHR(
4130         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
4131         VULKAN_HPP_NAMESPACE::QueryType                                                                queryType,
4132         size_t                                                                                         stride ) const;
4133 
4134       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
4135         getAccelerationStructureAddressKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
4136 
4137       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR
4138         getAccelerationStructureCompatibilityKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo ) const VULKAN_HPP_NOEXCEPT;
4139 
4140       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR getAccelerationStructureBuildSizesKHR(
4141         VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR                     buildType,
4142         const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR &     buildInfo,
4143         VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
4144 
4145       //=== VK_KHR_ray_tracing_pipeline ===
4146 
4147       VULKAN_HPP_NODISCARD
4148         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
4149         createRayTracingPipelinesKHR(
4150           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
4151           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &        pipelineCache,
4152           VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR> const &                     createInfos,
4153           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                                     allocator = nullptr ) const;
4154 
4155       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
4156                            createRayTracingPipelineKHR(
4157                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
4158                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &        pipelineCache,
4159                              VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const &                                                       createInfo,
4160                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4161 
4162       //=== VK_KHR_sampler_ycbcr_conversion ===
4163 
4164       VULKAN_HPP_NODISCARD
4165         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion>::Type
4166         createSamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const &                  createInfo,
4167                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4168         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4169 
4170       void destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
4171                                              Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator
4172                                                VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
4173 
4174       //=== VK_KHR_bind_memory2 ===
4175 
4176       void bindBufferMemory2KHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const;
4177 
4178       void bindImageMemory2KHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const;
4179 
4180       //=== VK_EXT_validation_cache ===
4181 
4182       VULKAN_HPP_NODISCARD
4183         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ValidationCacheEXT>::Type
4184         createValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const &                      createInfo,
4185                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4186         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4187 
4188       //=== VK_NV_ray_tracing ===
4189 
4190       VULKAN_HPP_NODISCARD
4191         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureNV>::Type
4192         createAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const &                 createInfo,
4193                                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4194         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4195 
4196       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV(
4197         const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
4198 
4199       template <typename X, typename Y, typename... Z>
4200       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> getAccelerationStructureMemoryRequirementsNV(
4201         const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
4202 
4203       void bindAccelerationStructureMemoryNV(
4204         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos ) const;
4205 
4206       VULKAN_HPP_NODISCARD
4207         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
4208         createRayTracingPipelinesNV( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
4209                                      VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV> const &               createInfos,
4210                                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const;
4211 
4212       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
4213         createRayTracingPipelineNV( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
4214                                     VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const &                                                 createInfo,
4215                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4216         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4217 
4218       //=== VK_KHR_maintenance3 ===
4219 
4220       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
4221                            getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
4222 
4223       template <typename X, typename Y, typename... Z>
4224       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4225                            getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
4226 
4227       //=== VK_EXT_external_memory_host ===
4228 
4229       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT
4230         getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, const void * pHostPointer ) const;
4231 
4232       //=== VK_EXT_calibrated_timestamps ===
4233 
4234       VULKAN_HPP_NODISCARD std::pair<std::vector<uint64_t>, uint64_t>
4235         getCalibratedTimestampsEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR> const & timestampInfos ) const;
4236 
4237       VULKAN_HPP_NODISCARD std::pair<uint64_t, uint64_t>
4238                            getCalibratedTimestampEXT( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR & timestampInfo ) const;
4239 
4240       //=== VK_KHR_timeline_semaphore ===
4241 
4242       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const;
4243 
4244       void signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const;
4245 
4246       //=== VK_INTEL_performance_query ===
4247 
4248       void initializePerformanceApiINTEL( const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo ) const;
4249 
4250       void uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT;
4251 
4252       VULKAN_HPP_NODISCARD
4253         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PerformanceConfigurationINTEL>::Type
4254         acquirePerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) const
4255         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4256 
4257       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PerformanceValueINTEL
4258                            getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter ) const;
4259 
4260       //=== VK_EXT_buffer_device_address ===
4261 
4262       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
4263                            getBufferAddressEXT( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
4264 
4265 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
4266       //=== VK_EXT_full_screen_exclusive ===
4267 
4268       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
4269                            getGroupSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
4270 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
4271 
4272       //=== VK_KHR_buffer_device_address ===
4273 
4274       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
4275                            getBufferAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
4276 
4277       VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
4278 
4279       VULKAN_HPP_NODISCARD uint64_t
4280         getMemoryOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
4281 
4282       //=== VK_KHR_deferred_host_operations ===
4283 
4284       VULKAN_HPP_NODISCARD
4285         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR>::Type
4286         createDeferredOperationKHR( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4287         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4288 
4289       //=== VK_KHR_pipeline_executable_properties ===
4290 
4291       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>
4292                            getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo ) const;
4293 
4294       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR>
4295                            getPipelineExecutableStatisticsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const;
4296 
4297       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>
4298                            getPipelineExecutableInternalRepresentationsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const;
4299 
4300       //=== VK_EXT_host_image_copy ===
4301 
4302       void copyMemoryToImageEXT( const VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT & copyMemoryToImageInfo ) const;
4303 
4304       void copyImageToMemoryEXT( const VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT & copyImageToMemoryInfo ) const;
4305 
4306       void copyImageToImageEXT( const VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT & copyImageToImageInfo ) const;
4307 
4308       void transitionImageLayoutEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT> const & transitions ) const;
4309 
4310       //=== VK_KHR_map_memory2 ===
4311 
4312       VULKAN_HPP_NODISCARD void * mapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR & memoryMapInfo ) const;
4313 
4314       void unmapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR & memoryUnmapInfo ) const;
4315 
4316       //=== VK_EXT_swapchain_maintenance1 ===
4317 
4318       void releaseSwapchainImagesEXT( const VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT & releaseInfo ) const;
4319 
4320       //=== VK_NV_device_generated_commands ===
4321 
4322       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
4323         getGeneratedCommandsMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
4324 
4325       template <typename X, typename Y, typename... Z>
4326       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4327         getGeneratedCommandsMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
4328 
4329       VULKAN_HPP_NODISCARD
4330         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV>::Type
4331         createIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const &                createInfo,
4332                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4333         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4334 
4335       //=== VK_EXT_private_data ===
4336 
4337       VULKAN_HPP_NODISCARD
4338         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot>::Type
4339         createPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const &                         createInfo,
4340                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4341         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4342 
4343       void destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
4344                                       Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator
4345                                         VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
4346 
4347       void setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType      objectType_,
4348                               uint64_t                              objectHandle,
4349                               VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot,
4350                               uint64_t                              data ) const;
4351 
4352       VULKAN_HPP_NODISCARD uint64_t getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType      objectType_,
4353                                                        uint64_t                              objectHandle,
4354                                                        VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT;
4355 
4356       //=== VK_KHR_video_encode_queue ===
4357 
4358       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR, std::vector<uint8_t>>
4359         getEncodedVideoSessionParametersKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const;
4360 
4361       template <typename X, typename Y, typename... Z>
4362       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>, std::vector<uint8_t>>
4363         getEncodedVideoSessionParametersKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const;
4364 
4365 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
4366       //=== VK_NV_cuda_kernel_launch ===
4367 
4368       VULKAN_HPP_NODISCARD
4369         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV>::Type
4370         createCudaModuleNV( VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const &                            createInfo,
4371                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4372         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4373 
4374       VULKAN_HPP_NODISCARD
4375         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV>::Type
4376         createCudaFunctionNV( VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const &                          createInfo,
4377                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4378         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4379 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
4380 
4381 #  if defined( VK_USE_PLATFORM_METAL_EXT )
4382       //=== VK_EXT_metal_objects ===
4383 
4384       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT exportMetalObjectsEXT() const VULKAN_HPP_NOEXCEPT;
4385 
4386       template <typename X, typename Y, typename... Z>
4387       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> exportMetalObjectsEXT() const VULKAN_HPP_NOEXCEPT;
4388 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
4389 
4390       //=== VK_EXT_descriptor_buffer ===
4391 
4392       void getDescriptorEXT( const VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT & descriptorInfo, size_t dataSize, void * pDescriptor ) const VULKAN_HPP_NOEXCEPT;
4393 
4394       template <typename DescriptorType>
4395       VULKAN_HPP_NODISCARD DescriptorType getDescriptorEXT( const VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT & descriptorInfo ) const VULKAN_HPP_NOEXCEPT;
4396 
4397       template <typename DataType>
4398       VULKAN_HPP_NODISCARD DataType getBufferOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT & info ) const;
4399 
4400       template <typename DataType>
4401       VULKAN_HPP_NODISCARD DataType getImageOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT & info ) const;
4402 
4403       template <typename DataType>
4404       VULKAN_HPP_NODISCARD DataType
4405         getImageViewOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT & info ) const;
4406 
4407       template <typename DataType>
4408       VULKAN_HPP_NODISCARD DataType getSamplerOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT & info ) const;
4409 
4410       template <typename DataType>
4411       VULKAN_HPP_NODISCARD DataType
4412         getAccelerationStructureOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT & info ) const;
4413 
4414       //=== VK_EXT_device_fault ===
4415 
4416       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT, VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT> getFaultInfoEXT() const;
4417 
4418 #  if defined( VK_USE_PLATFORM_FUCHSIA )
4419       //=== VK_FUCHSIA_external_memory ===
4420 
4421       VULKAN_HPP_NODISCARD zx_handle_t getMemoryZirconHandleFUCHSIA( const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const;
4422 
4423       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA
4424         getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle ) const;
4425 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
4426 
4427 #  if defined( VK_USE_PLATFORM_FUCHSIA )
4428       //=== VK_FUCHSIA_external_semaphore ===
4429 
4430       void importSemaphoreZirconHandleFUCHSIA( const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const;
4431 
4432       VULKAN_HPP_NODISCARD zx_handle_t
4433         getSemaphoreZirconHandleFUCHSIA( const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const;
4434 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
4435 
4436 #  if defined( VK_USE_PLATFORM_FUCHSIA )
4437       //=== VK_FUCHSIA_buffer_collection ===
4438 
4439       VULKAN_HPP_NODISCARD
4440         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA>::Type
4441         createBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const &                 createInfo,
4442                                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4443         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4444 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
4445 
4446       //=== VK_NV_external_memory_rdma ===
4447 
4448       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::RemoteAddressNV
4449                            getMemoryRemoteAddressNV( const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo ) const;
4450 
4451       //=== VK_EXT_pipeline_properties ===
4452 
4453       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::BaseOutStructure getPipelinePropertiesEXT( const VULKAN_HPP_NAMESPACE::PipelineInfoEXT & pipelineInfo ) const;
4454 
4455       //=== VK_EXT_opacity_micromap ===
4456 
4457       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::MicromapEXT>::Type
4458                            createMicromapEXT( VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const &                             createInfo,
4459                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4460         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4461 
4462       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
4463                            buildMicromapsEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                                 deferredOperation,
4464                                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT> const & infos ) const;
4465 
4466       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result copyMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR        deferredOperation,
4467                                                                          const VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT & info ) const;
4468 
4469       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result copyMicromapToMemoryEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                deferredOperation,
4470                                                                                  const VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT & info ) const;
4471 
4472       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result copyMemoryToMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                deferredOperation,
4473                                                                                  const VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT & info ) const;
4474 
4475       template <typename DataType>
4476       VULKAN_HPP_NODISCARD std::vector<DataType>
4477                            writeMicromapsPropertiesEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,
4478                                                         VULKAN_HPP_NAMESPACE::QueryType                                                   queryType,
4479                                                         size_t                                                                            dataSize,
4480                                                         size_t                                                                            stride ) const;
4481 
4482       template <typename DataType>
4483       VULKAN_HPP_NODISCARD DataType writeMicromapsPropertyEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,
4484                                                                VULKAN_HPP_NAMESPACE::QueryType                                                   queryType,
4485                                                                size_t                                                                            stride ) const;
4486 
4487       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR
4488                            getMicromapCompatibilityEXT( const VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT & versionInfo ) const VULKAN_HPP_NOEXCEPT;
4489 
4490       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT
4491                            getMicromapBuildSizesEXT( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType,
4492                                                      const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT &      buildInfo ) const VULKAN_HPP_NOEXCEPT;
4493 
4494       //=== VK_KHR_maintenance4 ===
4495 
4496       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
4497                            getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
4498 
4499       template <typename X, typename Y, typename... Z>
4500       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4501                            getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
4502 
4503       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
4504                            getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
4505 
4506       template <typename X, typename Y, typename... Z>
4507       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4508                            getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT;
4509 
4510       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
4511                            getImageSparseMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const;
4512 
4513       //=== VK_VALVE_descriptor_set_host_mapping ===
4514 
4515       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE getDescriptorSetLayoutHostMappingInfoVALVE(
4516         const VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE & bindingReference ) const VULKAN_HPP_NOEXCEPT;
4517 
4518       //=== VK_NV_device_generated_commands_compute ===
4519 
4520       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
4521         getPipelineIndirectMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
4522 
4523       template <typename X, typename Y, typename... Z>
4524       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4525         getPipelineIndirectMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
4526 
4527       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
4528                            getPipelineIndirectAddressNV( const VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
4529 
4530       //=== VK_EXT_shader_module_identifier ===
4531 
4532       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT
4533                            getShaderModuleCreateInfoIdentifierEXT( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
4534 
4535       //=== VK_NV_optical_flow ===
4536 
4537       VULKAN_HPP_NODISCARD
4538         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::OpticalFlowSessionNV>::Type
4539         createOpticalFlowSessionNV( VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const &                    createInfo,
4540                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4541         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4542 
4543       //=== VK_KHR_maintenance5 ===
4544 
4545       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Extent2D
4546                            getRenderingAreaGranularityKHR( const VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT;
4547 
4548       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR
4549                            getImageSubresourceLayoutKHR( const VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
4550 
4551       template <typename X, typename Y, typename... Z>
4552       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
4553                            getImageSubresourceLayoutKHR( const VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
4554 
4555       //=== VK_EXT_shader_object ===
4556 
4557       VULKAN_HPP_NODISCARD
4558         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT>>::Type
4559         createShadersEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT> const & createInfos,
4560                           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>     allocator = nullptr ) const;
4561 
4562       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT>::Type
4563                            createShaderEXT( VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT const &                               createInfo,
4564                                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const
4565         VULKAN_HPP_RAII_CREATE_NOEXCEPT;
4566 
4567       //=== VK_QCOM_tile_properties ===
4568 
4569       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::TilePropertiesQCOM
4570                            getDynamicRenderingTilePropertiesQCOM( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT;
4571 
4572 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
4573       //=== VK_QNX_external_memory_screen_buffer ===
4574 
4575       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX getScreenBufferPropertiesQNX( const struct _screen_buffer & buffer ) const;
4576 
4577       template <typename X, typename Y, typename... Z>
4578       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> getScreenBufferPropertiesQNX( const struct _screen_buffer & buffer ) const;
4579 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
4580 
4581       //=== VK_KHR_calibrated_timestamps ===
4582 
4583       VULKAN_HPP_NODISCARD std::pair<std::vector<uint64_t>, uint64_t>
4584         getCalibratedTimestampsKHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR> const & timestampInfos ) const;
4585 
4586       VULKAN_HPP_NODISCARD std::pair<uint64_t, uint64_t>
4587                            getCalibratedTimestampKHR( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR & timestampInfo ) const;
4588 
4589     private:
4590       VULKAN_HPP_NAMESPACE::Device                                                       m_device    = {};
4591       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                                  m_allocator = {};
4592       std::unique_ptr<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher> m_dispatcher;
4593     };
4594 
4595     class AccelerationStructureKHR
4596     {
4597     public:
4598       using CType   = VkAccelerationStructureKHR;
4599       using CppType = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR;
4600 
4601       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureKHR;
4602       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4603         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureKHR;
4604 
4605     public:
4606 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)4607       AccelerationStructureKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4608                                 VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const &                createInfo,
4609                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4610       {
4611         *this = device.createAccelerationStructureKHR( createInfo, allocator );
4612       }
4613 #  endif
4614 
AccelerationStructureKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkAccelerationStructureKHR accelerationStructure,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4615       AccelerationStructureKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4616                                 VkAccelerationStructureKHR                                                      accelerationStructure,
4617                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4618         : m_device( device )
4619         , m_accelerationStructure( accelerationStructure )
4620         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
4621         , m_dispatcher( device.getDispatcher() )
4622       {
4623       }
4624 
AccelerationStructureKHR(std::nullptr_t)4625       AccelerationStructureKHR( std::nullptr_t ) {}
4626 
~AccelerationStructureKHR()4627       ~AccelerationStructureKHR()
4628       {
4629         clear();
4630       }
4631 
4632       AccelerationStructureKHR()                                   = delete;
4633       AccelerationStructureKHR( AccelerationStructureKHR const & ) = delete;
4634 
AccelerationStructureKHR(AccelerationStructureKHR && rhs)4635       AccelerationStructureKHR( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT
4636         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
4637         , m_accelerationStructure( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructure, {} ) )
4638         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
4639         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
4640       {
4641       }
4642 
4643       AccelerationStructureKHR & operator=( AccelerationStructureKHR const & ) = delete;
4644 
operator =(AccelerationStructureKHR && rhs)4645       AccelerationStructureKHR & operator=( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT
4646       {
4647         if ( this != &rhs )
4648         {
4649           std::swap( m_device, rhs.m_device );
4650           std::swap( m_accelerationStructure, rhs.m_accelerationStructure );
4651           std::swap( m_allocator, rhs.m_allocator );
4652           std::swap( m_dispatcher, rhs.m_dispatcher );
4653         }
4654         return *this;
4655       }
4656 
operator *() const4657       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & operator*() const VULKAN_HPP_NOEXCEPT
4658       {
4659         return m_accelerationStructure;
4660       }
4661 
operator VULKAN_HPP_NAMESPACE::AccelerationStructureKHR() const4662       operator VULKAN_HPP_NAMESPACE::AccelerationStructureKHR() const VULKAN_HPP_NOEXCEPT
4663       {
4664         return m_accelerationStructure;
4665       }
4666 
clear()4667       void clear() VULKAN_HPP_NOEXCEPT
4668       {
4669         if ( m_accelerationStructure )
4670         {
4671           getDispatcher()->vkDestroyAccelerationStructureKHR( static_cast<VkDevice>( m_device ),
4672                                                               static_cast<VkAccelerationStructureKHR>( m_accelerationStructure ),
4673                                                               reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
4674         }
4675         m_device                = nullptr;
4676         m_accelerationStructure = nullptr;
4677         m_allocator             = nullptr;
4678         m_dispatcher            = nullptr;
4679       }
4680 
release()4681       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR release()
4682       {
4683         m_device     = nullptr;
4684         m_allocator  = nullptr;
4685         m_dispatcher = nullptr;
4686         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_accelerationStructure, nullptr );
4687       }
4688 
getDevice() const4689       VULKAN_HPP_NAMESPACE::Device getDevice() const
4690       {
4691         return m_device;
4692       }
4693 
getDispatcher() const4694       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4695       {
4696         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
4697         return m_dispatcher;
4698       }
4699 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureKHR & rhs)4700       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureKHR & rhs ) VULKAN_HPP_NOEXCEPT
4701       {
4702         std::swap( m_device, rhs.m_device );
4703         std::swap( m_accelerationStructure, rhs.m_accelerationStructure );
4704         std::swap( m_allocator, rhs.m_allocator );
4705         std::swap( m_dispatcher, rhs.m_dispatcher );
4706       }
4707 
4708     private:
4709       VULKAN_HPP_NAMESPACE::Device                                              m_device                = {};
4710       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                            m_accelerationStructure = {};
4711       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator             = {};
4712       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher            = nullptr;
4713     };
4714 
4715     class AccelerationStructureNV
4716     {
4717     public:
4718       using CType   = VkAccelerationStructureNV;
4719       using CppType = VULKAN_HPP_NAMESPACE::AccelerationStructureNV;
4720 
4721       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureNV;
4722       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4723         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureNV;
4724 
4725     public:
4726 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)4727       AccelerationStructureNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4728                                VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const &                 createInfo,
4729                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4730       {
4731         *this = device.createAccelerationStructureNV( createInfo, allocator );
4732       }
4733 #  endif
4734 
AccelerationStructureNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkAccelerationStructureNV accelerationStructure,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4735       AccelerationStructureNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4736                                VkAccelerationStructureNV                                                       accelerationStructure,
4737                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4738         : m_device( device )
4739         , m_accelerationStructure( accelerationStructure )
4740         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
4741         , m_dispatcher( device.getDispatcher() )
4742       {
4743       }
4744 
AccelerationStructureNV(std::nullptr_t)4745       AccelerationStructureNV( std::nullptr_t ) {}
4746 
~AccelerationStructureNV()4747       ~AccelerationStructureNV()
4748       {
4749         clear();
4750       }
4751 
4752       AccelerationStructureNV()                                  = delete;
4753       AccelerationStructureNV( AccelerationStructureNV const & ) = delete;
4754 
AccelerationStructureNV(AccelerationStructureNV && rhs)4755       AccelerationStructureNV( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT
4756         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
4757         , m_accelerationStructure( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructure, {} ) )
4758         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
4759         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
4760       {
4761       }
4762 
4763       AccelerationStructureNV & operator=( AccelerationStructureNV const & ) = delete;
4764 
operator =(AccelerationStructureNV && rhs)4765       AccelerationStructureNV & operator=( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT
4766       {
4767         if ( this != &rhs )
4768         {
4769           std::swap( m_device, rhs.m_device );
4770           std::swap( m_accelerationStructure, rhs.m_accelerationStructure );
4771           std::swap( m_allocator, rhs.m_allocator );
4772           std::swap( m_dispatcher, rhs.m_dispatcher );
4773         }
4774         return *this;
4775       }
4776 
operator *() const4777       VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & operator*() const VULKAN_HPP_NOEXCEPT
4778       {
4779         return m_accelerationStructure;
4780       }
4781 
operator VULKAN_HPP_NAMESPACE::AccelerationStructureNV() const4782       operator VULKAN_HPP_NAMESPACE::AccelerationStructureNV() const VULKAN_HPP_NOEXCEPT
4783       {
4784         return m_accelerationStructure;
4785       }
4786 
clear()4787       void clear() VULKAN_HPP_NOEXCEPT
4788       {
4789         if ( m_accelerationStructure )
4790         {
4791           getDispatcher()->vkDestroyAccelerationStructureNV( static_cast<VkDevice>( m_device ),
4792                                                              static_cast<VkAccelerationStructureNV>( m_accelerationStructure ),
4793                                                              reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
4794         }
4795         m_device                = nullptr;
4796         m_accelerationStructure = nullptr;
4797         m_allocator             = nullptr;
4798         m_dispatcher            = nullptr;
4799       }
4800 
release()4801       VULKAN_HPP_NAMESPACE::AccelerationStructureNV release()
4802       {
4803         m_device     = nullptr;
4804         m_allocator  = nullptr;
4805         m_dispatcher = nullptr;
4806         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_accelerationStructure, nullptr );
4807       }
4808 
getDevice() const4809       VULKAN_HPP_NAMESPACE::Device getDevice() const
4810       {
4811         return m_device;
4812       }
4813 
getDispatcher() const4814       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4815       {
4816         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
4817         return m_dispatcher;
4818       }
4819 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureNV & rhs)4820       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureNV & rhs ) VULKAN_HPP_NOEXCEPT
4821       {
4822         std::swap( m_device, rhs.m_device );
4823         std::swap( m_accelerationStructure, rhs.m_accelerationStructure );
4824         std::swap( m_allocator, rhs.m_allocator );
4825         std::swap( m_dispatcher, rhs.m_dispatcher );
4826       }
4827 
4828       //=== VK_NV_ray_tracing ===
4829 
4830       template <typename DataType>
4831       VULKAN_HPP_NODISCARD std::vector<DataType> getHandle( size_t dataSize ) const;
4832 
4833       template <typename DataType>
4834       VULKAN_HPP_NODISCARD DataType getHandle() const;
4835 
4836     private:
4837       VULKAN_HPP_NAMESPACE::Device                                              m_device                = {};
4838       VULKAN_HPP_NAMESPACE::AccelerationStructureNV                             m_accelerationStructure = {};
4839       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator             = {};
4840       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher            = nullptr;
4841     };
4842 
4843     class Buffer
4844     {
4845     public:
4846       using CType   = VkBuffer;
4847       using CppType = VULKAN_HPP_NAMESPACE::Buffer;
4848 
4849       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eBuffer;
4850       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4851         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBuffer;
4852 
4853     public:
4854 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)4855       Buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4856               VULKAN_HPP_NAMESPACE::BufferCreateInfo const &                                  createInfo,
4857               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4858       {
4859         *this = device.createBuffer( createInfo, allocator );
4860       }
4861 #  endif
4862 
Buffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkBuffer buffer,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4863       Buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4864               VkBuffer                                                                        buffer,
4865               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4866         : m_device( device )
4867         , m_buffer( buffer )
4868         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
4869         , m_dispatcher( device.getDispatcher() )
4870       {
4871       }
4872 
Buffer(std::nullptr_t)4873       Buffer( std::nullptr_t ) {}
4874 
~Buffer()4875       ~Buffer()
4876       {
4877         clear();
4878       }
4879 
4880       Buffer()                 = delete;
4881       Buffer( Buffer const & ) = delete;
4882 
Buffer(Buffer && rhs)4883       Buffer( Buffer && rhs ) VULKAN_HPP_NOEXCEPT
4884         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
4885         , m_buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_buffer, {} ) )
4886         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
4887         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
4888       {
4889       }
4890 
4891       Buffer & operator=( Buffer const & ) = delete;
4892 
operator =(Buffer && rhs)4893       Buffer & operator=( Buffer && rhs ) VULKAN_HPP_NOEXCEPT
4894       {
4895         if ( this != &rhs )
4896         {
4897           std::swap( m_device, rhs.m_device );
4898           std::swap( m_buffer, rhs.m_buffer );
4899           std::swap( m_allocator, rhs.m_allocator );
4900           std::swap( m_dispatcher, rhs.m_dispatcher );
4901         }
4902         return *this;
4903       }
4904 
operator *() const4905       VULKAN_HPP_NAMESPACE::Buffer const & operator*() const VULKAN_HPP_NOEXCEPT
4906       {
4907         return m_buffer;
4908       }
4909 
operator VULKAN_HPP_NAMESPACE::Buffer() const4910       operator VULKAN_HPP_NAMESPACE::Buffer() const VULKAN_HPP_NOEXCEPT
4911       {
4912         return m_buffer;
4913       }
4914 
clear()4915       void clear() VULKAN_HPP_NOEXCEPT
4916       {
4917         if ( m_buffer )
4918         {
4919           getDispatcher()->vkDestroyBuffer(
4920             static_cast<VkDevice>( m_device ), static_cast<VkBuffer>( m_buffer ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
4921         }
4922         m_device     = nullptr;
4923         m_buffer     = nullptr;
4924         m_allocator  = nullptr;
4925         m_dispatcher = nullptr;
4926       }
4927 
release()4928       VULKAN_HPP_NAMESPACE::Buffer release()
4929       {
4930         m_device     = nullptr;
4931         m_allocator  = nullptr;
4932         m_dispatcher = nullptr;
4933         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_buffer, nullptr );
4934       }
4935 
getDevice() const4936       VULKAN_HPP_NAMESPACE::Device getDevice() const
4937       {
4938         return m_device;
4939       }
4940 
getDispatcher() const4941       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4942       {
4943         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
4944         return m_dispatcher;
4945       }
4946 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Buffer & rhs)4947       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Buffer & rhs ) VULKAN_HPP_NOEXCEPT
4948       {
4949         std::swap( m_device, rhs.m_device );
4950         std::swap( m_buffer, rhs.m_buffer );
4951         std::swap( m_allocator, rhs.m_allocator );
4952         std::swap( m_dispatcher, rhs.m_dispatcher );
4953       }
4954 
4955       //=== VK_VERSION_1_0 ===
4956 
4957       void bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const;
4958 
4959       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
4960 
4961     private:
4962       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
4963       VULKAN_HPP_NAMESPACE::Buffer                                              m_buffer     = {};
4964       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
4965       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
4966     };
4967 
4968 #  if defined( VK_USE_PLATFORM_FUCHSIA )
4969     class BufferCollectionFUCHSIA
4970     {
4971     public:
4972       using CType   = VkBufferCollectionFUCHSIA;
4973       using CppType = VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA;
4974 
4975       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eBufferCollectionFUCHSIA;
4976       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4977         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA;
4978 
4979     public:
4980 #    if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)4981       BufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4982                                VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const &                 createInfo,
4983                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4984       {
4985         *this = device.createBufferCollectionFUCHSIA( createInfo, allocator );
4986       }
4987 #    endif
4988 
BufferCollectionFUCHSIA(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkBufferCollectionFUCHSIA collection,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4989       BufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4990                                VkBufferCollectionFUCHSIA                                                       collection,
4991                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4992         : m_device( device )
4993         , m_collection( collection )
4994         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
4995         , m_dispatcher( device.getDispatcher() )
4996       {
4997       }
4998 
BufferCollectionFUCHSIA(std::nullptr_t)4999       BufferCollectionFUCHSIA( std::nullptr_t ) {}
5000 
~BufferCollectionFUCHSIA()5001       ~BufferCollectionFUCHSIA()
5002       {
5003         clear();
5004       }
5005 
5006       BufferCollectionFUCHSIA()                                  = delete;
5007       BufferCollectionFUCHSIA( BufferCollectionFUCHSIA const & ) = delete;
5008 
BufferCollectionFUCHSIA(BufferCollectionFUCHSIA && rhs)5009       BufferCollectionFUCHSIA( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT
5010         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
5011         , m_collection( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_collection, {} ) )
5012         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
5013         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
5014       {
5015       }
5016 
5017       BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA const & ) = delete;
5018 
operator =(BufferCollectionFUCHSIA && rhs)5019       BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT
5020       {
5021         if ( this != &rhs )
5022         {
5023           std::swap( m_device, rhs.m_device );
5024           std::swap( m_collection, rhs.m_collection );
5025           std::swap( m_allocator, rhs.m_allocator );
5026           std::swap( m_dispatcher, rhs.m_dispatcher );
5027         }
5028         return *this;
5029       }
5030 
operator *() const5031       VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const & operator*() const VULKAN_HPP_NOEXCEPT
5032       {
5033         return m_collection;
5034       }
5035 
operator VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA() const5036       operator VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA() const VULKAN_HPP_NOEXCEPT
5037       {
5038         return m_collection;
5039       }
5040 
clear()5041       void clear() VULKAN_HPP_NOEXCEPT
5042       {
5043         if ( m_collection )
5044         {
5045           getDispatcher()->vkDestroyBufferCollectionFUCHSIA( static_cast<VkDevice>( m_device ),
5046                                                              static_cast<VkBufferCollectionFUCHSIA>( m_collection ),
5047                                                              reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
5048         }
5049         m_device     = nullptr;
5050         m_collection = nullptr;
5051         m_allocator  = nullptr;
5052         m_dispatcher = nullptr;
5053       }
5054 
release()5055       VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA release()
5056       {
5057         m_device     = nullptr;
5058         m_allocator  = nullptr;
5059         m_dispatcher = nullptr;
5060         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_collection, nullptr );
5061       }
5062 
getDevice() const5063       VULKAN_HPP_NAMESPACE::Device getDevice() const
5064       {
5065         return m_device;
5066       }
5067 
getDispatcher() const5068       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5069       {
5070         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5071         return m_dispatcher;
5072       }
5073 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA & rhs)5074       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA & rhs ) VULKAN_HPP_NOEXCEPT
5075       {
5076         std::swap( m_device, rhs.m_device );
5077         std::swap( m_collection, rhs.m_collection );
5078         std::swap( m_allocator, rhs.m_allocator );
5079         std::swap( m_dispatcher, rhs.m_dispatcher );
5080       }
5081 
5082       //=== VK_FUCHSIA_buffer_collection ===
5083 
5084       void setImageConstraints( const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo ) const;
5085 
5086       void setBufferConstraints( const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo ) const;
5087 
5088       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA getProperties() const;
5089 
5090     private:
5091       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
5092       VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA                             m_collection = {};
5093       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
5094       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
5095     };
5096 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
5097 
5098     class BufferView
5099     {
5100     public:
5101       using CType   = VkBufferView;
5102       using CppType = VULKAN_HPP_NAMESPACE::BufferView;
5103 
5104       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eBufferView;
5105       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5106         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferView;
5107 
5108     public:
5109 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)5110       BufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5111                   VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const &                              createInfo,
5112                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5113       {
5114         *this = device.createBufferView( createInfo, allocator );
5115       }
5116 #  endif
5117 
BufferView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkBufferView bufferView,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5118       BufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5119                   VkBufferView                                                                    bufferView,
5120                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5121         : m_device( device )
5122         , m_bufferView( bufferView )
5123         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
5124         , m_dispatcher( device.getDispatcher() )
5125       {
5126       }
5127 
BufferView(std::nullptr_t)5128       BufferView( std::nullptr_t ) {}
5129 
~BufferView()5130       ~BufferView()
5131       {
5132         clear();
5133       }
5134 
5135       BufferView()                     = delete;
5136       BufferView( BufferView const & ) = delete;
5137 
BufferView(BufferView && rhs)5138       BufferView( BufferView && rhs ) VULKAN_HPP_NOEXCEPT
5139         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
5140         , m_bufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferView, {} ) )
5141         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
5142         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
5143       {
5144       }
5145 
5146       BufferView & operator=( BufferView const & ) = delete;
5147 
operator =(BufferView && rhs)5148       BufferView & operator=( BufferView && rhs ) VULKAN_HPP_NOEXCEPT
5149       {
5150         if ( this != &rhs )
5151         {
5152           std::swap( m_device, rhs.m_device );
5153           std::swap( m_bufferView, rhs.m_bufferView );
5154           std::swap( m_allocator, rhs.m_allocator );
5155           std::swap( m_dispatcher, rhs.m_dispatcher );
5156         }
5157         return *this;
5158       }
5159 
operator *() const5160       VULKAN_HPP_NAMESPACE::BufferView const & operator*() const VULKAN_HPP_NOEXCEPT
5161       {
5162         return m_bufferView;
5163       }
5164 
operator VULKAN_HPP_NAMESPACE::BufferView() const5165       operator VULKAN_HPP_NAMESPACE::BufferView() const VULKAN_HPP_NOEXCEPT
5166       {
5167         return m_bufferView;
5168       }
5169 
clear()5170       void clear() VULKAN_HPP_NOEXCEPT
5171       {
5172         if ( m_bufferView )
5173         {
5174           getDispatcher()->vkDestroyBufferView(
5175             static_cast<VkDevice>( m_device ), static_cast<VkBufferView>( m_bufferView ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
5176         }
5177         m_device     = nullptr;
5178         m_bufferView = nullptr;
5179         m_allocator  = nullptr;
5180         m_dispatcher = nullptr;
5181       }
5182 
release()5183       VULKAN_HPP_NAMESPACE::BufferView release()
5184       {
5185         m_device     = nullptr;
5186         m_allocator  = nullptr;
5187         m_dispatcher = nullptr;
5188         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_bufferView, nullptr );
5189       }
5190 
getDevice() const5191       VULKAN_HPP_NAMESPACE::Device getDevice() const
5192       {
5193         return m_device;
5194       }
5195 
getDispatcher() const5196       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5197       {
5198         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5199         return m_dispatcher;
5200       }
5201 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferView & rhs)5202       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferView & rhs ) VULKAN_HPP_NOEXCEPT
5203       {
5204         std::swap( m_device, rhs.m_device );
5205         std::swap( m_bufferView, rhs.m_bufferView );
5206         std::swap( m_allocator, rhs.m_allocator );
5207         std::swap( m_dispatcher, rhs.m_dispatcher );
5208       }
5209 
5210     private:
5211       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
5212       VULKAN_HPP_NAMESPACE::BufferView                                          m_bufferView = {};
5213       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
5214       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
5215     };
5216 
5217     class CommandPool
5218     {
5219     public:
5220       using CType   = VkCommandPool;
5221       using CppType = VULKAN_HPP_NAMESPACE::CommandPool;
5222 
5223       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCommandPool;
5224       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5225         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandPool;
5226 
5227     public:
5228 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)5229       CommandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5230                    VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const &                             createInfo,
5231                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5232       {
5233         *this = device.createCommandPool( createInfo, allocator );
5234       }
5235 #  endif
5236 
CommandPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCommandPool commandPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5237       CommandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5238                    VkCommandPool                                                                   commandPool,
5239                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5240         : m_device( device )
5241         , m_commandPool( commandPool )
5242         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
5243         , m_dispatcher( device.getDispatcher() )
5244       {
5245       }
5246 
CommandPool(std::nullptr_t)5247       CommandPool( std::nullptr_t ) {}
5248 
~CommandPool()5249       ~CommandPool()
5250       {
5251         clear();
5252       }
5253 
5254       CommandPool()                      = delete;
5255       CommandPool( CommandPool const & ) = delete;
5256 
CommandPool(CommandPool && rhs)5257       CommandPool( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT
5258         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
5259         , m_commandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} ) )
5260         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
5261         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
5262       {
5263       }
5264 
5265       CommandPool & operator=( CommandPool const & ) = delete;
5266 
operator =(CommandPool && rhs)5267       CommandPool & operator=( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT
5268       {
5269         if ( this != &rhs )
5270         {
5271           std::swap( m_device, rhs.m_device );
5272           std::swap( m_commandPool, rhs.m_commandPool );
5273           std::swap( m_allocator, rhs.m_allocator );
5274           std::swap( m_dispatcher, rhs.m_dispatcher );
5275         }
5276         return *this;
5277       }
5278 
operator *() const5279       VULKAN_HPP_NAMESPACE::CommandPool const & operator*() const VULKAN_HPP_NOEXCEPT
5280       {
5281         return m_commandPool;
5282       }
5283 
operator VULKAN_HPP_NAMESPACE::CommandPool() const5284       operator VULKAN_HPP_NAMESPACE::CommandPool() const VULKAN_HPP_NOEXCEPT
5285       {
5286         return m_commandPool;
5287       }
5288 
clear()5289       void clear() VULKAN_HPP_NOEXCEPT
5290       {
5291         if ( m_commandPool )
5292         {
5293           getDispatcher()->vkDestroyCommandPool(
5294             static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
5295         }
5296         m_device      = nullptr;
5297         m_commandPool = nullptr;
5298         m_allocator   = nullptr;
5299         m_dispatcher  = nullptr;
5300       }
5301 
release()5302       VULKAN_HPP_NAMESPACE::CommandPool release()
5303       {
5304         m_device     = nullptr;
5305         m_allocator  = nullptr;
5306         m_dispatcher = nullptr;
5307         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_commandPool, nullptr );
5308       }
5309 
getDevice() const5310       VULKAN_HPP_NAMESPACE::Device getDevice() const
5311       {
5312         return m_device;
5313       }
5314 
getDispatcher() const5315       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5316       {
5317         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5318         return m_dispatcher;
5319       }
5320 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool & rhs)5321       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool & rhs ) VULKAN_HPP_NOEXCEPT
5322       {
5323         std::swap( m_device, rhs.m_device );
5324         std::swap( m_commandPool, rhs.m_commandPool );
5325         std::swap( m_allocator, rhs.m_allocator );
5326         std::swap( m_dispatcher, rhs.m_dispatcher );
5327       }
5328 
5329       //=== VK_VERSION_1_0 ===
5330 
5331       void reset( VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
5332 
5333       //=== VK_VERSION_1_1 ===
5334 
5335       void trim( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
5336 
5337       //=== VK_KHR_maintenance1 ===
5338 
5339       void trimKHR( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
5340 
5341     private:
5342       VULKAN_HPP_NAMESPACE::Device                                              m_device      = {};
5343       VULKAN_HPP_NAMESPACE::CommandPool                                         m_commandPool = {};
5344       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator   = {};
5345       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher  = nullptr;
5346     };
5347 
5348     class CommandBuffer
5349     {
5350     public:
5351       using CType   = VkCommandBuffer;
5352       using CppType = VULKAN_HPP_NAMESPACE::CommandBuffer;
5353 
5354       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCommandBuffer;
5355       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5356         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandBuffer;
5357 
5358     public:
CommandBuffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCommandBuffer commandBuffer,VkCommandPool commandPool)5359       CommandBuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, VkCommandBuffer commandBuffer, VkCommandPool commandPool )
5360         : m_device( device ), m_commandPool( commandPool ), m_commandBuffer( commandBuffer ), m_dispatcher( device.getDispatcher() )
5361       {
5362       }
5363 
CommandBuffer(std::nullptr_t)5364       CommandBuffer( std::nullptr_t ) {}
5365 
~CommandBuffer()5366       ~CommandBuffer()
5367       {
5368         clear();
5369       }
5370 
5371       CommandBuffer()                        = delete;
5372       CommandBuffer( CommandBuffer const & ) = delete;
5373 
CommandBuffer(CommandBuffer && rhs)5374       CommandBuffer( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT
5375         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
5376         , m_commandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} ) )
5377         , m_commandBuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandBuffer, {} ) )
5378         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
5379       {
5380       }
5381 
5382       CommandBuffer & operator=( CommandBuffer const & ) = delete;
5383 
operator =(CommandBuffer && rhs)5384       CommandBuffer & operator=( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT
5385       {
5386         if ( this != &rhs )
5387         {
5388           std::swap( m_device, rhs.m_device );
5389           std::swap( m_commandPool, rhs.m_commandPool );
5390           std::swap( m_commandBuffer, rhs.m_commandBuffer );
5391           std::swap( m_dispatcher, rhs.m_dispatcher );
5392         }
5393         return *this;
5394       }
5395 
operator *() const5396       VULKAN_HPP_NAMESPACE::CommandBuffer const & operator*() const VULKAN_HPP_NOEXCEPT
5397       {
5398         return m_commandBuffer;
5399       }
5400 
operator VULKAN_HPP_NAMESPACE::CommandBuffer() const5401       operator VULKAN_HPP_NAMESPACE::CommandBuffer() const VULKAN_HPP_NOEXCEPT
5402       {
5403         return m_commandBuffer;
5404       }
5405 
clear()5406       void clear() VULKAN_HPP_NOEXCEPT
5407       {
5408         if ( m_commandBuffer )
5409         {
5410           getDispatcher()->vkFreeCommandBuffers(
5411             static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), 1, reinterpret_cast<VkCommandBuffer const *>( &m_commandBuffer ) );
5412         }
5413         m_device        = nullptr;
5414         m_commandPool   = nullptr;
5415         m_commandBuffer = nullptr;
5416         m_dispatcher    = nullptr;
5417       }
5418 
release()5419       VULKAN_HPP_NAMESPACE::CommandBuffer release()
5420       {
5421         m_device      = nullptr;
5422         m_commandPool = nullptr;
5423         m_dispatcher  = nullptr;
5424         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_commandBuffer, nullptr );
5425       }
5426 
getDevice() const5427       VULKAN_HPP_NAMESPACE::Device getDevice() const
5428       {
5429         return m_device;
5430       }
5431 
getDispatcher() const5432       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5433       {
5434         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
5435         return m_dispatcher;
5436       }
5437 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer & rhs)5438       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer & rhs ) VULKAN_HPP_NOEXCEPT
5439       {
5440         std::swap( m_device, rhs.m_device );
5441         std::swap( m_commandPool, rhs.m_commandPool );
5442         std::swap( m_commandBuffer, rhs.m_commandBuffer );
5443         std::swap( m_dispatcher, rhs.m_dispatcher );
5444       }
5445 
5446       //=== VK_VERSION_1_0 ===
5447 
5448       void begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo ) const;
5449 
5450       void end() const;
5451 
5452       void reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
5453 
5454       void bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT;
5455 
5456       void setViewport( uint32_t                                                                       firstViewport,
5457                         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT;
5458 
5459       void setScissor( uint32_t firstScissor, VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT;
5460 
5461       void setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT;
5462 
5463       void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT;
5464 
5465       void setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT;
5466 
5467       void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT;
5468 
5469       void setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT;
5470 
5471       void setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT;
5472 
5473       void setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t reference ) const VULKAN_HPP_NOEXCEPT;
5474 
5475       void bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint                                             pipelineBindPoint,
5476                                VULKAN_HPP_NAMESPACE::PipelineLayout                                                layout,
5477                                uint32_t                                                                            firstSet,
5478                                VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,
5479                                VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const &                            dynamicOffsets ) const VULKAN_HPP_NOEXCEPT;
5480 
5481       void bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5482                             VULKAN_HPP_NAMESPACE::DeviceSize offset,
5483                             VULKAN_HPP_NAMESPACE::IndexType  indexType ) const VULKAN_HPP_NOEXCEPT;
5484 
5485       void bindVertexBuffers( uint32_t                                                                         firstBinding,
5486                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
5487                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets ) const;
5488 
5489       void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
5490 
5491       void
5492         drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
5493 
5494       void drawIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5495                          VULKAN_HPP_NAMESPACE::DeviceSize offset,
5496                          uint32_t                         drawCount,
5497                          uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
5498 
5499       void drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5500                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
5501                                 uint32_t                         drawCount,
5502                                 uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
5503 
5504       void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
5505 
5506       void dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT;
5507 
5508       void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer                                                     srcBuffer,
5509                        VULKAN_HPP_NAMESPACE::Buffer                                                     dstBuffer,
5510                        VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
5511 
5512       void copyImage( VULKAN_HPP_NAMESPACE::Image                                                     srcImage,
5513                       VULKAN_HPP_NAMESPACE::ImageLayout                                               srcImageLayout,
5514                       VULKAN_HPP_NAMESPACE::Image                                                     dstImage,
5515                       VULKAN_HPP_NAMESPACE::ImageLayout                                               dstImageLayout,
5516                       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
5517 
5518       void blitImage( VULKAN_HPP_NAMESPACE::Image                                                     srcImage,
5519                       VULKAN_HPP_NAMESPACE::ImageLayout                                               srcImageLayout,
5520                       VULKAN_HPP_NAMESPACE::Image                                                     dstImage,
5521                       VULKAN_HPP_NAMESPACE::ImageLayout                                               dstImageLayout,
5522                       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,
5523                       VULKAN_HPP_NAMESPACE::Filter                                                    filter ) const VULKAN_HPP_NOEXCEPT;
5524 
5525       void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer                                                          srcBuffer,
5526                               VULKAN_HPP_NAMESPACE::Image                                                           dstImage,
5527                               VULKAN_HPP_NAMESPACE::ImageLayout                                                     dstImageLayout,
5528                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
5529 
5530       void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image                                                           srcImage,
5531                               VULKAN_HPP_NAMESPACE::ImageLayout                                                     srcImageLayout,
5532                               VULKAN_HPP_NAMESPACE::Buffer                                                          dstBuffer,
5533                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
5534 
5535       template <typename DataType>
5536       void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer                             dstBuffer,
5537                          VULKAN_HPP_NAMESPACE::DeviceSize                         dstOffset,
5538                          VULKAN_HPP_NAMESPACE::ArrayProxy<const DataType> const & data ) const VULKAN_HPP_NOEXCEPT;
5539 
5540       void fillBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
5541                        VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
5542                        VULKAN_HPP_NAMESPACE::DeviceSize size,
5543                        uint32_t                         data ) const VULKAN_HPP_NOEXCEPT;
5544 
5545       void clearColorImage( VULKAN_HPP_NAMESPACE::Image                                                                 image,
5546                             VULKAN_HPP_NAMESPACE::ImageLayout                                                           imageLayout,
5547                             const VULKAN_HPP_NAMESPACE::ClearColorValue &                                               color,
5548                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT;
5549 
5550       void
5551         clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image                                                                 image,
5552                                 VULKAN_HPP_NAMESPACE::ImageLayout                                                           imageLayout,
5553                                 const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue &                                        depthStencil,
5554                                 VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT;
5555 
5556       void clearAttachments( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,
5557                              VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const &       rects ) const VULKAN_HPP_NOEXCEPT;
5558 
5559       void resolveImage( VULKAN_HPP_NAMESPACE::Image                                                        srcImage,
5560                          VULKAN_HPP_NAMESPACE::ImageLayout                                                  srcImageLayout,
5561                          VULKAN_HPP_NAMESPACE::Image                                                        dstImage,
5562                          VULKAN_HPP_NAMESPACE::ImageLayout                                                  dstImageLayout,
5563                          VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions ) const VULKAN_HPP_NOEXCEPT;
5564 
5565       void setEvent( VULKAN_HPP_NAMESPACE::Event                        event,
5566                      VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
5567 
5568       void resetEvent( VULKAN_HPP_NAMESPACE::Event                        event,
5569                        VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
5570 
5571       void waitEvents( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &               events,
5572                        VULKAN_HPP_NAMESPACE::PipelineStageFlags                                                  srcStageMask,
5573                        VULKAN_HPP_NAMESPACE::PipelineStageFlags                                                  dstStageMask,
5574                        VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
5575                        VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
5576                        VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT;
5577 
5578       void pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags                                                  srcStageMask,
5579                             VULKAN_HPP_NAMESPACE::PipelineStageFlags                                                  dstStageMask,
5580                             VULKAN_HPP_NAMESPACE::DependencyFlags                                                     dependencyFlags,
5581                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
5582                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
5583                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const &  imageMemoryBarriers ) const
5584         VULKAN_HPP_NOEXCEPT;
5585 
5586       void beginQuery( VULKAN_HPP_NAMESPACE::QueryPool               queryPool,
5587                        uint32_t                                      query,
5588                        VULKAN_HPP_NAMESPACE::QueryControlFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
5589 
5590       void endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT;
5591 
5592       void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
5593 
5594       void writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
5595                            VULKAN_HPP_NAMESPACE::QueryPool             queryPool,
5596                            uint32_t                                    query ) const VULKAN_HPP_NOEXCEPT;
5597 
5598       void copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool              queryPool,
5599                                  uint32_t                                     firstQuery,
5600                                  uint32_t                                     queryCount,
5601                                  VULKAN_HPP_NAMESPACE::Buffer                 dstBuffer,
5602                                  VULKAN_HPP_NAMESPACE::DeviceSize             dstOffset,
5603                                  VULKAN_HPP_NAMESPACE::DeviceSize             stride,
5604                                  VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
5605 
5606       template <typename ValuesType>
5607       void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout                       layout,
5608                           VULKAN_HPP_NAMESPACE::ShaderStageFlags                     stageFlags,
5609                           uint32_t                                                   offset,
5610                           VULKAN_HPP_NAMESPACE::ArrayProxy<const ValuesType> const & values ) const VULKAN_HPP_NOEXCEPT;
5611 
5612       void beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
5613                             VULKAN_HPP_NAMESPACE::SubpassContents             contents ) const VULKAN_HPP_NOEXCEPT;
5614 
5615       void nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT;
5616 
5617       void endRenderPass() const VULKAN_HPP_NOEXCEPT;
5618 
5619       void executeCommands( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers ) const VULKAN_HPP_NOEXCEPT;
5620 
5621       //=== VK_VERSION_1_1 ===
5622 
5623       void setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT;
5624 
5625       void dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
5626         VULKAN_HPP_NOEXCEPT;
5627 
5628       //=== VK_VERSION_1_2 ===
5629 
5630       void drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5631                               VULKAN_HPP_NAMESPACE::DeviceSize offset,
5632                               VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
5633                               VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
5634                               uint32_t                         maxDrawCount,
5635                               uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
5636 
5637       void drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5638                                      VULKAN_HPP_NAMESPACE::DeviceSize offset,
5639                                      VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
5640                                      VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
5641                                      uint32_t                         maxDrawCount,
5642                                      uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
5643 
5644       void beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
5645                              const VULKAN_HPP_NAMESPACE::SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT;
5646 
5647       void nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,
5648                          const VULKAN_HPP_NAMESPACE::SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
5649 
5650       void endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
5651 
5652       //=== VK_VERSION_1_3 ===
5653 
5654       void setEvent2( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
5655 
5656       void resetEvent2( VULKAN_HPP_NAMESPACE::Event                         event,
5657                         VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
5658 
5659       void waitEvents2( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &          events,
5660                         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfo> const & dependencyInfos ) const;
5661 
5662       void pipelineBarrier2( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
5663 
5664       void
5665         writeTimestamp2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT;
5666 
5667       void copyBuffer2( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT;
5668 
5669       void copyImage2( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT;
5670 
5671       void copyBufferToImage2( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT;
5672 
5673       void copyImageToBuffer2( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT;
5674 
5675       void blitImage2( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT;
5676 
5677       void resolveImage2( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT;
5678 
5679       void beginRendering( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT;
5680 
5681       void endRendering() const VULKAN_HPP_NOEXCEPT;
5682 
5683       void setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
5684 
5685       void setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT;
5686 
5687       void setPrimitiveTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT;
5688 
5689       void setViewportWithCount( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT;
5690 
5691       void setScissorWithCount( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT;
5692 
5693       void bindVertexBuffers2(
5694         uint32_t                                                                                 firstBinding,
5695         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &             buffers,
5696         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const &         offsets,
5697         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes   VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
5698         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
5699 
5700       void setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT;
5701 
5702       void setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT;
5703 
5704       void setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT;
5705 
5706       void setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT;
5707 
5708       void setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT;
5709 
5710       void setStencilOp( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
5711                          VULKAN_HPP_NAMESPACE::StencilOp        failOp,
5712                          VULKAN_HPP_NAMESPACE::StencilOp        passOp,
5713                          VULKAN_HPP_NAMESPACE::StencilOp        depthFailOp,
5714                          VULKAN_HPP_NAMESPACE::CompareOp        compareOp ) const VULKAN_HPP_NOEXCEPT;
5715 
5716       void setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT;
5717 
5718       void setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT;
5719 
5720       void setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT;
5721 
5722       //=== VK_EXT_debug_marker ===
5723 
5724       void debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT;
5725 
5726       void debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT;
5727 
5728       void debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT;
5729 
5730       //=== VK_KHR_video_queue ===
5731 
5732       void beginVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo ) const VULKAN_HPP_NOEXCEPT;
5733 
5734       void endVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo ) const VULKAN_HPP_NOEXCEPT;
5735 
5736       void controlVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo ) const VULKAN_HPP_NOEXCEPT;
5737 
5738       //=== VK_KHR_video_decode_queue ===
5739 
5740       void decodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & decodeInfo ) const VULKAN_HPP_NOEXCEPT;
5741 
5742       //=== VK_EXT_transform_feedback ===
5743 
5744       void bindTransformFeedbackBuffersEXT( uint32_t                                                                         firstBinding,
5745                                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
5746                                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
5747                                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes
5748                                               VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
5749 
5750       void beginTransformFeedbackEXT( uint32_t                                                                     firstCounterBuffer,
5751                                       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,
5752                                       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets
5753                                         VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
5754 
5755       void endTransformFeedbackEXT( uint32_t                                                                     firstCounterBuffer,
5756                                     VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,
5757                                     VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets
5758                                       VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
5759 
5760       void beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
5761                                  uint32_t                                query,
5762                                  VULKAN_HPP_NAMESPACE::QueryControlFlags flags,
5763                                  uint32_t                                index ) const VULKAN_HPP_NOEXCEPT;
5764 
5765       void endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, uint32_t index ) const VULKAN_HPP_NOEXCEPT;
5766 
5767       void drawIndirectByteCountEXT( uint32_t                         instanceCount,
5768                                      uint32_t                         firstInstance,
5769                                      VULKAN_HPP_NAMESPACE::Buffer     counterBuffer,
5770                                      VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,
5771                                      uint32_t                         counterOffset,
5772                                      uint32_t                         vertexStride ) const VULKAN_HPP_NOEXCEPT;
5773 
5774       //=== VK_NVX_binary_import ===
5775 
5776       void cuLaunchKernelNVX( const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT;
5777 
5778       //=== VK_AMD_draw_indirect_count ===
5779 
5780       void drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5781                                  VULKAN_HPP_NAMESPACE::DeviceSize offset,
5782                                  VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
5783                                  VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
5784                                  uint32_t                         maxDrawCount,
5785                                  uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
5786 
5787       void drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5788                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
5789                                         VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
5790                                         VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
5791                                         uint32_t                         maxDrawCount,
5792                                         uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
5793 
5794       //=== VK_KHR_dynamic_rendering ===
5795 
5796       void beginRenderingKHR( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT;
5797 
5798       void endRenderingKHR() const VULKAN_HPP_NOEXCEPT;
5799 
5800       //=== VK_KHR_device_group ===
5801 
5802       void setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT;
5803 
5804       void dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ )
5805         const VULKAN_HPP_NOEXCEPT;
5806 
5807       //=== VK_KHR_push_descriptor ===
5808 
5809       void pushDescriptorSetKHR( VULKAN_HPP_NAMESPACE::PipelineBindPoint                                                  pipelineBindPoint,
5810                                  VULKAN_HPP_NAMESPACE::PipelineLayout                                                     layout,
5811                                  uint32_t                                                                                 set,
5812                                  VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites ) const
5813         VULKAN_HPP_NOEXCEPT;
5814 
5815       template <typename DataType>
5816       void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
5817                                              VULKAN_HPP_NAMESPACE::PipelineLayout           layout,
5818                                              uint32_t                                       set,
5819                                              DataType const &                               data ) const VULKAN_HPP_NOEXCEPT;
5820 
5821       //=== VK_EXT_conditional_rendering ===
5822 
5823       void beginConditionalRenderingEXT( const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT;
5824 
5825       void endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT;
5826 
5827       //=== VK_NV_clip_space_w_scaling ===
5828 
5829       void setViewportWScalingNV( uint32_t                                                                                 firstViewport,
5830                                   VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings ) const
5831         VULKAN_HPP_NOEXCEPT;
5832 
5833       //=== VK_EXT_discard_rectangles ===
5834 
5835       void setDiscardRectangleEXT( uint32_t                                                                     firstDiscardRectangle,
5836                                    VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles ) const VULKAN_HPP_NOEXCEPT;
5837 
5838       void setDiscardRectangleEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 discardRectangleEnable ) const VULKAN_HPP_NOEXCEPT;
5839 
5840       void setDiscardRectangleModeEXT( VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode ) const VULKAN_HPP_NOEXCEPT;
5841 
5842       //=== VK_KHR_create_renderpass2 ===
5843 
5844       void beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
5845                                 const VULKAN_HPP_NAMESPACE::SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT;
5846 
5847       void nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,
5848                             const VULKAN_HPP_NAMESPACE::SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
5849 
5850       void endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
5851 
5852       //=== VK_EXT_debug_utils ===
5853 
5854       void beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
5855 
5856       void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT;
5857 
5858       void insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
5859 
5860 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
5861       //=== VK_AMDX_shader_enqueue ===
5862 
5863       void initializeGraphScratchMemoryAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress scratch ) const VULKAN_HPP_NOEXCEPT;
5864 
5865       void dispatchGraphAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress                      scratch,
5866                               const VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX & countInfo ) const VULKAN_HPP_NOEXCEPT;
5867 
5868       void dispatchGraphIndirectAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress                      scratch,
5869                                       const VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX & countInfo ) const VULKAN_HPP_NOEXCEPT;
5870 
5871       void dispatchGraphIndirectCountAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress scratch,
5872                                            VULKAN_HPP_NAMESPACE::DeviceAddress countInfo ) const VULKAN_HPP_NOEXCEPT;
5873 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
5874 
5875       //=== VK_EXT_sample_locations ===
5876 
5877       void setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT;
5878 
5879       //=== VK_KHR_acceleration_structure ===
5880 
5881       void buildAccelerationStructuresKHR(
5882         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const &      infos,
5883         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos ) const;
5884 
5885       void buildAccelerationStructuresIndirectKHR(
5886         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
5887         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const &                             indirectDeviceAddresses,
5888         VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const &                                                        indirectStrides,
5889         VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t * const> const &                                                pMaxPrimitiveCounts ) const;
5890 
5891       void copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
5892 
5893       void copyAccelerationStructureToMemoryKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
5894 
5895       void copyMemoryToAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
5896 
5897       void writeAccelerationStructuresPropertiesKHR(
5898         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
5899         VULKAN_HPP_NAMESPACE::QueryType                                                                queryType,
5900         VULKAN_HPP_NAMESPACE::QueryPool                                                                queryPool,
5901         uint32_t                                                                                       firstQuery ) const VULKAN_HPP_NOEXCEPT;
5902 
5903       //=== VK_KHR_ray_tracing_pipeline ===
5904 
5905       void traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
5906                          const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,
5907                          const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,
5908                          const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,
5909                          uint32_t                                                    width,
5910                          uint32_t                                                    height,
5911                          uint32_t                                                    depth ) const VULKAN_HPP_NOEXCEPT;
5912 
5913       void traceRaysIndirectKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
5914                                  const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,
5915                                  const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,
5916                                  const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,
5917                                  VULKAN_HPP_NAMESPACE::DeviceAddress                         indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT;
5918 
5919       void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT;
5920 
5921       //=== VK_NV_shading_rate_image ===
5922 
5923       void bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT;
5924 
5925       void setViewportShadingRatePaletteNV(
5926         uint32_t                                                                                   firstViewport,
5927         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT;
5928 
5929       void setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV                                                   sampleOrderType,
5930                                    VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders ) const
5931         VULKAN_HPP_NOEXCEPT;
5932 
5933       //=== VK_NV_ray_tracing ===
5934 
5935       void buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info,
5936                                          VULKAN_HPP_NAMESPACE::Buffer                              instanceData,
5937                                          VULKAN_HPP_NAMESPACE::DeviceSize                          instanceOffset,
5938                                          VULKAN_HPP_NAMESPACE::Bool32                              update,
5939                                          VULKAN_HPP_NAMESPACE::AccelerationStructureNV             dst,
5940                                          VULKAN_HPP_NAMESPACE::AccelerationStructureNV             src,
5941                                          VULKAN_HPP_NAMESPACE::Buffer                              scratch,
5942                                          VULKAN_HPP_NAMESPACE::DeviceSize                          scratchOffset ) const VULKAN_HPP_NOEXCEPT;
5943 
5944       void copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV          dst,
5945                                         VULKAN_HPP_NAMESPACE::AccelerationStructureNV          src,
5946                                         VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT;
5947 
5948       void traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer     raygenShaderBindingTableBuffer,
5949                         VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset,
5950                         VULKAN_HPP_NAMESPACE::Buffer     missShaderBindingTableBuffer,
5951                         VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset,
5952                         VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride,
5953                         VULKAN_HPP_NAMESPACE::Buffer     hitShaderBindingTableBuffer,
5954                         VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset,
5955                         VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride,
5956                         VULKAN_HPP_NAMESPACE::Buffer     callableShaderBindingTableBuffer,
5957                         VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset,
5958                         VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride,
5959                         uint32_t                         width,
5960                         uint32_t                         height,
5961                         uint32_t                         depth ) const VULKAN_HPP_NOEXCEPT;
5962 
5963       void writeAccelerationStructuresPropertiesNV(
5964         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,
5965         VULKAN_HPP_NAMESPACE::QueryType                                                               queryType,
5966         VULKAN_HPP_NAMESPACE::QueryPool                                                               queryPool,
5967         uint32_t                                                                                      firstQuery ) const VULKAN_HPP_NOEXCEPT;
5968 
5969       //=== VK_KHR_draw_indirect_count ===
5970 
5971       void drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5972                                  VULKAN_HPP_NAMESPACE::DeviceSize offset,
5973                                  VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
5974                                  VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
5975                                  uint32_t                         maxDrawCount,
5976                                  uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
5977 
5978       void drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5979                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
5980                                         VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
5981                                         VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
5982                                         uint32_t                         maxDrawCount,
5983                                         uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
5984 
5985       //=== VK_AMD_buffer_marker ===
5986 
5987       void writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
5988                                  VULKAN_HPP_NAMESPACE::Buffer                dstBuffer,
5989                                  VULKAN_HPP_NAMESPACE::DeviceSize            dstOffset,
5990                                  uint32_t                                    marker ) const VULKAN_HPP_NOEXCEPT;
5991 
5992       //=== VK_NV_mesh_shader ===
5993 
5994       void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT;
5995 
5996       void drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
5997                                     VULKAN_HPP_NAMESPACE::DeviceSize offset,
5998                                     uint32_t                         drawCount,
5999                                     uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
6000 
6001       void drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
6002                                          VULKAN_HPP_NAMESPACE::DeviceSize offset,
6003                                          VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
6004                                          VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
6005                                          uint32_t                         maxDrawCount,
6006                                          uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
6007 
6008       //=== VK_NV_scissor_exclusive ===
6009 
6010       void setExclusiveScissorEnableNV( uint32_t                                                                     firstExclusiveScissor,
6011                                         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & exclusiveScissorEnables ) const
6012         VULKAN_HPP_NOEXCEPT;
6013 
6014       void setExclusiveScissorNV( uint32_t                                                                     firstExclusiveScissor,
6015                                   VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT;
6016 
6017       //=== VK_NV_device_diagnostic_checkpoints ===
6018 
6019       template <typename CheckpointMarkerType>
6020       void setCheckpointNV( CheckpointMarkerType const & checkpointMarker ) const VULKAN_HPP_NOEXCEPT;
6021 
6022       //=== VK_INTEL_performance_query ===
6023 
6024       void setPerformanceMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo ) const;
6025 
6026       void setPerformanceStreamMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo ) const;
6027 
6028       void setPerformanceOverrideINTEL( const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo ) const;
6029 
6030       //=== VK_KHR_fragment_shading_rate ===
6031 
6032       void setFragmentShadingRateKHR( const VULKAN_HPP_NAMESPACE::Extent2D &                       fragmentSize,
6033                                       const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT;
6034 
6035       //=== VK_KHR_dynamic_rendering_local_read ===
6036 
6037       void setRenderingAttachmentLocationsKHR( const VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR & locationInfo ) const VULKAN_HPP_NOEXCEPT;
6038 
6039       void setRenderingInputAttachmentIndicesKHR( const VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR & locationInfo ) const VULKAN_HPP_NOEXCEPT;
6040 
6041       //=== VK_EXT_line_rasterization ===
6042 
6043       void setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT;
6044 
6045       //=== VK_EXT_extended_dynamic_state ===
6046 
6047       void setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
6048 
6049       void setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT;
6050 
6051       void setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT;
6052 
6053       void setViewportWithCountEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT;
6054 
6055       void setScissorWithCountEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT;
6056 
6057       void bindVertexBuffers2EXT(
6058         uint32_t                                                                                 firstBinding,
6059         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &             buffers,
6060         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const &         offsets,
6061         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes   VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
6062         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
6063 
6064       void setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT;
6065 
6066       void setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT;
6067 
6068       void setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT;
6069 
6070       void setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT;
6071 
6072       void setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT;
6073 
6074       void setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
6075                             VULKAN_HPP_NAMESPACE::StencilOp        failOp,
6076                             VULKAN_HPP_NAMESPACE::StencilOp        passOp,
6077                             VULKAN_HPP_NAMESPACE::StencilOp        depthFailOp,
6078                             VULKAN_HPP_NAMESPACE::CompareOp        compareOp ) const VULKAN_HPP_NOEXCEPT;
6079 
6080       //=== VK_NV_device_generated_commands ===
6081 
6082       void preprocessGeneratedCommandsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT;
6083 
6084       void executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32                          isPreprocessed,
6085                                        const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT;
6086 
6087       void bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
6088                                       VULKAN_HPP_NAMESPACE::Pipeline          pipeline,
6089                                       uint32_t                                groupIndex ) const VULKAN_HPP_NOEXCEPT;
6090 
6091       //=== VK_EXT_depth_bias_control ===
6092 
6093       void setDepthBias2EXT( const VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT & depthBiasInfo ) const VULKAN_HPP_NOEXCEPT;
6094 
6095       //=== VK_KHR_video_encode_queue ===
6096 
6097       void encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT;
6098 
6099 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
6100       //=== VK_NV_cuda_kernel_launch ===
6101 
6102       void cudaLaunchKernelNV( const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV & launchInfo ) const VULKAN_HPP_NOEXCEPT;
6103 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
6104 
6105       //=== VK_KHR_synchronization2 ===
6106 
6107       void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
6108 
6109       void resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event                         event,
6110                            VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
6111 
6112       void waitEvents2KHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &          events,
6113                            VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfo> const & dependencyInfos ) const;
6114 
6115       void pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
6116 
6117       void writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage,
6118                                VULKAN_HPP_NAMESPACE::QueryPool           queryPool,
6119                                uint32_t                                  query ) const VULKAN_HPP_NOEXCEPT;
6120 
6121       void writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage,
6122                                   VULKAN_HPP_NAMESPACE::Buffer              dstBuffer,
6123                                   VULKAN_HPP_NAMESPACE::DeviceSize          dstOffset,
6124                                   uint32_t                                  marker ) const VULKAN_HPP_NOEXCEPT;
6125 
6126       //=== VK_EXT_descriptor_buffer ===
6127 
6128       void bindDescriptorBuffersEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT> const & bindingInfos ) const
6129         VULKAN_HPP_NOEXCEPT;
6130 
6131       void setDescriptorBufferOffsetsEXT( VULKAN_HPP_NAMESPACE::PipelineBindPoint                                          pipelineBindPoint,
6132                                           VULKAN_HPP_NAMESPACE::PipelineLayout                                             layout,
6133                                           uint32_t                                                                         firstSet,
6134                                           VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const &                         bufferIndices,
6135                                           VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets ) const;
6136 
6137       void bindDescriptorBufferEmbeddedSamplersEXT( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
6138                                                     VULKAN_HPP_NAMESPACE::PipelineLayout    layout,
6139                                                     uint32_t                                set ) const VULKAN_HPP_NOEXCEPT;
6140 
6141       //=== VK_NV_fragment_shading_rate_enums ===
6142 
6143       void setFragmentShadingRateEnumNV( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV                  shadingRate,
6144                                          const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT;
6145 
6146       //=== VK_EXT_mesh_shader ===
6147 
6148       void drawMeshTasksEXT( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
6149 
6150       void drawMeshTasksIndirectEXT( VULKAN_HPP_NAMESPACE::Buffer     buffer,
6151                                      VULKAN_HPP_NAMESPACE::DeviceSize offset,
6152                                      uint32_t                         drawCount,
6153                                      uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
6154 
6155       void drawMeshTasksIndirectCountEXT( VULKAN_HPP_NAMESPACE::Buffer     buffer,
6156                                           VULKAN_HPP_NAMESPACE::DeviceSize offset,
6157                                           VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
6158                                           VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
6159                                           uint32_t                         maxDrawCount,
6160                                           uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
6161 
6162       //=== VK_KHR_copy_commands2 ===
6163 
6164       void copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT;
6165 
6166       void copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT;
6167 
6168       void copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT;
6169 
6170       void copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT;
6171 
6172       void blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT;
6173 
6174       void resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT;
6175 
6176       //=== VK_EXT_vertex_input_dynamic_state ===
6177 
6178       void setVertexInputEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const & vertexBindingDescriptions,
6179                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const &
6180                                 vertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT;
6181 
6182       //=== VK_HUAWEI_subpass_shading ===
6183 
6184       void subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT;
6185 
6186       //=== VK_HUAWEI_invocation_mask ===
6187 
6188       void bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT;
6189 
6190       //=== VK_EXT_extended_dynamic_state2 ===
6191 
6192       void setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT;
6193 
6194       void setRasterizerDiscardEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT;
6195 
6196       void setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT;
6197 
6198       void setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT;
6199 
6200       void setPrimitiveRestartEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT;
6201 
6202       //=== VK_EXT_color_write_enable ===
6203 
6204       void setColorWriteEnableEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT;
6205 
6206       //=== VK_KHR_ray_tracing_maintenance1 ===
6207 
6208       void traceRaysIndirect2KHR( VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT;
6209 
6210       //=== VK_EXT_multi_draw ===
6211 
6212       void drawMultiEXT( VULKAN_HPP_NAMESPACE::StridedArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,
6213                          uint32_t                                                                                      instanceCount,
6214                          uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
6215 
6216       void drawMultiIndexedEXT( VULKAN_HPP_NAMESPACE::StridedArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,
6217                                 uint32_t                                                                                             instanceCount,
6218                                 uint32_t                                                                                             firstInstance,
6219                                 Optional<const int32_t> vertexOffset VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
6220 
6221       //=== VK_EXT_opacity_micromap ===
6222 
6223       void buildMicromapsEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT> const & infos ) const VULKAN_HPP_NOEXCEPT;
6224 
6225       void copyMicromapEXT( const VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT & info ) const VULKAN_HPP_NOEXCEPT;
6226 
6227       void copyMicromapToMemoryEXT( const VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT & info ) const VULKAN_HPP_NOEXCEPT;
6228 
6229       void copyMemoryToMicromapEXT( const VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT & info ) const VULKAN_HPP_NOEXCEPT;
6230 
6231       void writeMicromapsPropertiesEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,
6232                                         VULKAN_HPP_NAMESPACE::QueryType                                                   queryType,
6233                                         VULKAN_HPP_NAMESPACE::QueryPool                                                   queryPool,
6234                                         uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT;
6235 
6236       //=== VK_HUAWEI_cluster_culling_shader ===
6237 
6238       void drawClusterHUAWEI( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
6239 
6240       void drawClusterIndirectHUAWEI( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT;
6241 
6242       //=== VK_NV_copy_memory_indirect ===
6243 
6244       void copyMemoryIndirectNV( VULKAN_HPP_NAMESPACE::DeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
6245 
6246       void copyMemoryToImageIndirectNV( VULKAN_HPP_NAMESPACE::DeviceAddress                                                          copyBufferAddress,
6247                                         uint32_t                                                                                     stride,
6248                                         VULKAN_HPP_NAMESPACE::Image                                                                  dstImage,
6249                                         VULKAN_HPP_NAMESPACE::ImageLayout                                                            dstImageLayout,
6250                                         VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceLayers> const & imageSubresources ) const
6251         VULKAN_HPP_NOEXCEPT;
6252 
6253       //=== VK_NV_memory_decompression ===
6254 
6255       void decompressMemoryNV( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV> const & decompressMemoryRegions ) const
6256         VULKAN_HPP_NOEXCEPT;
6257 
6258       void decompressMemoryIndirectCountNV( VULKAN_HPP_NAMESPACE::DeviceAddress indirectCommandsAddress,
6259                                             VULKAN_HPP_NAMESPACE::DeviceAddress indirectCommandsCountAddress,
6260                                             uint32_t                            stride ) const VULKAN_HPP_NOEXCEPT;
6261 
6262       //=== VK_NV_device_generated_commands_compute ===
6263 
6264       void updatePipelineIndirectBufferNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
6265                                            VULKAN_HPP_NAMESPACE::Pipeline          pipeline ) const VULKAN_HPP_NOEXCEPT;
6266 
6267       //=== VK_EXT_extended_dynamic_state3 ===
6268 
6269       void setDepthClampEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable ) const VULKAN_HPP_NOEXCEPT;
6270 
6271       void setPolygonModeEXT( VULKAN_HPP_NAMESPACE::PolygonMode polygonMode ) const VULKAN_HPP_NOEXCEPT;
6272 
6273       void setRasterizationSamplesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples ) const VULKAN_HPP_NOEXCEPT;
6274 
6275       void setSampleMaskEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits                                        samples,
6276                              VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SampleMask> const & sampleMask ) const;
6277 
6278       void setAlphaToCoverageEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable ) const VULKAN_HPP_NOEXCEPT;
6279 
6280       void setAlphaToOneEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable ) const VULKAN_HPP_NOEXCEPT;
6281 
6282       void setLogicOpEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable ) const VULKAN_HPP_NOEXCEPT;
6283 
6284       void setColorBlendEnableEXT( uint32_t                                                                     firstAttachment,
6285                                    VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorBlendEnables ) const VULKAN_HPP_NOEXCEPT;
6286 
6287       void setColorBlendEquationEXT( uint32_t                                                                                    firstAttachment,
6288                                      VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT> const & colorBlendEquations ) const
6289         VULKAN_HPP_NOEXCEPT;
6290 
6291       void setColorWriteMaskEXT( uint32_t                                                                                  firstAttachment,
6292                                  VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorComponentFlags> const & colorWriteMasks ) const
6293         VULKAN_HPP_NOEXCEPT;
6294 
6295       void setTessellationDomainOriginEXT( VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin ) const VULKAN_HPP_NOEXCEPT;
6296 
6297       void setRasterizationStreamEXT( uint32_t rasterizationStream ) const VULKAN_HPP_NOEXCEPT;
6298 
6299       void
6300         setConservativeRasterizationModeEXT( VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode ) const VULKAN_HPP_NOEXCEPT;
6301 
6302       void setExtraPrimitiveOverestimationSizeEXT( float extraPrimitiveOverestimationSize ) const VULKAN_HPP_NOEXCEPT;
6303 
6304       void setDepthClipEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable ) const VULKAN_HPP_NOEXCEPT;
6305 
6306       void setSampleLocationsEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable ) const VULKAN_HPP_NOEXCEPT;
6307 
6308       void setColorBlendAdvancedEXT( uint32_t                                                                                    firstAttachment,
6309                                      VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT> const & colorBlendAdvanced ) const
6310         VULKAN_HPP_NOEXCEPT;
6311 
6312       void setProvokingVertexModeEXT( VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode ) const VULKAN_HPP_NOEXCEPT;
6313 
6314       void setLineRasterizationModeEXT( VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode ) const VULKAN_HPP_NOEXCEPT;
6315 
6316       void setLineStippleEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable ) const VULKAN_HPP_NOEXCEPT;
6317 
6318       void setDepthClipNegativeOneToOneEXT( VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne ) const VULKAN_HPP_NOEXCEPT;
6319 
6320       void setViewportWScalingEnableNV( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable ) const VULKAN_HPP_NOEXCEPT;
6321 
6322       void setViewportSwizzleNV( uint32_t                                                                                firstViewport,
6323                                  VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const & viewportSwizzles ) const
6324         VULKAN_HPP_NOEXCEPT;
6325 
6326       void setCoverageToColorEnableNV( VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable ) const VULKAN_HPP_NOEXCEPT;
6327 
6328       void setCoverageToColorLocationNV( uint32_t coverageToColorLocation ) const VULKAN_HPP_NOEXCEPT;
6329 
6330       void setCoverageModulationModeNV( VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode ) const VULKAN_HPP_NOEXCEPT;
6331 
6332       void setCoverageModulationTableEnableNV( VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable ) const VULKAN_HPP_NOEXCEPT;
6333 
6334       void setCoverageModulationTableNV( VULKAN_HPP_NAMESPACE::ArrayProxy<const float> const & coverageModulationTable ) const VULKAN_HPP_NOEXCEPT;
6335 
6336       void setShadingRateImageEnableNV( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable ) const VULKAN_HPP_NOEXCEPT;
6337 
6338       void setRepresentativeFragmentTestEnableNV( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable ) const VULKAN_HPP_NOEXCEPT;
6339 
6340       void setCoverageReductionModeNV( VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode ) const VULKAN_HPP_NOEXCEPT;
6341 
6342       //=== VK_NV_optical_flow ===
6343 
6344       void opticalFlowExecuteNV( VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV             session,
6345                                  const VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV & executeInfo ) const VULKAN_HPP_NOEXCEPT;
6346 
6347       //=== VK_KHR_maintenance5 ===
6348 
6349       void bindIndexBuffer2KHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
6350                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
6351                                 VULKAN_HPP_NAMESPACE::DeviceSize size,
6352                                 VULKAN_HPP_NAMESPACE::IndexType  indexType ) const VULKAN_HPP_NOEXCEPT;
6353 
6354       //=== VK_EXT_shader_object ===
6355 
6356       void bindShadersEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderStageFlagBits> const & stages,
6357                            VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderEXT> const &           shaders ) const;
6358 
6359       //=== VK_EXT_attachment_feedback_loop_dynamic_state ===
6360 
6361       void setAttachmentFeedbackLoopEnableEXT( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
6362         VULKAN_HPP_NOEXCEPT;
6363 
6364       //=== VK_KHR_line_rasterization ===
6365 
6366       void setLineStippleKHR( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT;
6367 
6368       //=== VK_KHR_maintenance6 ===
6369 
6370       void bindDescriptorSets2KHR( const VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT;
6371 
6372       void pushConstants2KHR( const VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT;
6373 
6374       void pushDescriptorSet2KHR( const VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT;
6375 
6376       void pushDescriptorSetWithTemplate2KHR( const VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR & pushDescriptorSetWithTemplateInfo ) const
6377         VULKAN_HPP_NOEXCEPT;
6378 
6379       void setDescriptorBufferOffsets2EXT( const VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT & setDescriptorBufferOffsetsInfo ) const
6380         VULKAN_HPP_NOEXCEPT;
6381 
6382       void bindDescriptorBufferEmbeddedSamplers2EXT(
6383         const VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT & bindDescriptorBufferEmbeddedSamplersInfo ) const VULKAN_HPP_NOEXCEPT;
6384 
6385     private:
6386       VULKAN_HPP_NAMESPACE::Device                                              m_device        = {};
6387       VULKAN_HPP_NAMESPACE::CommandPool                                         m_commandPool   = {};
6388       VULKAN_HPP_NAMESPACE::CommandBuffer                                       m_commandBuffer = {};
6389       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher    = nullptr;
6390     };
6391 
6392     class CommandBuffers : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer>
6393     {
6394     public:
6395 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
CommandBuffers(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo)6396       CommandBuffers( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6397                       VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const &         allocateInfo )
6398       {
6399         *this = device.allocateCommandBuffers( allocateInfo );
6400       }
6401 #  endif
6402 
CommandBuffers(std::nullptr_t)6403       CommandBuffers( std::nullptr_t ) {}
6404 
6405       CommandBuffers()                                     = delete;
6406       CommandBuffers( CommandBuffers const & )             = delete;
6407       CommandBuffers( CommandBuffers && rhs )              = default;
6408       CommandBuffers & operator=( CommandBuffers const & ) = delete;
6409       CommandBuffers & operator=( CommandBuffers && rhs )  = default;
6410 
6411     private:
CommandBuffers(std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer> && rhs)6412       CommandBuffers( std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer> && rhs )
6413       {
6414         std::swap( *this, rhs );
6415       }
6416     };
6417 
6418     class CuFunctionNVX
6419     {
6420     public:
6421       using CType   = VkCuFunctionNVX;
6422       using CppType = VULKAN_HPP_NAMESPACE::CuFunctionNVX;
6423 
6424       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCuFunctionNVX;
6425       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6426         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuFunctionNVX;
6427 
6428     public:
6429 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)6430       CuFunctionNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6431                      VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const &                           createInfo,
6432                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6433       {
6434         *this = device.createCuFunctionNVX( createInfo, allocator );
6435       }
6436 #  endif
6437 
CuFunctionNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCuFunctionNVX function,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6438       CuFunctionNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6439                      VkCuFunctionNVX                                                                 function,
6440                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6441         : m_device( device )
6442         , m_function( function )
6443         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
6444         , m_dispatcher( device.getDispatcher() )
6445       {
6446       }
6447 
CuFunctionNVX(std::nullptr_t)6448       CuFunctionNVX( std::nullptr_t ) {}
6449 
~CuFunctionNVX()6450       ~CuFunctionNVX()
6451       {
6452         clear();
6453       }
6454 
6455       CuFunctionNVX()                        = delete;
6456       CuFunctionNVX( CuFunctionNVX const & ) = delete;
6457 
CuFunctionNVX(CuFunctionNVX && rhs)6458       CuFunctionNVX( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT
6459         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
6460         , m_function( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_function, {} ) )
6461         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
6462         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
6463       {
6464       }
6465 
6466       CuFunctionNVX & operator=( CuFunctionNVX const & ) = delete;
6467 
operator =(CuFunctionNVX && rhs)6468       CuFunctionNVX & operator=( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT
6469       {
6470         if ( this != &rhs )
6471         {
6472           std::swap( m_device, rhs.m_device );
6473           std::swap( m_function, rhs.m_function );
6474           std::swap( m_allocator, rhs.m_allocator );
6475           std::swap( m_dispatcher, rhs.m_dispatcher );
6476         }
6477         return *this;
6478       }
6479 
operator *() const6480       VULKAN_HPP_NAMESPACE::CuFunctionNVX const & operator*() const VULKAN_HPP_NOEXCEPT
6481       {
6482         return m_function;
6483       }
6484 
operator VULKAN_HPP_NAMESPACE::CuFunctionNVX() const6485       operator VULKAN_HPP_NAMESPACE::CuFunctionNVX() const VULKAN_HPP_NOEXCEPT
6486       {
6487         return m_function;
6488       }
6489 
clear()6490       void clear() VULKAN_HPP_NOEXCEPT
6491       {
6492         if ( m_function )
6493         {
6494           getDispatcher()->vkDestroyCuFunctionNVX(
6495             static_cast<VkDevice>( m_device ), static_cast<VkCuFunctionNVX>( m_function ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6496         }
6497         m_device     = nullptr;
6498         m_function   = nullptr;
6499         m_allocator  = nullptr;
6500         m_dispatcher = nullptr;
6501       }
6502 
release()6503       VULKAN_HPP_NAMESPACE::CuFunctionNVX release()
6504       {
6505         m_device     = nullptr;
6506         m_allocator  = nullptr;
6507         m_dispatcher = nullptr;
6508         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_function, nullptr );
6509       }
6510 
getDevice() const6511       VULKAN_HPP_NAMESPACE::Device getDevice() const
6512       {
6513         return m_device;
6514       }
6515 
getDispatcher() const6516       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6517       {
6518         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6519         return m_dispatcher;
6520       }
6521 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuFunctionNVX & rhs)6522       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuFunctionNVX & rhs ) VULKAN_HPP_NOEXCEPT
6523       {
6524         std::swap( m_device, rhs.m_device );
6525         std::swap( m_function, rhs.m_function );
6526         std::swap( m_allocator, rhs.m_allocator );
6527         std::swap( m_dispatcher, rhs.m_dispatcher );
6528       }
6529 
6530     private:
6531       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
6532       VULKAN_HPP_NAMESPACE::CuFunctionNVX                                       m_function   = {};
6533       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
6534       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6535     };
6536 
6537     class CuModuleNVX
6538     {
6539     public:
6540       using CType   = VkCuModuleNVX;
6541       using CppType = VULKAN_HPP_NAMESPACE::CuModuleNVX;
6542 
6543       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCuModuleNVX;
6544       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6545         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuModuleNVX;
6546 
6547     public:
6548 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)6549       CuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6550                    VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const &                             createInfo,
6551                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6552       {
6553         *this = device.createCuModuleNVX( createInfo, allocator );
6554       }
6555 #  endif
6556 
CuModuleNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCuModuleNVX module,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6557       CuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6558                    VkCuModuleNVX                                                                   module,
6559                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6560         : m_device( device )
6561         , m_module( module )
6562         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
6563         , m_dispatcher( device.getDispatcher() )
6564       {
6565       }
6566 
CuModuleNVX(std::nullptr_t)6567       CuModuleNVX( std::nullptr_t ) {}
6568 
~CuModuleNVX()6569       ~CuModuleNVX()
6570       {
6571         clear();
6572       }
6573 
6574       CuModuleNVX()                      = delete;
6575       CuModuleNVX( CuModuleNVX const & ) = delete;
6576 
CuModuleNVX(CuModuleNVX && rhs)6577       CuModuleNVX( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT
6578         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
6579         , m_module( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_module, {} ) )
6580         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
6581         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
6582       {
6583       }
6584 
6585       CuModuleNVX & operator=( CuModuleNVX const & ) = delete;
6586 
operator =(CuModuleNVX && rhs)6587       CuModuleNVX & operator=( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT
6588       {
6589         if ( this != &rhs )
6590         {
6591           std::swap( m_device, rhs.m_device );
6592           std::swap( m_module, rhs.m_module );
6593           std::swap( m_allocator, rhs.m_allocator );
6594           std::swap( m_dispatcher, rhs.m_dispatcher );
6595         }
6596         return *this;
6597       }
6598 
operator *() const6599       VULKAN_HPP_NAMESPACE::CuModuleNVX const & operator*() const VULKAN_HPP_NOEXCEPT
6600       {
6601         return m_module;
6602       }
6603 
operator VULKAN_HPP_NAMESPACE::CuModuleNVX() const6604       operator VULKAN_HPP_NAMESPACE::CuModuleNVX() const VULKAN_HPP_NOEXCEPT
6605       {
6606         return m_module;
6607       }
6608 
clear()6609       void clear() VULKAN_HPP_NOEXCEPT
6610       {
6611         if ( m_module )
6612         {
6613           getDispatcher()->vkDestroyCuModuleNVX(
6614             static_cast<VkDevice>( m_device ), static_cast<VkCuModuleNVX>( m_module ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6615         }
6616         m_device     = nullptr;
6617         m_module     = nullptr;
6618         m_allocator  = nullptr;
6619         m_dispatcher = nullptr;
6620       }
6621 
release()6622       VULKAN_HPP_NAMESPACE::CuModuleNVX release()
6623       {
6624         m_device     = nullptr;
6625         m_allocator  = nullptr;
6626         m_dispatcher = nullptr;
6627         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_module, nullptr );
6628       }
6629 
getDevice() const6630       VULKAN_HPP_NAMESPACE::Device getDevice() const
6631       {
6632         return m_device;
6633       }
6634 
getDispatcher() const6635       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6636       {
6637         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6638         return m_dispatcher;
6639       }
6640 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuModuleNVX & rhs)6641       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuModuleNVX & rhs ) VULKAN_HPP_NOEXCEPT
6642       {
6643         std::swap( m_device, rhs.m_device );
6644         std::swap( m_module, rhs.m_module );
6645         std::swap( m_allocator, rhs.m_allocator );
6646         std::swap( m_dispatcher, rhs.m_dispatcher );
6647       }
6648 
6649     private:
6650       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
6651       VULKAN_HPP_NAMESPACE::CuModuleNVX                                         m_module     = {};
6652       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
6653       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6654     };
6655 
6656 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
6657     class CudaFunctionNV
6658     {
6659     public:
6660       using CType   = VkCudaFunctionNV;
6661       using CppType = VULKAN_HPP_NAMESPACE::CudaFunctionNV;
6662 
6663       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCudaFunctionNV;
6664       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6665         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCudaFunctionNV;
6666 
6667     public:
6668 #    if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
CudaFunctionNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6669       CudaFunctionNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6670                       VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const &                          createInfo,
6671                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6672       {
6673         *this = device.createCudaFunctionNV( createInfo, allocator );
6674       }
6675 #    endif
6676 
CudaFunctionNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCudaFunctionNV function,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6677       CudaFunctionNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6678                       VkCudaFunctionNV                                                                function,
6679                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6680         : m_device( device )
6681         , m_function( function )
6682         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
6683         , m_dispatcher( device.getDispatcher() )
6684       {
6685       }
6686 
CudaFunctionNV(std::nullptr_t)6687       CudaFunctionNV( std::nullptr_t ) {}
6688 
~CudaFunctionNV()6689       ~CudaFunctionNV()
6690       {
6691         clear();
6692       }
6693 
6694       CudaFunctionNV()                         = delete;
6695       CudaFunctionNV( CudaFunctionNV const & ) = delete;
6696 
CudaFunctionNV(CudaFunctionNV && rhs)6697       CudaFunctionNV( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT
6698         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
6699         , m_function( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_function, {} ) )
6700         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
6701         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
6702       {
6703       }
6704 
6705       CudaFunctionNV & operator=( CudaFunctionNV const & ) = delete;
6706 
operator =(CudaFunctionNV && rhs)6707       CudaFunctionNV & operator=( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT
6708       {
6709         if ( this != &rhs )
6710         {
6711           std::swap( m_device, rhs.m_device );
6712           std::swap( m_function, rhs.m_function );
6713           std::swap( m_allocator, rhs.m_allocator );
6714           std::swap( m_dispatcher, rhs.m_dispatcher );
6715         }
6716         return *this;
6717       }
6718 
operator *() const6719       VULKAN_HPP_NAMESPACE::CudaFunctionNV const & operator*() const VULKAN_HPP_NOEXCEPT
6720       {
6721         return m_function;
6722       }
6723 
operator VULKAN_HPP_NAMESPACE::CudaFunctionNV() const6724       operator VULKAN_HPP_NAMESPACE::CudaFunctionNV() const VULKAN_HPP_NOEXCEPT
6725       {
6726         return m_function;
6727       }
6728 
clear()6729       void clear() VULKAN_HPP_NOEXCEPT
6730       {
6731         if ( m_function )
6732         {
6733           getDispatcher()->vkDestroyCudaFunctionNV(
6734             static_cast<VkDevice>( m_device ), static_cast<VkCudaFunctionNV>( m_function ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6735         }
6736         m_device     = nullptr;
6737         m_function   = nullptr;
6738         m_allocator  = nullptr;
6739         m_dispatcher = nullptr;
6740       }
6741 
release()6742       VULKAN_HPP_NAMESPACE::CudaFunctionNV release()
6743       {
6744         m_device     = nullptr;
6745         m_allocator  = nullptr;
6746         m_dispatcher = nullptr;
6747         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_function, nullptr );
6748       }
6749 
getDevice() const6750       VULKAN_HPP_NAMESPACE::Device getDevice() const
6751       {
6752         return m_device;
6753       }
6754 
getDispatcher() const6755       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6756       {
6757         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6758         return m_dispatcher;
6759       }
6760 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV & rhs)6761       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV & rhs ) VULKAN_HPP_NOEXCEPT
6762       {
6763         std::swap( m_device, rhs.m_device );
6764         std::swap( m_function, rhs.m_function );
6765         std::swap( m_allocator, rhs.m_allocator );
6766         std::swap( m_dispatcher, rhs.m_dispatcher );
6767       }
6768 
6769     private:
6770       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
6771       VULKAN_HPP_NAMESPACE::CudaFunctionNV                                      m_function   = {};
6772       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
6773       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6774     };
6775 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
6776 
6777 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
6778     class CudaModuleNV
6779     {
6780     public:
6781       using CType   = VkCudaModuleNV;
6782       using CppType = VULKAN_HPP_NAMESPACE::CudaModuleNV;
6783 
6784       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCudaModuleNV;
6785       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6786         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCudaModuleNV;
6787 
6788     public:
6789 #    if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
CudaModuleNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6790       CudaModuleNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6791                     VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const &                            createInfo,
6792                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6793       {
6794         *this = device.createCudaModuleNV( createInfo, allocator );
6795       }
6796 #    endif
6797 
CudaModuleNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCudaModuleNV module,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6798       CudaModuleNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6799                     VkCudaModuleNV                                                                  module,
6800                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6801         : m_device( device )
6802         , m_module( module )
6803         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
6804         , m_dispatcher( device.getDispatcher() )
6805       {
6806       }
6807 
CudaModuleNV(std::nullptr_t)6808       CudaModuleNV( std::nullptr_t ) {}
6809 
~CudaModuleNV()6810       ~CudaModuleNV()
6811       {
6812         clear();
6813       }
6814 
6815       CudaModuleNV()                       = delete;
6816       CudaModuleNV( CudaModuleNV const & ) = delete;
6817 
CudaModuleNV(CudaModuleNV && rhs)6818       CudaModuleNV( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT
6819         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
6820         , m_module( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_module, {} ) )
6821         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
6822         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
6823       {
6824       }
6825 
6826       CudaModuleNV & operator=( CudaModuleNV const & ) = delete;
6827 
operator =(CudaModuleNV && rhs)6828       CudaModuleNV & operator=( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT
6829       {
6830         if ( this != &rhs )
6831         {
6832           std::swap( m_device, rhs.m_device );
6833           std::swap( m_module, rhs.m_module );
6834           std::swap( m_allocator, rhs.m_allocator );
6835           std::swap( m_dispatcher, rhs.m_dispatcher );
6836         }
6837         return *this;
6838       }
6839 
operator *() const6840       VULKAN_HPP_NAMESPACE::CudaModuleNV const & operator*() const VULKAN_HPP_NOEXCEPT
6841       {
6842         return m_module;
6843       }
6844 
operator VULKAN_HPP_NAMESPACE::CudaModuleNV() const6845       operator VULKAN_HPP_NAMESPACE::CudaModuleNV() const VULKAN_HPP_NOEXCEPT
6846       {
6847         return m_module;
6848       }
6849 
clear()6850       void clear() VULKAN_HPP_NOEXCEPT
6851       {
6852         if ( m_module )
6853         {
6854           getDispatcher()->vkDestroyCudaModuleNV(
6855             static_cast<VkDevice>( m_device ), static_cast<VkCudaModuleNV>( m_module ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6856         }
6857         m_device     = nullptr;
6858         m_module     = nullptr;
6859         m_allocator  = nullptr;
6860         m_dispatcher = nullptr;
6861       }
6862 
release()6863       VULKAN_HPP_NAMESPACE::CudaModuleNV release()
6864       {
6865         m_device     = nullptr;
6866         m_allocator  = nullptr;
6867         m_dispatcher = nullptr;
6868         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_module, nullptr );
6869       }
6870 
getDevice() const6871       VULKAN_HPP_NAMESPACE::Device getDevice() const
6872       {
6873         return m_device;
6874       }
6875 
getDispatcher() const6876       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6877       {
6878         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
6879         return m_dispatcher;
6880       }
6881 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV & rhs)6882       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV & rhs ) VULKAN_HPP_NOEXCEPT
6883       {
6884         std::swap( m_device, rhs.m_device );
6885         std::swap( m_module, rhs.m_module );
6886         std::swap( m_allocator, rhs.m_allocator );
6887         std::swap( m_dispatcher, rhs.m_dispatcher );
6888       }
6889 
6890       //=== VK_NV_cuda_kernel_launch ===
6891 
6892       VULKAN_HPP_NODISCARD std::vector<uint8_t> getCache() const;
6893 
6894     private:
6895       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
6896       VULKAN_HPP_NAMESPACE::CudaModuleNV                                        m_module     = {};
6897       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
6898       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
6899     };
6900 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
6901 
6902     class DebugReportCallbackEXT
6903     {
6904     public:
6905       using CType   = VkDebugReportCallbackEXT;
6906       using CppType = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT;
6907 
6908       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDebugReportCallbackEXT;
6909       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6910         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDebugReportCallbackEXT;
6911 
6912     public:
6913 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)6914       DebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
6915                               VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const &                  createInfo,
6916                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6917       {
6918         *this = instance.createDebugReportCallbackEXT( createInfo, allocator );
6919       }
6920 #  endif
6921 
DebugReportCallbackEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkDebugReportCallbackEXT callback,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6922       DebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
6923                               VkDebugReportCallbackEXT                                                        callback,
6924                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6925         : m_instance( instance )
6926         , m_callback( callback )
6927         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
6928         , m_dispatcher( instance.getDispatcher() )
6929       {
6930       }
6931 
DebugReportCallbackEXT(std::nullptr_t)6932       DebugReportCallbackEXT( std::nullptr_t ) {}
6933 
~DebugReportCallbackEXT()6934       ~DebugReportCallbackEXT()
6935       {
6936         clear();
6937       }
6938 
6939       DebugReportCallbackEXT()                                 = delete;
6940       DebugReportCallbackEXT( DebugReportCallbackEXT const & ) = delete;
6941 
DebugReportCallbackEXT(DebugReportCallbackEXT && rhs)6942       DebugReportCallbackEXT( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT
6943         : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) )
6944         , m_callback( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_callback, {} ) )
6945         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
6946         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
6947       {
6948       }
6949 
6950       DebugReportCallbackEXT & operator=( DebugReportCallbackEXT const & ) = delete;
6951 
operator =(DebugReportCallbackEXT && rhs)6952       DebugReportCallbackEXT & operator=( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT
6953       {
6954         if ( this != &rhs )
6955         {
6956           std::swap( m_instance, rhs.m_instance );
6957           std::swap( m_callback, rhs.m_callback );
6958           std::swap( m_allocator, rhs.m_allocator );
6959           std::swap( m_dispatcher, rhs.m_dispatcher );
6960         }
6961         return *this;
6962       }
6963 
operator *() const6964       VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & operator*() const VULKAN_HPP_NOEXCEPT
6965       {
6966         return m_callback;
6967       }
6968 
operator VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT() const6969       operator VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT() const VULKAN_HPP_NOEXCEPT
6970       {
6971         return m_callback;
6972       }
6973 
clear()6974       void clear() VULKAN_HPP_NOEXCEPT
6975       {
6976         if ( m_callback )
6977         {
6978           getDispatcher()->vkDestroyDebugReportCallbackEXT( static_cast<VkInstance>( m_instance ),
6979                                                             static_cast<VkDebugReportCallbackEXT>( m_callback ),
6980                                                             reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
6981         }
6982         m_instance   = nullptr;
6983         m_callback   = nullptr;
6984         m_allocator  = nullptr;
6985         m_dispatcher = nullptr;
6986       }
6987 
release()6988       VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT release()
6989       {
6990         m_instance   = nullptr;
6991         m_allocator  = nullptr;
6992         m_dispatcher = nullptr;
6993         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_callback, nullptr );
6994       }
6995 
getInstance() const6996       VULKAN_HPP_NAMESPACE::Instance getInstance() const
6997       {
6998         return m_instance;
6999       }
7000 
getDispatcher() const7001       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
7002       {
7003         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7004         return m_dispatcher;
7005       }
7006 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT & rhs)7007       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT & rhs ) VULKAN_HPP_NOEXCEPT
7008       {
7009         std::swap( m_instance, rhs.m_instance );
7010         std::swap( m_callback, rhs.m_callback );
7011         std::swap( m_allocator, rhs.m_allocator );
7012         std::swap( m_dispatcher, rhs.m_dispatcher );
7013       }
7014 
7015     private:
7016       VULKAN_HPP_NAMESPACE::Instance                                              m_instance   = {};
7017       VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT                                m_callback   = {};
7018       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                           m_allocator  = {};
7019       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
7020     };
7021 
7022     class DebugUtilsMessengerEXT
7023     {
7024     public:
7025       using CType   = VkDebugUtilsMessengerEXT;
7026       using CppType = VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT;
7027 
7028       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDebugUtilsMessengerEXT;
7029       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7030         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
7031 
7032     public:
7033 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)7034       DebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
7035                               VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const &                  createInfo,
7036                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7037       {
7038         *this = instance.createDebugUtilsMessengerEXT( createInfo, allocator );
7039       }
7040 #  endif
7041 
DebugUtilsMessengerEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkDebugUtilsMessengerEXT messenger,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7042       DebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
7043                               VkDebugUtilsMessengerEXT                                                        messenger,
7044                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7045         : m_instance( instance )
7046         , m_messenger( messenger )
7047         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
7048         , m_dispatcher( instance.getDispatcher() )
7049       {
7050       }
7051 
DebugUtilsMessengerEXT(std::nullptr_t)7052       DebugUtilsMessengerEXT( std::nullptr_t ) {}
7053 
~DebugUtilsMessengerEXT()7054       ~DebugUtilsMessengerEXT()
7055       {
7056         clear();
7057       }
7058 
7059       DebugUtilsMessengerEXT()                                 = delete;
7060       DebugUtilsMessengerEXT( DebugUtilsMessengerEXT const & ) = delete;
7061 
DebugUtilsMessengerEXT(DebugUtilsMessengerEXT && rhs)7062       DebugUtilsMessengerEXT( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT
7063         : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) )
7064         , m_messenger( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_messenger, {} ) )
7065         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
7066         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
7067       {
7068       }
7069 
7070       DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT const & ) = delete;
7071 
operator =(DebugUtilsMessengerEXT && rhs)7072       DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT
7073       {
7074         if ( this != &rhs )
7075         {
7076           std::swap( m_instance, rhs.m_instance );
7077           std::swap( m_messenger, rhs.m_messenger );
7078           std::swap( m_allocator, rhs.m_allocator );
7079           std::swap( m_dispatcher, rhs.m_dispatcher );
7080         }
7081         return *this;
7082       }
7083 
operator *() const7084       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & operator*() const VULKAN_HPP_NOEXCEPT
7085       {
7086         return m_messenger;
7087       }
7088 
operator VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT() const7089       operator VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT() const VULKAN_HPP_NOEXCEPT
7090       {
7091         return m_messenger;
7092       }
7093 
clear()7094       void clear() VULKAN_HPP_NOEXCEPT
7095       {
7096         if ( m_messenger )
7097         {
7098           getDispatcher()->vkDestroyDebugUtilsMessengerEXT( static_cast<VkInstance>( m_instance ),
7099                                                             static_cast<VkDebugUtilsMessengerEXT>( m_messenger ),
7100                                                             reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
7101         }
7102         m_instance   = nullptr;
7103         m_messenger  = nullptr;
7104         m_allocator  = nullptr;
7105         m_dispatcher = nullptr;
7106       }
7107 
release()7108       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT release()
7109       {
7110         m_instance   = nullptr;
7111         m_allocator  = nullptr;
7112         m_dispatcher = nullptr;
7113         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_messenger, nullptr );
7114       }
7115 
getInstance() const7116       VULKAN_HPP_NAMESPACE::Instance getInstance() const
7117       {
7118         return m_instance;
7119       }
7120 
getDispatcher() const7121       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
7122       {
7123         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7124         return m_dispatcher;
7125       }
7126 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugUtilsMessengerEXT & rhs)7127       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugUtilsMessengerEXT & rhs ) VULKAN_HPP_NOEXCEPT
7128       {
7129         std::swap( m_instance, rhs.m_instance );
7130         std::swap( m_messenger, rhs.m_messenger );
7131         std::swap( m_allocator, rhs.m_allocator );
7132         std::swap( m_dispatcher, rhs.m_dispatcher );
7133       }
7134 
7135     private:
7136       VULKAN_HPP_NAMESPACE::Instance                                              m_instance   = {};
7137       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT                                m_messenger  = {};
7138       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                           m_allocator  = {};
7139       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
7140     };
7141 
7142     class DeferredOperationKHR
7143     {
7144     public:
7145       using CType   = VkDeferredOperationKHR;
7146       using CppType = VULKAN_HPP_NAMESPACE::DeferredOperationKHR;
7147 
7148       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDeferredOperationKHR;
7149       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7150         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
7151 
7152     public:
7153 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
DeferredOperationKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7154       DeferredOperationKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7155                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7156       {
7157         *this = device.createDeferredOperationKHR( allocator );
7158       }
7159 #  endif
7160 
DeferredOperationKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDeferredOperationKHR operation,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7161       DeferredOperationKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7162                             VkDeferredOperationKHR                                                          operation,
7163                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7164         : m_device( device )
7165         , m_operation( operation )
7166         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
7167         , m_dispatcher( device.getDispatcher() )
7168       {
7169       }
7170 
DeferredOperationKHR(std::nullptr_t)7171       DeferredOperationKHR( std::nullptr_t ) {}
7172 
~DeferredOperationKHR()7173       ~DeferredOperationKHR()
7174       {
7175         clear();
7176       }
7177 
7178       DeferredOperationKHR()                               = delete;
7179       DeferredOperationKHR( DeferredOperationKHR const & ) = delete;
7180 
DeferredOperationKHR(DeferredOperationKHR && rhs)7181       DeferredOperationKHR( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT
7182         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
7183         , m_operation( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_operation, {} ) )
7184         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
7185         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
7186       {
7187       }
7188 
7189       DeferredOperationKHR & operator=( DeferredOperationKHR const & ) = delete;
7190 
operator =(DeferredOperationKHR && rhs)7191       DeferredOperationKHR & operator=( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT
7192       {
7193         if ( this != &rhs )
7194         {
7195           std::swap( m_device, rhs.m_device );
7196           std::swap( m_operation, rhs.m_operation );
7197           std::swap( m_allocator, rhs.m_allocator );
7198           std::swap( m_dispatcher, rhs.m_dispatcher );
7199         }
7200         return *this;
7201       }
7202 
operator *() const7203       VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & operator*() const VULKAN_HPP_NOEXCEPT
7204       {
7205         return m_operation;
7206       }
7207 
operator VULKAN_HPP_NAMESPACE::DeferredOperationKHR() const7208       operator VULKAN_HPP_NAMESPACE::DeferredOperationKHR() const VULKAN_HPP_NOEXCEPT
7209       {
7210         return m_operation;
7211       }
7212 
clear()7213       void clear() VULKAN_HPP_NOEXCEPT
7214       {
7215         if ( m_operation )
7216         {
7217           getDispatcher()->vkDestroyDeferredOperationKHR( static_cast<VkDevice>( m_device ),
7218                                                           static_cast<VkDeferredOperationKHR>( m_operation ),
7219                                                           reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
7220         }
7221         m_device     = nullptr;
7222         m_operation  = nullptr;
7223         m_allocator  = nullptr;
7224         m_dispatcher = nullptr;
7225       }
7226 
release()7227       VULKAN_HPP_NAMESPACE::DeferredOperationKHR release()
7228       {
7229         m_device     = nullptr;
7230         m_allocator  = nullptr;
7231         m_dispatcher = nullptr;
7232         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_operation, nullptr );
7233       }
7234 
getDevice() const7235       VULKAN_HPP_NAMESPACE::Device getDevice() const
7236       {
7237         return m_device;
7238       }
7239 
getDispatcher() const7240       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7241       {
7242         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7243         return m_dispatcher;
7244       }
7245 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR & rhs)7246       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR & rhs ) VULKAN_HPP_NOEXCEPT
7247       {
7248         std::swap( m_device, rhs.m_device );
7249         std::swap( m_operation, rhs.m_operation );
7250         std::swap( m_allocator, rhs.m_allocator );
7251         std::swap( m_dispatcher, rhs.m_dispatcher );
7252       }
7253 
7254       //=== VK_KHR_deferred_host_operations ===
7255 
7256       VULKAN_HPP_NODISCARD uint32_t getMaxConcurrency() const VULKAN_HPP_NOEXCEPT;
7257 
7258       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getResult() const VULKAN_HPP_NOEXCEPT;
7259 
7260       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result join() const;
7261 
7262     private:
7263       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
7264       VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                m_operation  = {};
7265       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
7266       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7267     };
7268 
7269     class DescriptorPool
7270     {
7271     public:
7272       using CType   = VkDescriptorPool;
7273       using CppType = VULKAN_HPP_NAMESPACE::DescriptorPool;
7274 
7275       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorPool;
7276       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7277         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorPool;
7278 
7279     public:
7280 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)7281       DescriptorPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7282                       VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const &                          createInfo,
7283                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7284       {
7285         *this = device.createDescriptorPool( createInfo, allocator );
7286       }
7287 #  endif
7288 
DescriptorPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorPool descriptorPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7289       DescriptorPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7290                       VkDescriptorPool                                                                descriptorPool,
7291                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7292         : m_device( device )
7293         , m_descriptorPool( descriptorPool )
7294         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
7295         , m_dispatcher( device.getDispatcher() )
7296       {
7297       }
7298 
DescriptorPool(std::nullptr_t)7299       DescriptorPool( std::nullptr_t ) {}
7300 
~DescriptorPool()7301       ~DescriptorPool()
7302       {
7303         clear();
7304       }
7305 
7306       DescriptorPool()                         = delete;
7307       DescriptorPool( DescriptorPool const & ) = delete;
7308 
DescriptorPool(DescriptorPool && rhs)7309       DescriptorPool( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT
7310         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
7311         , m_descriptorPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} ) )
7312         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
7313         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
7314       {
7315       }
7316 
7317       DescriptorPool & operator=( DescriptorPool const & ) = delete;
7318 
operator =(DescriptorPool && rhs)7319       DescriptorPool & operator=( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT
7320       {
7321         if ( this != &rhs )
7322         {
7323           std::swap( m_device, rhs.m_device );
7324           std::swap( m_descriptorPool, rhs.m_descriptorPool );
7325           std::swap( m_allocator, rhs.m_allocator );
7326           std::swap( m_dispatcher, rhs.m_dispatcher );
7327         }
7328         return *this;
7329       }
7330 
operator *() const7331       VULKAN_HPP_NAMESPACE::DescriptorPool const & operator*() const VULKAN_HPP_NOEXCEPT
7332       {
7333         return m_descriptorPool;
7334       }
7335 
operator VULKAN_HPP_NAMESPACE::DescriptorPool() const7336       operator VULKAN_HPP_NAMESPACE::DescriptorPool() const VULKAN_HPP_NOEXCEPT
7337       {
7338         return m_descriptorPool;
7339       }
7340 
clear()7341       void clear() VULKAN_HPP_NOEXCEPT
7342       {
7343         if ( m_descriptorPool )
7344         {
7345           getDispatcher()->vkDestroyDescriptorPool( static_cast<VkDevice>( m_device ),
7346                                                     static_cast<VkDescriptorPool>( m_descriptorPool ),
7347                                                     reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
7348         }
7349         m_device         = nullptr;
7350         m_descriptorPool = nullptr;
7351         m_allocator      = nullptr;
7352         m_dispatcher     = nullptr;
7353       }
7354 
release()7355       VULKAN_HPP_NAMESPACE::DescriptorPool release()
7356       {
7357         m_device     = nullptr;
7358         m_allocator  = nullptr;
7359         m_dispatcher = nullptr;
7360         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_descriptorPool, nullptr );
7361       }
7362 
getDevice() const7363       VULKAN_HPP_NAMESPACE::Device getDevice() const
7364       {
7365         return m_device;
7366       }
7367 
getDispatcher() const7368       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7369       {
7370         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7371         return m_dispatcher;
7372       }
7373 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool & rhs)7374       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool & rhs ) VULKAN_HPP_NOEXCEPT
7375       {
7376         std::swap( m_device, rhs.m_device );
7377         std::swap( m_descriptorPool, rhs.m_descriptorPool );
7378         std::swap( m_allocator, rhs.m_allocator );
7379         std::swap( m_dispatcher, rhs.m_dispatcher );
7380       }
7381 
7382       //=== VK_VERSION_1_0 ===
7383 
7384       void reset( VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
7385 
7386     private:
7387       VULKAN_HPP_NAMESPACE::Device                                              m_device         = {};
7388       VULKAN_HPP_NAMESPACE::DescriptorPool                                      m_descriptorPool = {};
7389       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator      = {};
7390       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher     = nullptr;
7391     };
7392 
7393     class DescriptorSet
7394     {
7395     public:
7396       using CType   = VkDescriptorSet;
7397       using CppType = VULKAN_HPP_NAMESPACE::DescriptorSet;
7398 
7399       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSet;
7400       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7401         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSet;
7402 
7403     public:
DescriptorSet(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorSet descriptorSet,VkDescriptorPool descriptorPool)7404       DescriptorSet( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, VkDescriptorSet descriptorSet, VkDescriptorPool descriptorPool )
7405         : m_device( device ), m_descriptorPool( descriptorPool ), m_descriptorSet( descriptorSet ), m_dispatcher( device.getDispatcher() )
7406       {
7407       }
7408 
DescriptorSet(std::nullptr_t)7409       DescriptorSet( std::nullptr_t ) {}
7410 
~DescriptorSet()7411       ~DescriptorSet()
7412       {
7413         clear();
7414       }
7415 
7416       DescriptorSet()                        = delete;
7417       DescriptorSet( DescriptorSet const & ) = delete;
7418 
DescriptorSet(DescriptorSet && rhs)7419       DescriptorSet( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT
7420         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
7421         , m_descriptorPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} ) )
7422         , m_descriptorSet( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSet, {} ) )
7423         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
7424       {
7425       }
7426 
7427       DescriptorSet & operator=( DescriptorSet const & ) = delete;
7428 
operator =(DescriptorSet && rhs)7429       DescriptorSet & operator=( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT
7430       {
7431         if ( this != &rhs )
7432         {
7433           std::swap( m_device, rhs.m_device );
7434           std::swap( m_descriptorPool, rhs.m_descriptorPool );
7435           std::swap( m_descriptorSet, rhs.m_descriptorSet );
7436           std::swap( m_dispatcher, rhs.m_dispatcher );
7437         }
7438         return *this;
7439       }
7440 
operator *() const7441       VULKAN_HPP_NAMESPACE::DescriptorSet const & operator*() const VULKAN_HPP_NOEXCEPT
7442       {
7443         return m_descriptorSet;
7444       }
7445 
operator VULKAN_HPP_NAMESPACE::DescriptorSet() const7446       operator VULKAN_HPP_NAMESPACE::DescriptorSet() const VULKAN_HPP_NOEXCEPT
7447       {
7448         return m_descriptorSet;
7449       }
7450 
clear()7451       void clear() VULKAN_HPP_NOEXCEPT
7452       {
7453         if ( m_descriptorSet )
7454         {
7455           getDispatcher()->vkFreeDescriptorSets( static_cast<VkDevice>( m_device ),
7456                                                  static_cast<VkDescriptorPool>( m_descriptorPool ),
7457                                                  1,
7458                                                  reinterpret_cast<VkDescriptorSet const *>( &m_descriptorSet ) );
7459         }
7460         m_device         = nullptr;
7461         m_descriptorPool = nullptr;
7462         m_descriptorSet  = nullptr;
7463         m_dispatcher     = nullptr;
7464       }
7465 
release()7466       VULKAN_HPP_NAMESPACE::DescriptorSet release()
7467       {
7468         m_device         = nullptr;
7469         m_descriptorPool = nullptr;
7470         m_dispatcher     = nullptr;
7471         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_descriptorSet, nullptr );
7472       }
7473 
getDevice() const7474       VULKAN_HPP_NAMESPACE::Device getDevice() const
7475       {
7476         return m_device;
7477       }
7478 
getDispatcher() const7479       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7480       {
7481         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7482         return m_dispatcher;
7483       }
7484 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet & rhs)7485       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet & rhs ) VULKAN_HPP_NOEXCEPT
7486       {
7487         std::swap( m_device, rhs.m_device );
7488         std::swap( m_descriptorPool, rhs.m_descriptorPool );
7489         std::swap( m_descriptorSet, rhs.m_descriptorSet );
7490         std::swap( m_dispatcher, rhs.m_dispatcher );
7491       }
7492 
7493       //=== VK_VERSION_1_1 ===
7494 
7495       template <typename DataType>
7496       void updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, DataType const & data ) const VULKAN_HPP_NOEXCEPT;
7497 
7498       //=== VK_KHR_descriptor_update_template ===
7499 
7500       template <typename DataType>
7501       void updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, DataType const & data ) const VULKAN_HPP_NOEXCEPT;
7502 
7503       //=== VK_VALVE_descriptor_set_host_mapping ===
7504 
7505       VULKAN_HPP_NODISCARD void * getHostMappingVALVE() const VULKAN_HPP_NOEXCEPT;
7506 
7507     private:
7508       VULKAN_HPP_NAMESPACE::Device                                              m_device         = {};
7509       VULKAN_HPP_NAMESPACE::DescriptorPool                                      m_descriptorPool = {};
7510       VULKAN_HPP_NAMESPACE::DescriptorSet                                       m_descriptorSet  = {};
7511       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher     = nullptr;
7512     };
7513 
7514     class DescriptorSets : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet>
7515     {
7516     public:
7517 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
DescriptorSets(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo)7518       DescriptorSets( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7519                       VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const &         allocateInfo )
7520       {
7521         *this = device.allocateDescriptorSets( allocateInfo );
7522       }
7523 #  endif
7524 
DescriptorSets(std::nullptr_t)7525       DescriptorSets( std::nullptr_t ) {}
7526 
7527       DescriptorSets()                                     = delete;
7528       DescriptorSets( DescriptorSets const & )             = delete;
7529       DescriptorSets( DescriptorSets && rhs )              = default;
7530       DescriptorSets & operator=( DescriptorSets const & ) = delete;
7531       DescriptorSets & operator=( DescriptorSets && rhs )  = default;
7532 
7533     private:
DescriptorSets(std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet> && rhs)7534       DescriptorSets( std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet> && rhs )
7535       {
7536         std::swap( *this, rhs );
7537       }
7538     };
7539 
7540     class DescriptorSetLayout
7541     {
7542     public:
7543       using CType   = VkDescriptorSetLayout;
7544       using CppType = VULKAN_HPP_NAMESPACE::DescriptorSetLayout;
7545 
7546       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSetLayout;
7547       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7548         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSetLayout;
7549 
7550     public:
7551 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)7552       DescriptorSetLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7553                            VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const &                     createInfo,
7554                            VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7555       {
7556         *this = device.createDescriptorSetLayout( createInfo, allocator );
7557       }
7558 #  endif
7559 
DescriptorSetLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorSetLayout descriptorSetLayout,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7560       DescriptorSetLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7561                            VkDescriptorSetLayout                                                           descriptorSetLayout,
7562                            VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7563         : m_device( device )
7564         , m_descriptorSetLayout( descriptorSetLayout )
7565         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
7566         , m_dispatcher( device.getDispatcher() )
7567       {
7568       }
7569 
DescriptorSetLayout(std::nullptr_t)7570       DescriptorSetLayout( std::nullptr_t ) {}
7571 
~DescriptorSetLayout()7572       ~DescriptorSetLayout()
7573       {
7574         clear();
7575       }
7576 
7577       DescriptorSetLayout()                              = delete;
7578       DescriptorSetLayout( DescriptorSetLayout const & ) = delete;
7579 
DescriptorSetLayout(DescriptorSetLayout && rhs)7580       DescriptorSetLayout( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT
7581         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
7582         , m_descriptorSetLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSetLayout, {} ) )
7583         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
7584         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
7585       {
7586       }
7587 
7588       DescriptorSetLayout & operator=( DescriptorSetLayout const & ) = delete;
7589 
operator =(DescriptorSetLayout && rhs)7590       DescriptorSetLayout & operator=( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT
7591       {
7592         if ( this != &rhs )
7593         {
7594           std::swap( m_device, rhs.m_device );
7595           std::swap( m_descriptorSetLayout, rhs.m_descriptorSetLayout );
7596           std::swap( m_allocator, rhs.m_allocator );
7597           std::swap( m_dispatcher, rhs.m_dispatcher );
7598         }
7599         return *this;
7600       }
7601 
operator *() const7602       VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & operator*() const VULKAN_HPP_NOEXCEPT
7603       {
7604         return m_descriptorSetLayout;
7605       }
7606 
operator VULKAN_HPP_NAMESPACE::DescriptorSetLayout() const7607       operator VULKAN_HPP_NAMESPACE::DescriptorSetLayout() const VULKAN_HPP_NOEXCEPT
7608       {
7609         return m_descriptorSetLayout;
7610       }
7611 
clear()7612       void clear() VULKAN_HPP_NOEXCEPT
7613       {
7614         if ( m_descriptorSetLayout )
7615         {
7616           getDispatcher()->vkDestroyDescriptorSetLayout( static_cast<VkDevice>( m_device ),
7617                                                          static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ),
7618                                                          reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
7619         }
7620         m_device              = nullptr;
7621         m_descriptorSetLayout = nullptr;
7622         m_allocator           = nullptr;
7623         m_dispatcher          = nullptr;
7624       }
7625 
release()7626       VULKAN_HPP_NAMESPACE::DescriptorSetLayout release()
7627       {
7628         m_device     = nullptr;
7629         m_allocator  = nullptr;
7630         m_dispatcher = nullptr;
7631         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_descriptorSetLayout, nullptr );
7632       }
7633 
getDevice() const7634       VULKAN_HPP_NAMESPACE::Device getDevice() const
7635       {
7636         return m_device;
7637       }
7638 
getDispatcher() const7639       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7640       {
7641         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7642         return m_dispatcher;
7643       }
7644 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSetLayout & rhs)7645       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSetLayout & rhs ) VULKAN_HPP_NOEXCEPT
7646       {
7647         std::swap( m_device, rhs.m_device );
7648         std::swap( m_descriptorSetLayout, rhs.m_descriptorSetLayout );
7649         std::swap( m_allocator, rhs.m_allocator );
7650         std::swap( m_dispatcher, rhs.m_dispatcher );
7651       }
7652 
7653       //=== VK_EXT_descriptor_buffer ===
7654 
7655       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getSizeEXT() const VULKAN_HPP_NOEXCEPT;
7656 
7657       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getBindingOffsetEXT( uint32_t binding ) const VULKAN_HPP_NOEXCEPT;
7658 
7659     private:
7660       VULKAN_HPP_NAMESPACE::Device                                              m_device              = {};
7661       VULKAN_HPP_NAMESPACE::DescriptorSetLayout                                 m_descriptorSetLayout = {};
7662       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator           = {};
7663       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher          = nullptr;
7664     };
7665 
7666     class DescriptorUpdateTemplate
7667     {
7668     public:
7669       using CType   = VkDescriptorUpdateTemplate;
7670       using CppType = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate;
7671 
7672       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorUpdateTemplate;
7673       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7674         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorUpdateTemplate;
7675 
7676     public:
7677 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)7678       DescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7679                                 VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const &                createInfo,
7680                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7681       {
7682         *this = device.createDescriptorUpdateTemplate( createInfo, allocator );
7683       }
7684 #  endif
7685 
DescriptorUpdateTemplate(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7686       DescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7687                                 VkDescriptorUpdateTemplate                                                      descriptorUpdateTemplate,
7688                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7689         : m_device( device )
7690         , m_descriptorUpdateTemplate( descriptorUpdateTemplate )
7691         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
7692         , m_dispatcher( device.getDispatcher() )
7693       {
7694       }
7695 
DescriptorUpdateTemplate(std::nullptr_t)7696       DescriptorUpdateTemplate( std::nullptr_t ) {}
7697 
~DescriptorUpdateTemplate()7698       ~DescriptorUpdateTemplate()
7699       {
7700         clear();
7701       }
7702 
7703       DescriptorUpdateTemplate()                                   = delete;
7704       DescriptorUpdateTemplate( DescriptorUpdateTemplate const & ) = delete;
7705 
DescriptorUpdateTemplate(DescriptorUpdateTemplate && rhs)7706       DescriptorUpdateTemplate( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT
7707         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
7708         , m_descriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorUpdateTemplate, {} ) )
7709         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
7710         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
7711       {
7712       }
7713 
7714       DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate const & ) = delete;
7715 
operator =(DescriptorUpdateTemplate && rhs)7716       DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT
7717       {
7718         if ( this != &rhs )
7719         {
7720           std::swap( m_device, rhs.m_device );
7721           std::swap( m_descriptorUpdateTemplate, rhs.m_descriptorUpdateTemplate );
7722           std::swap( m_allocator, rhs.m_allocator );
7723           std::swap( m_dispatcher, rhs.m_dispatcher );
7724         }
7725         return *this;
7726       }
7727 
operator *() const7728       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & operator*() const VULKAN_HPP_NOEXCEPT
7729       {
7730         return m_descriptorUpdateTemplate;
7731       }
7732 
operator VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate() const7733       operator VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate() const VULKAN_HPP_NOEXCEPT
7734       {
7735         return m_descriptorUpdateTemplate;
7736       }
7737 
clear()7738       void clear() VULKAN_HPP_NOEXCEPT
7739       {
7740         if ( m_descriptorUpdateTemplate )
7741         {
7742           getDispatcher()->vkDestroyDescriptorUpdateTemplate( static_cast<VkDevice>( m_device ),
7743                                                               static_cast<VkDescriptorUpdateTemplate>( m_descriptorUpdateTemplate ),
7744                                                               reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
7745         }
7746         m_device                   = nullptr;
7747         m_descriptorUpdateTemplate = nullptr;
7748         m_allocator                = nullptr;
7749         m_dispatcher               = nullptr;
7750       }
7751 
release()7752       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate release()
7753       {
7754         m_device     = nullptr;
7755         m_allocator  = nullptr;
7756         m_dispatcher = nullptr;
7757         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_descriptorUpdateTemplate, nullptr );
7758       }
7759 
getDevice() const7760       VULKAN_HPP_NAMESPACE::Device getDevice() const
7761       {
7762         return m_device;
7763       }
7764 
getDispatcher() const7765       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7766       {
7767         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7768         return m_dispatcher;
7769       }
7770 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate & rhs)7771       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate & rhs ) VULKAN_HPP_NOEXCEPT
7772       {
7773         std::swap( m_device, rhs.m_device );
7774         std::swap( m_descriptorUpdateTemplate, rhs.m_descriptorUpdateTemplate );
7775         std::swap( m_allocator, rhs.m_allocator );
7776         std::swap( m_dispatcher, rhs.m_dispatcher );
7777       }
7778 
7779     private:
7780       VULKAN_HPP_NAMESPACE::Device                                              m_device                   = {};
7781       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate                            m_descriptorUpdateTemplate = {};
7782       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator                = {};
7783       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher               = nullptr;
7784     };
7785 
7786     class DeviceMemory
7787     {
7788     public:
7789       using CType   = VkDeviceMemory;
7790       using CppType = VULKAN_HPP_NAMESPACE::DeviceMemory;
7791 
7792       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDeviceMemory;
7793       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7794         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDeviceMemory;
7795 
7796     public:
7797 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)7798       DeviceMemory( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7799                     VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const &                                allocateInfo,
7800                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7801       {
7802         *this = device.allocateMemory( allocateInfo, allocator );
7803       }
7804 #  endif
7805 
DeviceMemory(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDeviceMemory memory,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7806       DeviceMemory( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7807                     VkDeviceMemory                                                                  memory,
7808                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7809         : m_device( device )
7810         , m_memory( memory )
7811         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
7812         , m_dispatcher( device.getDispatcher() )
7813       {
7814       }
7815 
DeviceMemory(std::nullptr_t)7816       DeviceMemory( std::nullptr_t ) {}
7817 
~DeviceMemory()7818       ~DeviceMemory()
7819       {
7820         clear();
7821       }
7822 
7823       DeviceMemory()                       = delete;
7824       DeviceMemory( DeviceMemory const & ) = delete;
7825 
DeviceMemory(DeviceMemory && rhs)7826       DeviceMemory( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT
7827         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
7828         , m_memory( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_memory, {} ) )
7829         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
7830         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
7831       {
7832       }
7833 
7834       DeviceMemory & operator=( DeviceMemory const & ) = delete;
7835 
operator =(DeviceMemory && rhs)7836       DeviceMemory & operator=( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT
7837       {
7838         if ( this != &rhs )
7839         {
7840           std::swap( m_device, rhs.m_device );
7841           std::swap( m_memory, rhs.m_memory );
7842           std::swap( m_allocator, rhs.m_allocator );
7843           std::swap( m_dispatcher, rhs.m_dispatcher );
7844         }
7845         return *this;
7846       }
7847 
operator *() const7848       VULKAN_HPP_NAMESPACE::DeviceMemory const & operator*() const VULKAN_HPP_NOEXCEPT
7849       {
7850         return m_memory;
7851       }
7852 
operator VULKAN_HPP_NAMESPACE::DeviceMemory() const7853       operator VULKAN_HPP_NAMESPACE::DeviceMemory() const VULKAN_HPP_NOEXCEPT
7854       {
7855         return m_memory;
7856       }
7857 
clear()7858       void clear() VULKAN_HPP_NOEXCEPT
7859       {
7860         if ( m_memory )
7861         {
7862           getDispatcher()->vkFreeMemory(
7863             static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_memory ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
7864         }
7865         m_device     = nullptr;
7866         m_memory     = nullptr;
7867         m_allocator  = nullptr;
7868         m_dispatcher = nullptr;
7869       }
7870 
release()7871       VULKAN_HPP_NAMESPACE::DeviceMemory release()
7872       {
7873         m_device     = nullptr;
7874         m_allocator  = nullptr;
7875         m_dispatcher = nullptr;
7876         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_memory, nullptr );
7877       }
7878 
getDevice() const7879       VULKAN_HPP_NAMESPACE::Device getDevice() const
7880       {
7881         return m_device;
7882       }
7883 
getDispatcher() const7884       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7885       {
7886         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
7887         return m_dispatcher;
7888       }
7889 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceMemory & rhs)7890       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceMemory & rhs ) VULKAN_HPP_NOEXCEPT
7891       {
7892         std::swap( m_device, rhs.m_device );
7893         std::swap( m_memory, rhs.m_memory );
7894         std::swap( m_allocator, rhs.m_allocator );
7895         std::swap( m_dispatcher, rhs.m_dispatcher );
7896       }
7897 
7898       //=== VK_VERSION_1_0 ===
7899 
7900       VULKAN_HPP_NODISCARD void * mapMemory( VULKAN_HPP_NAMESPACE::DeviceSize           offset,
7901                                              VULKAN_HPP_NAMESPACE::DeviceSize           size,
7902                                              VULKAN_HPP_NAMESPACE::MemoryMapFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7903 
7904       void unmapMemory() const VULKAN_HPP_NOEXCEPT;
7905 
7906       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getCommitment() const VULKAN_HPP_NOEXCEPT;
7907 
7908 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
7909       //=== VK_NV_external_memory_win32 ===
7910 
7911       VULKAN_HPP_NODISCARD HANDLE getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType ) const;
7912 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
7913 
7914       //=== VK_EXT_pageable_device_local_memory ===
7915 
7916       void setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT;
7917 
7918     private:
7919       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
7920       VULKAN_HPP_NAMESPACE::DeviceMemory                                        m_memory     = {};
7921       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
7922       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
7923     };
7924 
7925     class DisplayKHR
7926     {
7927     public:
7928       using CType   = VkDisplayKHR;
7929       using CppType = VULKAN_HPP_NAMESPACE::DisplayKHR;
7930 
7931       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDisplayKHR;
7932       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7933         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayKHR;
7934 
7935     public:
7936 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,int32_t drmFd,uint32_t connectorId)7937       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, int32_t drmFd, uint32_t connectorId )
7938       {
7939         *this = physicalDevice.getDrmDisplayEXT( drmFd, connectorId );
7940       }
7941 #  endif
7942 
7943 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
7944 #    if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,Display & dpy,RROutput rrOutput)7945       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, Display & dpy, RROutput rrOutput )
7946       {
7947         *this = physicalDevice.getRandROutputDisplayEXT( dpy, rrOutput );
7948       }
7949 #    endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
7950 #  endif
7951 
7952 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
7953 #    if defined( VK_USE_PLATFORM_WIN32_KHR )
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,uint32_t deviceRelativeId)7954       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, uint32_t deviceRelativeId )
7955       {
7956         *this = physicalDevice.getWinrtDisplayNV( deviceRelativeId );
7957       }
7958 #    endif /*VK_USE_PLATFORM_WIN32_KHR*/
7959 #  endif
7960 
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VkDisplayKHR display)7961       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, VkDisplayKHR display )
7962         : m_physicalDevice( physicalDevice ), m_display( display ), m_dispatcher( physicalDevice.getDispatcher() )
7963       {
7964       }
7965 
DisplayKHR(std::nullptr_t)7966       DisplayKHR( std::nullptr_t ) {}
7967 
~DisplayKHR()7968       ~DisplayKHR()
7969       {
7970         clear();
7971       }
7972 
7973       DisplayKHR()                     = delete;
7974       DisplayKHR( DisplayKHR const & ) = delete;
7975 
DisplayKHR(DisplayKHR && rhs)7976       DisplayKHR( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT
7977         : m_physicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ) )
7978         , m_display( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_display, {} ) )
7979         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
7980       {
7981       }
7982 
7983       DisplayKHR & operator=( DisplayKHR const & ) = delete;
7984 
operator =(DisplayKHR && rhs)7985       DisplayKHR & operator=( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT
7986       {
7987         if ( this != &rhs )
7988         {
7989           std::swap( m_physicalDevice, rhs.m_physicalDevice );
7990           std::swap( m_display, rhs.m_display );
7991           std::swap( m_dispatcher, rhs.m_dispatcher );
7992         }
7993         return *this;
7994       }
7995 
operator *() const7996       VULKAN_HPP_NAMESPACE::DisplayKHR const & operator*() const VULKAN_HPP_NOEXCEPT
7997       {
7998         return m_display;
7999       }
8000 
operator VULKAN_HPP_NAMESPACE::DisplayKHR() const8001       operator VULKAN_HPP_NAMESPACE::DisplayKHR() const VULKAN_HPP_NOEXCEPT
8002       {
8003         return m_display;
8004       }
8005 
clear()8006       void clear() VULKAN_HPP_NOEXCEPT
8007       {
8008         if ( m_display )
8009         {
8010           getDispatcher()->vkReleaseDisplayEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_display ) );
8011         }
8012         m_physicalDevice = nullptr;
8013         m_display        = nullptr;
8014         m_dispatcher     = nullptr;
8015       }
8016 
release()8017       VULKAN_HPP_NAMESPACE::DisplayKHR release()
8018       {
8019         m_physicalDevice = nullptr;
8020         m_dispatcher     = nullptr;
8021         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_display, nullptr );
8022       }
8023 
getPhysicalDevice() const8024       VULKAN_HPP_NAMESPACE::PhysicalDevice getPhysicalDevice() const
8025       {
8026         return m_physicalDevice;
8027       }
8028 
getDispatcher() const8029       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
8030       {
8031         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8032         return m_dispatcher;
8033       }
8034 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR & rhs)8035       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR & rhs ) VULKAN_HPP_NOEXCEPT
8036       {
8037         std::swap( m_physicalDevice, rhs.m_physicalDevice );
8038         std::swap( m_display, rhs.m_display );
8039         std::swap( m_dispatcher, rhs.m_dispatcher );
8040       }
8041 
8042       //=== VK_KHR_display ===
8043 
8044       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR> getModeProperties() const;
8045 
8046       VULKAN_HPP_NODISCARD
8047         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayModeKHR>::Type
8048         createMode( VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const &                          createInfo,
8049                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT;
8050 
8051       //=== VK_KHR_get_display_properties2 ===
8052 
8053       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR> getModeProperties2() const;
8054 
8055 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
8056       //=== VK_NV_acquire_winrt_display ===
8057 
8058       void acquireWinrtNV() const;
8059 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
8060 
8061     private:
8062       VULKAN_HPP_NAMESPACE::PhysicalDevice                                        m_physicalDevice = {};
8063       VULKAN_HPP_NAMESPACE::DisplayKHR                                            m_display        = {};
8064       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher     = nullptr;
8065     };
8066 
8067     class DisplayKHRs : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>
8068     {
8069     public:
8070 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
DisplayKHRs(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,uint32_t planeIndex)8071       DisplayKHRs( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice, uint32_t planeIndex )
8072       {
8073         *this = physicalDevice.getDisplayPlaneSupportedDisplaysKHR( planeIndex );
8074       }
8075 #  endif
8076 
DisplayKHRs(std::nullptr_t)8077       DisplayKHRs( std::nullptr_t ) {}
8078 
8079       DisplayKHRs()                                  = delete;
8080       DisplayKHRs( DisplayKHRs const & )             = delete;
8081       DisplayKHRs( DisplayKHRs && rhs )              = default;
8082       DisplayKHRs & operator=( DisplayKHRs const & ) = delete;
8083       DisplayKHRs & operator=( DisplayKHRs && rhs )  = default;
8084 
8085     private:
DisplayKHRs(std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR> && rhs)8086       DisplayKHRs( std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR> && rhs )
8087       {
8088         std::swap( *this, rhs );
8089       }
8090     };
8091 
8092     class DisplayModeKHR
8093     {
8094     public:
8095       using CType   = VkDisplayModeKHR;
8096       using CppType = VULKAN_HPP_NAMESPACE::DisplayModeKHR;
8097 
8098       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDisplayModeKHR;
8099       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8100         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayModeKHR;
8101 
8102     public:
8103 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
DisplayModeKHR(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)8104       DisplayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const &             display,
8105                       VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const &                          createInfo,
8106                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8107       {
8108         *this = display.createMode( createInfo, allocator );
8109       }
8110 #  endif
8111 
DisplayModeKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display,VkDisplayModeKHR displayModeKHR)8112       DisplayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display, VkDisplayModeKHR displayModeKHR )
8113         : m_physicalDevice( display.getPhysicalDevice() ), m_displayModeKHR( displayModeKHR ), m_dispatcher( display.getDispatcher() )
8114       {
8115       }
8116 
DisplayModeKHR(std::nullptr_t)8117       DisplayModeKHR( std::nullptr_t ) {}
8118 
~DisplayModeKHR()8119       ~DisplayModeKHR()
8120       {
8121         clear();
8122       }
8123 
8124       DisplayModeKHR() = delete;
8125 
DisplayModeKHR(DisplayModeKHR const & rhs)8126       DisplayModeKHR( DisplayModeKHR const & rhs ) : m_displayModeKHR( rhs.m_displayModeKHR ), m_dispatcher( rhs.m_dispatcher ) {}
8127 
DisplayModeKHR(DisplayModeKHR && rhs)8128       DisplayModeKHR( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT
8129         : m_physicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ) )
8130         , m_displayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayModeKHR, {} ) )
8131         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
8132       {
8133       }
8134 
operator =(DisplayModeKHR const & rhs)8135       DisplayModeKHR & operator=( DisplayModeKHR const & rhs )
8136       {
8137         m_displayModeKHR = rhs.m_displayModeKHR;
8138         m_dispatcher     = rhs.m_dispatcher;
8139         return *this;
8140       }
8141 
operator =(DisplayModeKHR && rhs)8142       DisplayModeKHR & operator=( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT
8143       {
8144         if ( this != &rhs )
8145         {
8146           std::swap( m_physicalDevice, rhs.m_physicalDevice );
8147           std::swap( m_displayModeKHR, rhs.m_displayModeKHR );
8148           std::swap( m_dispatcher, rhs.m_dispatcher );
8149         }
8150         return *this;
8151       }
8152 
operator *() const8153       VULKAN_HPP_NAMESPACE::DisplayModeKHR const & operator*() const VULKAN_HPP_NOEXCEPT
8154       {
8155         return m_displayModeKHR;
8156       }
8157 
operator VULKAN_HPP_NAMESPACE::DisplayModeKHR() const8158       operator VULKAN_HPP_NAMESPACE::DisplayModeKHR() const VULKAN_HPP_NOEXCEPT
8159       {
8160         return m_displayModeKHR;
8161       }
8162 
clear()8163       void clear() VULKAN_HPP_NOEXCEPT
8164       {
8165         m_physicalDevice = nullptr;
8166         m_displayModeKHR = nullptr;
8167         m_dispatcher     = nullptr;
8168       }
8169 
release()8170       VULKAN_HPP_NAMESPACE::DisplayModeKHR release()
8171       {
8172         m_physicalDevice = nullptr;
8173         m_dispatcher     = nullptr;
8174         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_displayModeKHR, nullptr );
8175       }
8176 
getDispatcher() const8177       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
8178       {
8179         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8180         return m_dispatcher;
8181       }
8182 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayModeKHR & rhs)8183       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayModeKHR & rhs ) VULKAN_HPP_NOEXCEPT
8184       {
8185         std::swap( m_physicalDevice, rhs.m_physicalDevice );
8186         std::swap( m_displayModeKHR, rhs.m_displayModeKHR );
8187         std::swap( m_dispatcher, rhs.m_dispatcher );
8188       }
8189 
8190       //=== VK_KHR_display ===
8191 
8192       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR getDisplayPlaneCapabilities( uint32_t planeIndex ) const;
8193 
8194     private:
8195       VULKAN_HPP_NAMESPACE::PhysicalDevice                                        m_physicalDevice = {};
8196       VULKAN_HPP_NAMESPACE::DisplayModeKHR                                        m_displayModeKHR = {};
8197       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher     = nullptr;
8198     };
8199 
8200     class Event
8201     {
8202     public:
8203       using CType   = VkEvent;
8204       using CppType = VULKAN_HPP_NAMESPACE::Event;
8205 
8206       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eEvent;
8207       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8208         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eEvent;
8209 
8210     public:
8211 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)8212       Event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8213              VULKAN_HPP_NAMESPACE::EventCreateInfo const &                                   createInfo,
8214              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8215       {
8216         *this = device.createEvent( createInfo, allocator );
8217       }
8218 #  endif
8219 
Event(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkEvent event,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8220       Event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8221              VkEvent                                                                         event,
8222              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8223         : m_device( device )
8224         , m_event( event )
8225         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
8226         , m_dispatcher( device.getDispatcher() )
8227       {
8228       }
8229 
Event(std::nullptr_t)8230       Event( std::nullptr_t ) {}
8231 
~Event()8232       ~Event()
8233       {
8234         clear();
8235       }
8236 
8237       Event()                = delete;
8238       Event( Event const & ) = delete;
8239 
Event(Event && rhs)8240       Event( Event && rhs ) VULKAN_HPP_NOEXCEPT
8241         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
8242         , m_event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_event, {} ) )
8243         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
8244         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
8245       {
8246       }
8247 
8248       Event & operator=( Event const & ) = delete;
8249 
operator =(Event && rhs)8250       Event & operator=( Event && rhs ) VULKAN_HPP_NOEXCEPT
8251       {
8252         if ( this != &rhs )
8253         {
8254           std::swap( m_device, rhs.m_device );
8255           std::swap( m_event, rhs.m_event );
8256           std::swap( m_allocator, rhs.m_allocator );
8257           std::swap( m_dispatcher, rhs.m_dispatcher );
8258         }
8259         return *this;
8260       }
8261 
operator *() const8262       VULKAN_HPP_NAMESPACE::Event const & operator*() const VULKAN_HPP_NOEXCEPT
8263       {
8264         return m_event;
8265       }
8266 
operator VULKAN_HPP_NAMESPACE::Event() const8267       operator VULKAN_HPP_NAMESPACE::Event() const VULKAN_HPP_NOEXCEPT
8268       {
8269         return m_event;
8270       }
8271 
clear()8272       void clear() VULKAN_HPP_NOEXCEPT
8273       {
8274         if ( m_event )
8275         {
8276           getDispatcher()->vkDestroyEvent(
8277             static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8278         }
8279         m_device     = nullptr;
8280         m_event      = nullptr;
8281         m_allocator  = nullptr;
8282         m_dispatcher = nullptr;
8283       }
8284 
release()8285       VULKAN_HPP_NAMESPACE::Event release()
8286       {
8287         m_device     = nullptr;
8288         m_allocator  = nullptr;
8289         m_dispatcher = nullptr;
8290         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_event, nullptr );
8291       }
8292 
getDevice() const8293       VULKAN_HPP_NAMESPACE::Device getDevice() const
8294       {
8295         return m_device;
8296       }
8297 
getDispatcher() const8298       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8299       {
8300         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8301         return m_dispatcher;
8302       }
8303 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Event & rhs)8304       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Event & rhs ) VULKAN_HPP_NOEXCEPT
8305       {
8306         std::swap( m_device, rhs.m_device );
8307         std::swap( m_event, rhs.m_event );
8308         std::swap( m_allocator, rhs.m_allocator );
8309         std::swap( m_dispatcher, rhs.m_dispatcher );
8310       }
8311 
8312       //=== VK_VERSION_1_0 ===
8313 
8314       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
8315 
8316       void set() const;
8317 
8318       void reset() const;
8319 
8320     private:
8321       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
8322       VULKAN_HPP_NAMESPACE::Event                                               m_event      = {};
8323       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
8324       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8325     };
8326 
8327     class Fence
8328     {
8329     public:
8330       using CType   = VkFence;
8331       using CppType = VULKAN_HPP_NAMESPACE::Fence;
8332 
8333       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eFence;
8334       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8335         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFence;
8336 
8337     public:
8338 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)8339       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8340              VULKAN_HPP_NAMESPACE::FenceCreateInfo const &                                   createInfo,
8341              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8342       {
8343         *this = device.createFence( createInfo, allocator );
8344       }
8345 #  endif
8346 
8347 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)8348       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8349              VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const &                                deviceEventInfo,
8350              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8351       {
8352         *this = device.registerEventEXT( deviceEventInfo, allocator );
8353       }
8354 #  endif
8355 
8356 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)8357       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8358              VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const &             display,
8359              VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const &                               displayEventInfo,
8360              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8361       {
8362         *this = device.registerDisplayEventEXT( display, displayEventInfo, allocator );
8363       }
8364 #  endif
8365 
Fence(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkFence fence,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8366       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8367              VkFence                                                                         fence,
8368              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8369         : m_device( device )
8370         , m_fence( fence )
8371         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
8372         , m_dispatcher( device.getDispatcher() )
8373       {
8374       }
8375 
Fence(std::nullptr_t)8376       Fence( std::nullptr_t ) {}
8377 
~Fence()8378       ~Fence()
8379       {
8380         clear();
8381       }
8382 
8383       Fence()                = delete;
8384       Fence( Fence const & ) = delete;
8385 
Fence(Fence && rhs)8386       Fence( Fence && rhs ) VULKAN_HPP_NOEXCEPT
8387         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
8388         , m_fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_fence, {} ) )
8389         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
8390         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
8391       {
8392       }
8393 
8394       Fence & operator=( Fence const & ) = delete;
8395 
operator =(Fence && rhs)8396       Fence & operator=( Fence && rhs ) VULKAN_HPP_NOEXCEPT
8397       {
8398         if ( this != &rhs )
8399         {
8400           std::swap( m_device, rhs.m_device );
8401           std::swap( m_fence, rhs.m_fence );
8402           std::swap( m_allocator, rhs.m_allocator );
8403           std::swap( m_dispatcher, rhs.m_dispatcher );
8404         }
8405         return *this;
8406       }
8407 
operator *() const8408       VULKAN_HPP_NAMESPACE::Fence const & operator*() const VULKAN_HPP_NOEXCEPT
8409       {
8410         return m_fence;
8411       }
8412 
operator VULKAN_HPP_NAMESPACE::Fence() const8413       operator VULKAN_HPP_NAMESPACE::Fence() const VULKAN_HPP_NOEXCEPT
8414       {
8415         return m_fence;
8416       }
8417 
clear()8418       void clear() VULKAN_HPP_NOEXCEPT
8419       {
8420         if ( m_fence )
8421         {
8422           getDispatcher()->vkDestroyFence(
8423             static_cast<VkDevice>( m_device ), static_cast<VkFence>( m_fence ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8424         }
8425         m_device     = nullptr;
8426         m_fence      = nullptr;
8427         m_allocator  = nullptr;
8428         m_dispatcher = nullptr;
8429       }
8430 
release()8431       VULKAN_HPP_NAMESPACE::Fence release()
8432       {
8433         m_device     = nullptr;
8434         m_allocator  = nullptr;
8435         m_dispatcher = nullptr;
8436         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_fence, nullptr );
8437       }
8438 
getDevice() const8439       VULKAN_HPP_NAMESPACE::Device getDevice() const
8440       {
8441         return m_device;
8442       }
8443 
getDispatcher() const8444       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8445       {
8446         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8447         return m_dispatcher;
8448       }
8449 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence & rhs)8450       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence & rhs ) VULKAN_HPP_NOEXCEPT
8451       {
8452         std::swap( m_device, rhs.m_device );
8453         std::swap( m_fence, rhs.m_fence );
8454         std::swap( m_allocator, rhs.m_allocator );
8455         std::swap( m_dispatcher, rhs.m_dispatcher );
8456       }
8457 
8458       //=== VK_VERSION_1_0 ===
8459 
8460       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
8461 
8462     private:
8463       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
8464       VULKAN_HPP_NAMESPACE::Fence                                               m_fence      = {};
8465       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
8466       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8467     };
8468 
8469     class Framebuffer
8470     {
8471     public:
8472       using CType   = VkFramebuffer;
8473       using CppType = VULKAN_HPP_NAMESPACE::Framebuffer;
8474 
8475       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eFramebuffer;
8476       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8477         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFramebuffer;
8478 
8479     public:
8480 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)8481       Framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8482                    VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const &                             createInfo,
8483                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8484       {
8485         *this = device.createFramebuffer( createInfo, allocator );
8486       }
8487 #  endif
8488 
Framebuffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkFramebuffer framebuffer,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8489       Framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8490                    VkFramebuffer                                                                   framebuffer,
8491                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8492         : m_device( device )
8493         , m_framebuffer( framebuffer )
8494         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
8495         , m_dispatcher( device.getDispatcher() )
8496       {
8497       }
8498 
Framebuffer(std::nullptr_t)8499       Framebuffer( std::nullptr_t ) {}
8500 
~Framebuffer()8501       ~Framebuffer()
8502       {
8503         clear();
8504       }
8505 
8506       Framebuffer()                      = delete;
8507       Framebuffer( Framebuffer const & ) = delete;
8508 
Framebuffer(Framebuffer && rhs)8509       Framebuffer( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT
8510         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
8511         , m_framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_framebuffer, {} ) )
8512         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
8513         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
8514       {
8515       }
8516 
8517       Framebuffer & operator=( Framebuffer const & ) = delete;
8518 
operator =(Framebuffer && rhs)8519       Framebuffer & operator=( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT
8520       {
8521         if ( this != &rhs )
8522         {
8523           std::swap( m_device, rhs.m_device );
8524           std::swap( m_framebuffer, rhs.m_framebuffer );
8525           std::swap( m_allocator, rhs.m_allocator );
8526           std::swap( m_dispatcher, rhs.m_dispatcher );
8527         }
8528         return *this;
8529       }
8530 
operator *() const8531       VULKAN_HPP_NAMESPACE::Framebuffer const & operator*() const VULKAN_HPP_NOEXCEPT
8532       {
8533         return m_framebuffer;
8534       }
8535 
operator VULKAN_HPP_NAMESPACE::Framebuffer() const8536       operator VULKAN_HPP_NAMESPACE::Framebuffer() const VULKAN_HPP_NOEXCEPT
8537       {
8538         return m_framebuffer;
8539       }
8540 
clear()8541       void clear() VULKAN_HPP_NOEXCEPT
8542       {
8543         if ( m_framebuffer )
8544         {
8545           getDispatcher()->vkDestroyFramebuffer(
8546             static_cast<VkDevice>( m_device ), static_cast<VkFramebuffer>( m_framebuffer ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8547         }
8548         m_device      = nullptr;
8549         m_framebuffer = nullptr;
8550         m_allocator   = nullptr;
8551         m_dispatcher  = nullptr;
8552       }
8553 
release()8554       VULKAN_HPP_NAMESPACE::Framebuffer release()
8555       {
8556         m_device     = nullptr;
8557         m_allocator  = nullptr;
8558         m_dispatcher = nullptr;
8559         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_framebuffer, nullptr );
8560       }
8561 
getDevice() const8562       VULKAN_HPP_NAMESPACE::Device getDevice() const
8563       {
8564         return m_device;
8565       }
8566 
getDispatcher() const8567       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8568       {
8569         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8570         return m_dispatcher;
8571       }
8572 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Framebuffer & rhs)8573       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Framebuffer & rhs ) VULKAN_HPP_NOEXCEPT
8574       {
8575         std::swap( m_device, rhs.m_device );
8576         std::swap( m_framebuffer, rhs.m_framebuffer );
8577         std::swap( m_allocator, rhs.m_allocator );
8578         std::swap( m_dispatcher, rhs.m_dispatcher );
8579       }
8580 
8581       //=== VK_QCOM_tile_properties ===
8582 
8583       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::TilePropertiesQCOM> getTilePropertiesQCOM() const;
8584 
8585     private:
8586       VULKAN_HPP_NAMESPACE::Device                                              m_device      = {};
8587       VULKAN_HPP_NAMESPACE::Framebuffer                                         m_framebuffer = {};
8588       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator   = {};
8589       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher  = nullptr;
8590     };
8591 
8592     class Image
8593     {
8594     public:
8595       using CType   = VkImage;
8596       using CppType = VULKAN_HPP_NAMESPACE::Image;
8597 
8598       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eImage;
8599       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8600         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImage;
8601 
8602     public:
8603 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)8604       Image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8605              VULKAN_HPP_NAMESPACE::ImageCreateInfo const &                                   createInfo,
8606              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8607       {
8608         *this = device.createImage( createInfo, allocator );
8609       }
8610 #  endif
8611 
Image(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkImage image,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8612       Image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8613              VkImage                                                                         image,
8614              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8615         : m_device( device )
8616         , m_image( image )
8617         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
8618         , m_dispatcher( device.getDispatcher() )
8619       {
8620       }
8621 
Image(std::nullptr_t)8622       Image( std::nullptr_t ) {}
8623 
~Image()8624       ~Image()
8625       {
8626         clear();
8627       }
8628 
8629       Image()                = delete;
8630       Image( Image const & ) = delete;
8631 
Image(Image && rhs)8632       Image( Image && rhs ) VULKAN_HPP_NOEXCEPT
8633         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
8634         , m_image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_image, {} ) )
8635         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
8636         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
8637       {
8638       }
8639 
8640       Image & operator=( Image const & ) = delete;
8641 
operator =(Image && rhs)8642       Image & operator=( Image && rhs ) VULKAN_HPP_NOEXCEPT
8643       {
8644         if ( this != &rhs )
8645         {
8646           std::swap( m_device, rhs.m_device );
8647           std::swap( m_image, rhs.m_image );
8648           std::swap( m_allocator, rhs.m_allocator );
8649           std::swap( m_dispatcher, rhs.m_dispatcher );
8650         }
8651         return *this;
8652       }
8653 
operator *() const8654       VULKAN_HPP_NAMESPACE::Image const & operator*() const VULKAN_HPP_NOEXCEPT
8655       {
8656         return m_image;
8657       }
8658 
operator VULKAN_HPP_NAMESPACE::Image() const8659       operator VULKAN_HPP_NAMESPACE::Image() const VULKAN_HPP_NOEXCEPT
8660       {
8661         return m_image;
8662       }
8663 
clear()8664       void clear() VULKAN_HPP_NOEXCEPT
8665       {
8666         if ( m_image )
8667         {
8668           getDispatcher()->vkDestroyImage(
8669             static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8670         }
8671         m_device     = nullptr;
8672         m_image      = nullptr;
8673         m_allocator  = nullptr;
8674         m_dispatcher = nullptr;
8675       }
8676 
release()8677       VULKAN_HPP_NAMESPACE::Image release()
8678       {
8679         m_device     = nullptr;
8680         m_allocator  = nullptr;
8681         m_dispatcher = nullptr;
8682         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_image, nullptr );
8683       }
8684 
getDevice() const8685       VULKAN_HPP_NAMESPACE::Device getDevice() const
8686       {
8687         return m_device;
8688       }
8689 
getDispatcher() const8690       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8691       {
8692         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8693         return m_dispatcher;
8694       }
8695 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Image & rhs)8696       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Image & rhs ) VULKAN_HPP_NOEXCEPT
8697       {
8698         std::swap( m_device, rhs.m_device );
8699         std::swap( m_image, rhs.m_image );
8700         std::swap( m_allocator, rhs.m_allocator );
8701         std::swap( m_dispatcher, rhs.m_dispatcher );
8702       }
8703 
8704       //=== VK_VERSION_1_0 ===
8705 
8706       void bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const;
8707 
8708       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
8709 
8710       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements> getSparseMemoryRequirements() const;
8711 
8712       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout
8713                            getSubresourceLayout( const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT;
8714 
8715       //=== VK_EXT_image_drm_format_modifier ===
8716 
8717       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT getDrmFormatModifierPropertiesEXT() const;
8718 
8719       //=== VK_EXT_host_image_copy ===
8720 
8721       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR
8722                            getSubresourceLayout2EXT( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource ) const VULKAN_HPP_NOEXCEPT;
8723 
8724       template <typename X, typename Y, typename... Z>
8725       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
8726                            getSubresourceLayout2EXT( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource ) const VULKAN_HPP_NOEXCEPT;
8727 
8728       //=== VK_KHR_maintenance5 ===
8729 
8730       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR
8731                            getSubresourceLayout2KHR( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource ) const VULKAN_HPP_NOEXCEPT;
8732 
8733       template <typename X, typename Y, typename... Z>
8734       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
8735                            getSubresourceLayout2KHR( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource ) const VULKAN_HPP_NOEXCEPT;
8736 
8737     private:
8738       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
8739       VULKAN_HPP_NAMESPACE::Image                                               m_image      = {};
8740       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
8741       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8742     };
8743 
8744     class ImageView
8745     {
8746     public:
8747       using CType   = VkImageView;
8748       using CppType = VULKAN_HPP_NAMESPACE::ImageView;
8749 
8750       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eImageView;
8751       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8752         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImageView;
8753 
8754     public:
8755 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)8756       ImageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8757                  VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const &                               createInfo,
8758                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8759       {
8760         *this = device.createImageView( createInfo, allocator );
8761       }
8762 #  endif
8763 
ImageView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkImageView imageView,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8764       ImageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8765                  VkImageView                                                                     imageView,
8766                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8767         : m_device( device )
8768         , m_imageView( imageView )
8769         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
8770         , m_dispatcher( device.getDispatcher() )
8771       {
8772       }
8773 
ImageView(std::nullptr_t)8774       ImageView( std::nullptr_t ) {}
8775 
~ImageView()8776       ~ImageView()
8777       {
8778         clear();
8779       }
8780 
8781       ImageView()                    = delete;
8782       ImageView( ImageView const & ) = delete;
8783 
ImageView(ImageView && rhs)8784       ImageView( ImageView && rhs ) VULKAN_HPP_NOEXCEPT
8785         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
8786         , m_imageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_imageView, {} ) )
8787         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
8788         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
8789       {
8790       }
8791 
8792       ImageView & operator=( ImageView const & ) = delete;
8793 
operator =(ImageView && rhs)8794       ImageView & operator=( ImageView && rhs ) VULKAN_HPP_NOEXCEPT
8795       {
8796         if ( this != &rhs )
8797         {
8798           std::swap( m_device, rhs.m_device );
8799           std::swap( m_imageView, rhs.m_imageView );
8800           std::swap( m_allocator, rhs.m_allocator );
8801           std::swap( m_dispatcher, rhs.m_dispatcher );
8802         }
8803         return *this;
8804       }
8805 
operator *() const8806       VULKAN_HPP_NAMESPACE::ImageView const & operator*() const VULKAN_HPP_NOEXCEPT
8807       {
8808         return m_imageView;
8809       }
8810 
operator VULKAN_HPP_NAMESPACE::ImageView() const8811       operator VULKAN_HPP_NAMESPACE::ImageView() const VULKAN_HPP_NOEXCEPT
8812       {
8813         return m_imageView;
8814       }
8815 
clear()8816       void clear() VULKAN_HPP_NOEXCEPT
8817       {
8818         if ( m_imageView )
8819         {
8820           getDispatcher()->vkDestroyImageView(
8821             static_cast<VkDevice>( m_device ), static_cast<VkImageView>( m_imageView ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8822         }
8823         m_device     = nullptr;
8824         m_imageView  = nullptr;
8825         m_allocator  = nullptr;
8826         m_dispatcher = nullptr;
8827       }
8828 
release()8829       VULKAN_HPP_NAMESPACE::ImageView release()
8830       {
8831         m_device     = nullptr;
8832         m_allocator  = nullptr;
8833         m_dispatcher = nullptr;
8834         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_imageView, nullptr );
8835       }
8836 
getDevice() const8837       VULKAN_HPP_NAMESPACE::Device getDevice() const
8838       {
8839         return m_device;
8840       }
8841 
getDispatcher() const8842       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8843       {
8844         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8845         return m_dispatcher;
8846       }
8847 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ImageView & rhs)8848       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ImageView & rhs ) VULKAN_HPP_NOEXCEPT
8849       {
8850         std::swap( m_device, rhs.m_device );
8851         std::swap( m_imageView, rhs.m_imageView );
8852         std::swap( m_allocator, rhs.m_allocator );
8853         std::swap( m_dispatcher, rhs.m_dispatcher );
8854       }
8855 
8856       //=== VK_NVX_image_view_handle ===
8857 
8858       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX getAddressNVX() const;
8859 
8860     private:
8861       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
8862       VULKAN_HPP_NAMESPACE::ImageView                                           m_imageView  = {};
8863       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
8864       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
8865     };
8866 
8867     class IndirectCommandsLayoutNV
8868     {
8869     public:
8870       using CType   = VkIndirectCommandsLayoutNV;
8871       using CppType = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV;
8872 
8873       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutNV;
8874       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8875         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
8876 
8877     public:
8878 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)8879       IndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8880                                 VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const &                createInfo,
8881                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8882       {
8883         *this = device.createIndirectCommandsLayoutNV( createInfo, allocator );
8884       }
8885 #  endif
8886 
IndirectCommandsLayoutNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkIndirectCommandsLayoutNV indirectCommandsLayout,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8887       IndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8888                                 VkIndirectCommandsLayoutNV                                                      indirectCommandsLayout,
8889                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8890         : m_device( device )
8891         , m_indirectCommandsLayout( indirectCommandsLayout )
8892         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
8893         , m_dispatcher( device.getDispatcher() )
8894       {
8895       }
8896 
IndirectCommandsLayoutNV(std::nullptr_t)8897       IndirectCommandsLayoutNV( std::nullptr_t ) {}
8898 
~IndirectCommandsLayoutNV()8899       ~IndirectCommandsLayoutNV()
8900       {
8901         clear();
8902       }
8903 
8904       IndirectCommandsLayoutNV()                                   = delete;
8905       IndirectCommandsLayoutNV( IndirectCommandsLayoutNV const & ) = delete;
8906 
IndirectCommandsLayoutNV(IndirectCommandsLayoutNV && rhs)8907       IndirectCommandsLayoutNV( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT
8908         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
8909         , m_indirectCommandsLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_indirectCommandsLayout, {} ) )
8910         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
8911         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
8912       {
8913       }
8914 
8915       IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV const & ) = delete;
8916 
operator =(IndirectCommandsLayoutNV && rhs)8917       IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT
8918       {
8919         if ( this != &rhs )
8920         {
8921           std::swap( m_device, rhs.m_device );
8922           std::swap( m_indirectCommandsLayout, rhs.m_indirectCommandsLayout );
8923           std::swap( m_allocator, rhs.m_allocator );
8924           std::swap( m_dispatcher, rhs.m_dispatcher );
8925         }
8926         return *this;
8927       }
8928 
operator *() const8929       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & operator*() const VULKAN_HPP_NOEXCEPT
8930       {
8931         return m_indirectCommandsLayout;
8932       }
8933 
operator VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV() const8934       operator VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV() const VULKAN_HPP_NOEXCEPT
8935       {
8936         return m_indirectCommandsLayout;
8937       }
8938 
clear()8939       void clear() VULKAN_HPP_NOEXCEPT
8940       {
8941         if ( m_indirectCommandsLayout )
8942         {
8943           getDispatcher()->vkDestroyIndirectCommandsLayoutNV( static_cast<VkDevice>( m_device ),
8944                                                               static_cast<VkIndirectCommandsLayoutNV>( m_indirectCommandsLayout ),
8945                                                               reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
8946         }
8947         m_device                 = nullptr;
8948         m_indirectCommandsLayout = nullptr;
8949         m_allocator              = nullptr;
8950         m_dispatcher             = nullptr;
8951       }
8952 
release()8953       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV release()
8954       {
8955         m_device     = nullptr;
8956         m_allocator  = nullptr;
8957         m_dispatcher = nullptr;
8958         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_indirectCommandsLayout, nullptr );
8959       }
8960 
getDevice() const8961       VULKAN_HPP_NAMESPACE::Device getDevice() const
8962       {
8963         return m_device;
8964       }
8965 
getDispatcher() const8966       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8967       {
8968         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
8969         return m_dispatcher;
8970       }
8971 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV & rhs)8972       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV & rhs ) VULKAN_HPP_NOEXCEPT
8973       {
8974         std::swap( m_device, rhs.m_device );
8975         std::swap( m_indirectCommandsLayout, rhs.m_indirectCommandsLayout );
8976         std::swap( m_allocator, rhs.m_allocator );
8977         std::swap( m_dispatcher, rhs.m_dispatcher );
8978       }
8979 
8980     private:
8981       VULKAN_HPP_NAMESPACE::Device                                              m_device                 = {};
8982       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV                            m_indirectCommandsLayout = {};
8983       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator              = {};
8984       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher             = nullptr;
8985     };
8986 
8987     class MicromapEXT
8988     {
8989     public:
8990       using CType   = VkMicromapEXT;
8991       using CppType = VULKAN_HPP_NAMESPACE::MicromapEXT;
8992 
8993       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eMicromapEXT;
8994       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8995         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
8996 
8997     public:
8998 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
MicromapEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8999       MicromapEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9000                    VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const &                             createInfo,
9001                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9002       {
9003         *this = device.createMicromapEXT( createInfo, allocator );
9004       }
9005 #  endif
9006 
MicromapEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkMicromapEXT micromap,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9007       MicromapEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9008                    VkMicromapEXT                                                                   micromap,
9009                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9010         : m_device( device )
9011         , m_micromap( micromap )
9012         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
9013         , m_dispatcher( device.getDispatcher() )
9014       {
9015       }
9016 
MicromapEXT(std::nullptr_t)9017       MicromapEXT( std::nullptr_t ) {}
9018 
~MicromapEXT()9019       ~MicromapEXT()
9020       {
9021         clear();
9022       }
9023 
9024       MicromapEXT()                      = delete;
9025       MicromapEXT( MicromapEXT const & ) = delete;
9026 
MicromapEXT(MicromapEXT && rhs)9027       MicromapEXT( MicromapEXT && rhs ) VULKAN_HPP_NOEXCEPT
9028         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
9029         , m_micromap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_micromap, {} ) )
9030         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
9031         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
9032       {
9033       }
9034 
9035       MicromapEXT & operator=( MicromapEXT const & ) = delete;
9036 
operator =(MicromapEXT && rhs)9037       MicromapEXT & operator=( MicromapEXT && rhs ) VULKAN_HPP_NOEXCEPT
9038       {
9039         if ( this != &rhs )
9040         {
9041           std::swap( m_device, rhs.m_device );
9042           std::swap( m_micromap, rhs.m_micromap );
9043           std::swap( m_allocator, rhs.m_allocator );
9044           std::swap( m_dispatcher, rhs.m_dispatcher );
9045         }
9046         return *this;
9047       }
9048 
operator *() const9049       VULKAN_HPP_NAMESPACE::MicromapEXT const & operator*() const VULKAN_HPP_NOEXCEPT
9050       {
9051         return m_micromap;
9052       }
9053 
operator VULKAN_HPP_NAMESPACE::MicromapEXT() const9054       operator VULKAN_HPP_NAMESPACE::MicromapEXT() const VULKAN_HPP_NOEXCEPT
9055       {
9056         return m_micromap;
9057       }
9058 
clear()9059       void clear() VULKAN_HPP_NOEXCEPT
9060       {
9061         if ( m_micromap )
9062         {
9063           getDispatcher()->vkDestroyMicromapEXT(
9064             static_cast<VkDevice>( m_device ), static_cast<VkMicromapEXT>( m_micromap ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9065         }
9066         m_device     = nullptr;
9067         m_micromap   = nullptr;
9068         m_allocator  = nullptr;
9069         m_dispatcher = nullptr;
9070       }
9071 
release()9072       VULKAN_HPP_NAMESPACE::MicromapEXT release()
9073       {
9074         m_device     = nullptr;
9075         m_allocator  = nullptr;
9076         m_dispatcher = nullptr;
9077         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_micromap, nullptr );
9078       }
9079 
getDevice() const9080       VULKAN_HPP_NAMESPACE::Device getDevice() const
9081       {
9082         return m_device;
9083       }
9084 
getDispatcher() const9085       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9086       {
9087         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9088         return m_dispatcher;
9089       }
9090 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::MicromapEXT & rhs)9091       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::MicromapEXT & rhs ) VULKAN_HPP_NOEXCEPT
9092       {
9093         std::swap( m_device, rhs.m_device );
9094         std::swap( m_micromap, rhs.m_micromap );
9095         std::swap( m_allocator, rhs.m_allocator );
9096         std::swap( m_dispatcher, rhs.m_dispatcher );
9097       }
9098 
9099     private:
9100       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
9101       VULKAN_HPP_NAMESPACE::MicromapEXT                                         m_micromap   = {};
9102       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
9103       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
9104     };
9105 
9106     class OpticalFlowSessionNV
9107     {
9108     public:
9109       using CType   = VkOpticalFlowSessionNV;
9110       using CppType = VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV;
9111 
9112       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eOpticalFlowSessionNV;
9113       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
9114         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
9115 
9116     public:
9117 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
OpticalFlowSessionNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9118       OpticalFlowSessionNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9119                             VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const &                    createInfo,
9120                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9121       {
9122         *this = device.createOpticalFlowSessionNV( createInfo, allocator );
9123       }
9124 #  endif
9125 
OpticalFlowSessionNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkOpticalFlowSessionNV session,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9126       OpticalFlowSessionNV( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9127                             VkOpticalFlowSessionNV                                                          session,
9128                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9129         : m_device( device )
9130         , m_session( session )
9131         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
9132         , m_dispatcher( device.getDispatcher() )
9133       {
9134       }
9135 
OpticalFlowSessionNV(std::nullptr_t)9136       OpticalFlowSessionNV( std::nullptr_t ) {}
9137 
~OpticalFlowSessionNV()9138       ~OpticalFlowSessionNV()
9139       {
9140         clear();
9141       }
9142 
9143       OpticalFlowSessionNV()                               = delete;
9144       OpticalFlowSessionNV( OpticalFlowSessionNV const & ) = delete;
9145 
OpticalFlowSessionNV(OpticalFlowSessionNV && rhs)9146       OpticalFlowSessionNV( OpticalFlowSessionNV && rhs ) VULKAN_HPP_NOEXCEPT
9147         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
9148         , m_session( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_session, {} ) )
9149         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
9150         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
9151       {
9152       }
9153 
9154       OpticalFlowSessionNV & operator=( OpticalFlowSessionNV const & ) = delete;
9155 
operator =(OpticalFlowSessionNV && rhs)9156       OpticalFlowSessionNV & operator=( OpticalFlowSessionNV && rhs ) VULKAN_HPP_NOEXCEPT
9157       {
9158         if ( this != &rhs )
9159         {
9160           std::swap( m_device, rhs.m_device );
9161           std::swap( m_session, rhs.m_session );
9162           std::swap( m_allocator, rhs.m_allocator );
9163           std::swap( m_dispatcher, rhs.m_dispatcher );
9164         }
9165         return *this;
9166       }
9167 
operator *() const9168       VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV const & operator*() const VULKAN_HPP_NOEXCEPT
9169       {
9170         return m_session;
9171       }
9172 
operator VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV() const9173       operator VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV() const VULKAN_HPP_NOEXCEPT
9174       {
9175         return m_session;
9176       }
9177 
clear()9178       void clear() VULKAN_HPP_NOEXCEPT
9179       {
9180         if ( m_session )
9181         {
9182           getDispatcher()->vkDestroyOpticalFlowSessionNV( static_cast<VkDevice>( m_device ),
9183                                                           static_cast<VkOpticalFlowSessionNV>( m_session ),
9184                                                           reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9185         }
9186         m_device     = nullptr;
9187         m_session    = nullptr;
9188         m_allocator  = nullptr;
9189         m_dispatcher = nullptr;
9190       }
9191 
release()9192       VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV release()
9193       {
9194         m_device     = nullptr;
9195         m_allocator  = nullptr;
9196         m_dispatcher = nullptr;
9197         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_session, nullptr );
9198       }
9199 
getDevice() const9200       VULKAN_HPP_NAMESPACE::Device getDevice() const
9201       {
9202         return m_device;
9203       }
9204 
getDispatcher() const9205       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9206       {
9207         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9208         return m_dispatcher;
9209       }
9210 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::OpticalFlowSessionNV & rhs)9211       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::OpticalFlowSessionNV & rhs ) VULKAN_HPP_NOEXCEPT
9212       {
9213         std::swap( m_device, rhs.m_device );
9214         std::swap( m_session, rhs.m_session );
9215         std::swap( m_allocator, rhs.m_allocator );
9216         std::swap( m_dispatcher, rhs.m_dispatcher );
9217       }
9218 
9219       //=== VK_NV_optical_flow ===
9220 
9221       void bindImage( VULKAN_HPP_NAMESPACE::OpticalFlowSessionBindingPointNV bindingPoint,
9222                       VULKAN_HPP_NAMESPACE::ImageView                        view,
9223                       VULKAN_HPP_NAMESPACE::ImageLayout                      layout ) const;
9224 
9225     private:
9226       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
9227       VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV                                m_session    = {};
9228       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
9229       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
9230     };
9231 
9232     class PerformanceConfigurationINTEL
9233     {
9234     public:
9235       using CType   = VkPerformanceConfigurationINTEL;
9236       using CppType = VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL;
9237 
9238       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePerformanceConfigurationINTEL;
9239       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
9240         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
9241 
9242     public:
9243 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
PerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo)9244       PerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &        device,
9245                                      VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo )
9246       {
9247         *this = device.acquirePerformanceConfigurationINTEL( acquireInfo );
9248       }
9249 #  endif
9250 
PerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPerformanceConfigurationINTEL configuration)9251       PerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, VkPerformanceConfigurationINTEL configuration )
9252         : m_device( device ), m_configuration( configuration ), m_dispatcher( device.getDispatcher() )
9253       {
9254       }
9255 
PerformanceConfigurationINTEL(std::nullptr_t)9256       PerformanceConfigurationINTEL( std::nullptr_t ) {}
9257 
~PerformanceConfigurationINTEL()9258       ~PerformanceConfigurationINTEL()
9259       {
9260         clear();
9261       }
9262 
9263       PerformanceConfigurationINTEL()                                        = delete;
9264       PerformanceConfigurationINTEL( PerformanceConfigurationINTEL const & ) = delete;
9265 
PerformanceConfigurationINTEL(PerformanceConfigurationINTEL && rhs)9266       PerformanceConfigurationINTEL( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT
9267         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
9268         , m_configuration( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_configuration, {} ) )
9269         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
9270       {
9271       }
9272 
9273       PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL const & ) = delete;
9274 
operator =(PerformanceConfigurationINTEL && rhs)9275       PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT
9276       {
9277         if ( this != &rhs )
9278         {
9279           std::swap( m_device, rhs.m_device );
9280           std::swap( m_configuration, rhs.m_configuration );
9281           std::swap( m_dispatcher, rhs.m_dispatcher );
9282         }
9283         return *this;
9284       }
9285 
operator *() const9286       VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & operator*() const VULKAN_HPP_NOEXCEPT
9287       {
9288         return m_configuration;
9289       }
9290 
operator VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL() const9291       operator VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL() const VULKAN_HPP_NOEXCEPT
9292       {
9293         return m_configuration;
9294       }
9295 
clear()9296       void clear() VULKAN_HPP_NOEXCEPT
9297       {
9298         if ( m_configuration )
9299         {
9300           getDispatcher()->vkReleasePerformanceConfigurationINTEL( static_cast<VkDevice>( m_device ),
9301                                                                    static_cast<VkPerformanceConfigurationINTEL>( m_configuration ) );
9302         }
9303         m_device        = nullptr;
9304         m_configuration = nullptr;
9305         m_dispatcher    = nullptr;
9306       }
9307 
release()9308       VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL release()
9309       {
9310         m_device     = nullptr;
9311         m_dispatcher = nullptr;
9312         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_configuration, nullptr );
9313       }
9314 
getDevice() const9315       VULKAN_HPP_NAMESPACE::Device getDevice() const
9316       {
9317         return m_device;
9318       }
9319 
getDispatcher() const9320       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9321       {
9322         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9323         return m_dispatcher;
9324       }
9325 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PerformanceConfigurationINTEL & rhs)9326       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PerformanceConfigurationINTEL & rhs ) VULKAN_HPP_NOEXCEPT
9327       {
9328         std::swap( m_device, rhs.m_device );
9329         std::swap( m_configuration, rhs.m_configuration );
9330         std::swap( m_dispatcher, rhs.m_dispatcher );
9331       }
9332 
9333     private:
9334       VULKAN_HPP_NAMESPACE::Device                                              m_device        = {};
9335       VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL                       m_configuration = {};
9336       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher    = nullptr;
9337     };
9338 
9339     class PipelineCache
9340     {
9341     public:
9342       using CType   = VkPipelineCache;
9343       using CppType = VULKAN_HPP_NAMESPACE::PipelineCache;
9344 
9345       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePipelineCache;
9346       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
9347         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineCache;
9348 
9349     public:
9350 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9351       PipelineCache( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9352                      VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const &                           createInfo,
9353                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9354       {
9355         *this = device.createPipelineCache( createInfo, allocator );
9356       }
9357 #  endif
9358 
PipelineCache(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipelineCache pipelineCache,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9359       PipelineCache( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9360                      VkPipelineCache                                                                 pipelineCache,
9361                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9362         : m_device( device )
9363         , m_pipelineCache( pipelineCache )
9364         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
9365         , m_dispatcher( device.getDispatcher() )
9366       {
9367       }
9368 
PipelineCache(std::nullptr_t)9369       PipelineCache( std::nullptr_t ) {}
9370 
~PipelineCache()9371       ~PipelineCache()
9372       {
9373         clear();
9374       }
9375 
9376       PipelineCache()                        = delete;
9377       PipelineCache( PipelineCache const & ) = delete;
9378 
PipelineCache(PipelineCache && rhs)9379       PipelineCache( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT
9380         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
9381         , m_pipelineCache( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineCache, {} ) )
9382         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
9383         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
9384       {
9385       }
9386 
9387       PipelineCache & operator=( PipelineCache const & ) = delete;
9388 
operator =(PipelineCache && rhs)9389       PipelineCache & operator=( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT
9390       {
9391         if ( this != &rhs )
9392         {
9393           std::swap( m_device, rhs.m_device );
9394           std::swap( m_pipelineCache, rhs.m_pipelineCache );
9395           std::swap( m_allocator, rhs.m_allocator );
9396           std::swap( m_dispatcher, rhs.m_dispatcher );
9397         }
9398         return *this;
9399       }
9400 
operator *() const9401       VULKAN_HPP_NAMESPACE::PipelineCache const & operator*() const VULKAN_HPP_NOEXCEPT
9402       {
9403         return m_pipelineCache;
9404       }
9405 
operator VULKAN_HPP_NAMESPACE::PipelineCache() const9406       operator VULKAN_HPP_NAMESPACE::PipelineCache() const VULKAN_HPP_NOEXCEPT
9407       {
9408         return m_pipelineCache;
9409       }
9410 
clear()9411       void clear() VULKAN_HPP_NOEXCEPT
9412       {
9413         if ( m_pipelineCache )
9414         {
9415           getDispatcher()->vkDestroyPipelineCache( static_cast<VkDevice>( m_device ),
9416                                                    static_cast<VkPipelineCache>( m_pipelineCache ),
9417                                                    reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9418         }
9419         m_device        = nullptr;
9420         m_pipelineCache = nullptr;
9421         m_allocator     = nullptr;
9422         m_dispatcher    = nullptr;
9423       }
9424 
release()9425       VULKAN_HPP_NAMESPACE::PipelineCache release()
9426       {
9427         m_device     = nullptr;
9428         m_allocator  = nullptr;
9429         m_dispatcher = nullptr;
9430         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_pipelineCache, nullptr );
9431       }
9432 
getDevice() const9433       VULKAN_HPP_NAMESPACE::Device getDevice() const
9434       {
9435         return m_device;
9436       }
9437 
getDispatcher() const9438       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9439       {
9440         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9441         return m_dispatcher;
9442       }
9443 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache & rhs)9444       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache & rhs ) VULKAN_HPP_NOEXCEPT
9445       {
9446         std::swap( m_device, rhs.m_device );
9447         std::swap( m_pipelineCache, rhs.m_pipelineCache );
9448         std::swap( m_allocator, rhs.m_allocator );
9449         std::swap( m_dispatcher, rhs.m_dispatcher );
9450       }
9451 
9452       //=== VK_VERSION_1_0 ===
9453 
9454       VULKAN_HPP_NODISCARD std::vector<uint8_t> getData() const;
9455 
9456       void merge( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches ) const;
9457 
9458     private:
9459       VULKAN_HPP_NAMESPACE::Device                                              m_device        = {};
9460       VULKAN_HPP_NAMESPACE::PipelineCache                                       m_pipelineCache = {};
9461       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator     = {};
9462       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher    = nullptr;
9463     };
9464 
9465     class Pipeline
9466     {
9467     public:
9468       using CType   = VkPipeline;
9469       using CppType = VULKAN_HPP_NAMESPACE::Pipeline;
9470 
9471       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePipeline;
9472       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
9473         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipeline;
9474 
9475     public:
9476 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9477       Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                              device,
9478                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
9479                 VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const &                                                      createInfo,
9480                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr )
9481       {
9482         *this = device.createComputePipeline( pipelineCache, createInfo, allocator );
9483       }
9484 #  endif
9485 
9486 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
9487 #    if defined( VK_ENABLE_BETA_EXTENSIONS )
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::ExecutionGraphPipelineCreateInfoAMDX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9488       Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                              device,
9489                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
9490                 VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX const &                                           createInfo,
9491                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr )
9492       {
9493         *this = device.createExecutionGraphPipelineAMDX( pipelineCache, createInfo, allocator );
9494       }
9495 #    endif /*VK_ENABLE_BETA_EXTENSIONS*/
9496 #  endif
9497 
9498 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9499       Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                              device,
9500                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
9501                 VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const &                                                     createInfo,
9502                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr )
9503       {
9504         *this = device.createGraphicsPipeline( pipelineCache, createInfo, allocator );
9505       }
9506 #  endif
9507 
9508 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9509       Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                                     device,
9510                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
9511                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &        pipelineCache,
9512                 VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const &                                                       createInfo,
9513                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                                     allocator = nullptr )
9514       {
9515         *this = device.createRayTracingPipelineKHR( deferredOperation, pipelineCache, createInfo, allocator );
9516       }
9517 #  endif
9518 
9519 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9520       Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                              device,
9521                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
9522                 VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const &                                                 createInfo,
9523                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr )
9524       {
9525         *this = device.createRayTracingPipelineNV( pipelineCache, createInfo, allocator );
9526       }
9527 #  endif
9528 
Pipeline(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipeline pipeline,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr,VULKAN_HPP_NAMESPACE::Result successCode=VULKAN_HPP_NAMESPACE::Result::eSuccess)9529       Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9530                 VkPipeline                                                                      pipeline,
9531                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator   = nullptr,
9532                 VULKAN_HPP_NAMESPACE::Result                                                    successCode = VULKAN_HPP_NAMESPACE::Result::eSuccess )
9533         : m_device( device )
9534         , m_pipeline( pipeline )
9535         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
9536         , m_constructorSuccessCode( successCode )
9537         , m_dispatcher( device.getDispatcher() )
9538       {
9539       }
9540 
Pipeline(std::nullptr_t)9541       Pipeline( std::nullptr_t ) {}
9542 
~Pipeline()9543       ~Pipeline()
9544       {
9545         clear();
9546       }
9547 
9548       Pipeline()                   = delete;
9549       Pipeline( Pipeline const & ) = delete;
9550 
Pipeline(Pipeline && rhs)9551       Pipeline( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT
9552         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
9553         , m_pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipeline, {} ) )
9554         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
9555         , m_constructorSuccessCode( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_constructorSuccessCode, {} ) )
9556         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
9557       {
9558       }
9559 
9560       Pipeline & operator=( Pipeline const & ) = delete;
9561 
operator =(Pipeline && rhs)9562       Pipeline & operator=( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT
9563       {
9564         if ( this != &rhs )
9565         {
9566           std::swap( m_device, rhs.m_device );
9567           std::swap( m_pipeline, rhs.m_pipeline );
9568           std::swap( m_allocator, rhs.m_allocator );
9569           std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
9570           std::swap( m_dispatcher, rhs.m_dispatcher );
9571         }
9572         return *this;
9573       }
9574 
operator *() const9575       VULKAN_HPP_NAMESPACE::Pipeline const & operator*() const VULKAN_HPP_NOEXCEPT
9576       {
9577         return m_pipeline;
9578       }
9579 
operator VULKAN_HPP_NAMESPACE::Pipeline() const9580       operator VULKAN_HPP_NAMESPACE::Pipeline() const VULKAN_HPP_NOEXCEPT
9581       {
9582         return m_pipeline;
9583       }
9584 
clear()9585       void clear() VULKAN_HPP_NOEXCEPT
9586       {
9587         if ( m_pipeline )
9588         {
9589           getDispatcher()->vkDestroyPipeline(
9590             static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9591         }
9592         m_device                 = nullptr;
9593         m_pipeline               = nullptr;
9594         m_allocator              = nullptr;
9595         m_constructorSuccessCode = VULKAN_HPP_NAMESPACE::Result::eErrorUnknown;
9596         m_dispatcher             = nullptr;
9597       }
9598 
release()9599       VULKAN_HPP_NAMESPACE::Pipeline release()
9600       {
9601         m_device                 = nullptr;
9602         m_allocator              = nullptr;
9603         m_constructorSuccessCode = VULKAN_HPP_NAMESPACE::Result::eErrorUnknown;
9604         m_dispatcher             = nullptr;
9605         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_pipeline, nullptr );
9606       }
9607 
getConstructorSuccessCode() const9608       VULKAN_HPP_NAMESPACE::Result getConstructorSuccessCode() const
9609       {
9610         return m_constructorSuccessCode;
9611       }
9612 
getDevice() const9613       VULKAN_HPP_NAMESPACE::Device getDevice() const
9614       {
9615         return m_device;
9616       }
9617 
getDispatcher() const9618       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9619       {
9620         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9621         return m_dispatcher;
9622       }
9623 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline & rhs)9624       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline & rhs ) VULKAN_HPP_NOEXCEPT
9625       {
9626         std::swap( m_device, rhs.m_device );
9627         std::swap( m_pipeline, rhs.m_pipeline );
9628         std::swap( m_allocator, rhs.m_allocator );
9629         std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
9630         std::swap( m_dispatcher, rhs.m_dispatcher );
9631       }
9632 
9633       //=== VK_AMD_shader_info ===
9634 
9635       VULKAN_HPP_NODISCARD std::vector<uint8_t> getShaderInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,
9636                                                                   VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD   infoType ) const;
9637 
9638 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
9639       //=== VK_AMDX_shader_enqueue ===
9640 
9641       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX getExecutionGraphScratchSizeAMDX() const;
9642 
9643       VULKAN_HPP_NODISCARD uint32_t getExecutionGraphNodeIndexAMDX( const VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX & nodeInfo ) const;
9644 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
9645 
9646       //=== VK_KHR_ray_tracing_pipeline ===
9647 
9648       template <typename DataType>
9649       VULKAN_HPP_NODISCARD std::vector<DataType> getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
9650 
9651       template <typename DataType>
9652       VULKAN_HPP_NODISCARD DataType getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const;
9653 
9654       template <typename DataType>
9655       VULKAN_HPP_NODISCARD std::vector<DataType>
9656                            getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
9657 
9658       template <typename DataType>
9659       VULKAN_HPP_NODISCARD DataType getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const;
9660 
9661       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize
9662         getRayTracingShaderGroupStackSizeKHR( uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT;
9663 
9664       //=== VK_NV_ray_tracing ===
9665 
9666       template <typename DataType>
9667       VULKAN_HPP_NODISCARD std::vector<DataType> getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
9668 
9669       template <typename DataType>
9670       VULKAN_HPP_NODISCARD DataType getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const;
9671 
9672       void compileDeferredNV( uint32_t shader ) const;
9673 
9674     private:
9675       VULKAN_HPP_NAMESPACE::Device                                              m_device                 = {};
9676       VULKAN_HPP_NAMESPACE::Pipeline                                            m_pipeline               = {};
9677       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator              = {};
9678       VULKAN_HPP_NAMESPACE::Result                                              m_constructorSuccessCode = VULKAN_HPP_NAMESPACE::Result::eErrorUnknown;
9679       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher             = nullptr;
9680     };
9681 
9682     class Pipelines : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>
9683     {
9684     public:
9685 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9686       Pipelines( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                              device,
9687                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
9688                  VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo> const &                    createInfos,
9689                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr )
9690       {
9691         *this = device.createComputePipelines( pipelineCache, createInfos, allocator );
9692       }
9693 #  endif
9694 
9695 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
9696 #    if defined( VK_ENABLE_BETA_EXTENSIONS )
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::ExecutionGraphPipelineCreateInfoAMDX> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9697       Pipelines( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                              device,
9698                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
9699                  VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX> const &         createInfos,
9700                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr )
9701       {
9702         *this = device.createExecutionGraphPipelinesAMDX( pipelineCache, createInfos, allocator );
9703       }
9704 #    endif /*VK_ENABLE_BETA_EXTENSIONS*/
9705 #  endif
9706 
9707 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9708       Pipelines( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                              device,
9709                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
9710                  VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo> const &                   createInfos,
9711                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr )
9712       {
9713         *this = device.createGraphicsPipelines( pipelineCache, createInfos, allocator );
9714       }
9715 #  endif
9716 
9717 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9718       Pipelines( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                                     device,
9719                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
9720                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &        pipelineCache,
9721                  VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR> const &                     createInfos,
9722                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                                     allocator = nullptr )
9723       {
9724         *this = device.createRayTracingPipelinesKHR( deferredOperation, pipelineCache, createInfos, allocator );
9725       }
9726 #  endif
9727 
9728 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9729       Pipelines( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                                              device,
9730                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
9731                  VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV> const &               createInfos,
9732                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator = nullptr )
9733       {
9734         *this = device.createRayTracingPipelinesNV( pipelineCache, createInfos, allocator );
9735       }
9736 #  endif
9737 
Pipelines(std::nullptr_t)9738       Pipelines( std::nullptr_t ) {}
9739 
9740       Pipelines()                                = delete;
9741       Pipelines( Pipelines const & )             = delete;
9742       Pipelines( Pipelines && rhs )              = default;
9743       Pipelines & operator=( Pipelines const & ) = delete;
9744       Pipelines & operator=( Pipelines && rhs )  = default;
9745 
9746     private:
Pipelines(std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline> && rhs)9747       Pipelines( std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline> && rhs )
9748       {
9749         std::swap( *this, rhs );
9750       }
9751     };
9752 
9753     class PipelineLayout
9754     {
9755     public:
9756       using CType   = VkPipelineLayout;
9757       using CppType = VULKAN_HPP_NAMESPACE::PipelineLayout;
9758 
9759       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePipelineLayout;
9760       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
9761         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineLayout;
9762 
9763     public:
9764 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)9765       PipelineLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9766                       VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const &                          createInfo,
9767                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9768       {
9769         *this = device.createPipelineLayout( createInfo, allocator );
9770       }
9771 #  endif
9772 
PipelineLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipelineLayout pipelineLayout,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9773       PipelineLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9774                       VkPipelineLayout                                                                pipelineLayout,
9775                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9776         : m_device( device )
9777         , m_pipelineLayout( pipelineLayout )
9778         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
9779         , m_dispatcher( device.getDispatcher() )
9780       {
9781       }
9782 
PipelineLayout(std::nullptr_t)9783       PipelineLayout( std::nullptr_t ) {}
9784 
~PipelineLayout()9785       ~PipelineLayout()
9786       {
9787         clear();
9788       }
9789 
9790       PipelineLayout()                         = delete;
9791       PipelineLayout( PipelineLayout const & ) = delete;
9792 
PipelineLayout(PipelineLayout && rhs)9793       PipelineLayout( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT
9794         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
9795         , m_pipelineLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineLayout, {} ) )
9796         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
9797         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
9798       {
9799       }
9800 
9801       PipelineLayout & operator=( PipelineLayout const & ) = delete;
9802 
operator =(PipelineLayout && rhs)9803       PipelineLayout & operator=( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT
9804       {
9805         if ( this != &rhs )
9806         {
9807           std::swap( m_device, rhs.m_device );
9808           std::swap( m_pipelineLayout, rhs.m_pipelineLayout );
9809           std::swap( m_allocator, rhs.m_allocator );
9810           std::swap( m_dispatcher, rhs.m_dispatcher );
9811         }
9812         return *this;
9813       }
9814 
operator *() const9815       VULKAN_HPP_NAMESPACE::PipelineLayout const & operator*() const VULKAN_HPP_NOEXCEPT
9816       {
9817         return m_pipelineLayout;
9818       }
9819 
operator VULKAN_HPP_NAMESPACE::PipelineLayout() const9820       operator VULKAN_HPP_NAMESPACE::PipelineLayout() const VULKAN_HPP_NOEXCEPT
9821       {
9822         return m_pipelineLayout;
9823       }
9824 
clear()9825       void clear() VULKAN_HPP_NOEXCEPT
9826       {
9827         if ( m_pipelineLayout )
9828         {
9829           getDispatcher()->vkDestroyPipelineLayout( static_cast<VkDevice>( m_device ),
9830                                                     static_cast<VkPipelineLayout>( m_pipelineLayout ),
9831                                                     reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9832         }
9833         m_device         = nullptr;
9834         m_pipelineLayout = nullptr;
9835         m_allocator      = nullptr;
9836         m_dispatcher     = nullptr;
9837       }
9838 
release()9839       VULKAN_HPP_NAMESPACE::PipelineLayout release()
9840       {
9841         m_device     = nullptr;
9842         m_allocator  = nullptr;
9843         m_dispatcher = nullptr;
9844         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_pipelineLayout, nullptr );
9845       }
9846 
getDevice() const9847       VULKAN_HPP_NAMESPACE::Device getDevice() const
9848       {
9849         return m_device;
9850       }
9851 
getDispatcher() const9852       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9853       {
9854         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9855         return m_dispatcher;
9856       }
9857 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineLayout & rhs)9858       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineLayout & rhs ) VULKAN_HPP_NOEXCEPT
9859       {
9860         std::swap( m_device, rhs.m_device );
9861         std::swap( m_pipelineLayout, rhs.m_pipelineLayout );
9862         std::swap( m_allocator, rhs.m_allocator );
9863         std::swap( m_dispatcher, rhs.m_dispatcher );
9864       }
9865 
9866     private:
9867       VULKAN_HPP_NAMESPACE::Device                                              m_device         = {};
9868       VULKAN_HPP_NAMESPACE::PipelineLayout                                      m_pipelineLayout = {};
9869       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator      = {};
9870       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher     = nullptr;
9871     };
9872 
9873     class PrivateDataSlot
9874     {
9875     public:
9876       using CType   = VkPrivateDataSlot;
9877       using CppType = VULKAN_HPP_NAMESPACE::PrivateDataSlot;
9878 
9879       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePrivateDataSlot;
9880       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
9881         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
9882 
9883     public:
9884 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
PrivateDataSlot(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9885       PrivateDataSlot( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9886                        VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const &                         createInfo,
9887                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9888       {
9889         *this = device.createPrivateDataSlot( createInfo, allocator );
9890       }
9891 #  endif
9892 
PrivateDataSlot(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPrivateDataSlot privateDataSlot,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)9893       PrivateDataSlot( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
9894                        VkPrivateDataSlot                                                               privateDataSlot,
9895                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
9896         : m_device( device )
9897         , m_privateDataSlot( privateDataSlot )
9898         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
9899         , m_dispatcher( device.getDispatcher() )
9900       {
9901       }
9902 
PrivateDataSlot(std::nullptr_t)9903       PrivateDataSlot( std::nullptr_t ) {}
9904 
~PrivateDataSlot()9905       ~PrivateDataSlot()
9906       {
9907         clear();
9908       }
9909 
9910       PrivateDataSlot()                          = delete;
9911       PrivateDataSlot( PrivateDataSlot const & ) = delete;
9912 
PrivateDataSlot(PrivateDataSlot && rhs)9913       PrivateDataSlot( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT
9914         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
9915         , m_privateDataSlot( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_privateDataSlot, {} ) )
9916         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
9917         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
9918       {
9919       }
9920 
9921       PrivateDataSlot & operator=( PrivateDataSlot const & ) = delete;
9922 
operator =(PrivateDataSlot && rhs)9923       PrivateDataSlot & operator=( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT
9924       {
9925         if ( this != &rhs )
9926         {
9927           std::swap( m_device, rhs.m_device );
9928           std::swap( m_privateDataSlot, rhs.m_privateDataSlot );
9929           std::swap( m_allocator, rhs.m_allocator );
9930           std::swap( m_dispatcher, rhs.m_dispatcher );
9931         }
9932         return *this;
9933       }
9934 
operator *() const9935       VULKAN_HPP_NAMESPACE::PrivateDataSlot const & operator*() const VULKAN_HPP_NOEXCEPT
9936       {
9937         return m_privateDataSlot;
9938       }
9939 
operator VULKAN_HPP_NAMESPACE::PrivateDataSlot() const9940       operator VULKAN_HPP_NAMESPACE::PrivateDataSlot() const VULKAN_HPP_NOEXCEPT
9941       {
9942         return m_privateDataSlot;
9943       }
9944 
clear()9945       void clear() VULKAN_HPP_NOEXCEPT
9946       {
9947         if ( m_privateDataSlot )
9948         {
9949           getDispatcher()->vkDestroyPrivateDataSlot( static_cast<VkDevice>( m_device ),
9950                                                      static_cast<VkPrivateDataSlot>( m_privateDataSlot ),
9951                                                      reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
9952         }
9953         m_device          = nullptr;
9954         m_privateDataSlot = nullptr;
9955         m_allocator       = nullptr;
9956         m_dispatcher      = nullptr;
9957       }
9958 
release()9959       VULKAN_HPP_NAMESPACE::PrivateDataSlot release()
9960       {
9961         m_device     = nullptr;
9962         m_allocator  = nullptr;
9963         m_dispatcher = nullptr;
9964         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_privateDataSlot, nullptr );
9965       }
9966 
getDevice() const9967       VULKAN_HPP_NAMESPACE::Device getDevice() const
9968       {
9969         return m_device;
9970       }
9971 
getDispatcher() const9972       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9973       {
9974         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
9975         return m_dispatcher;
9976       }
9977 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot & rhs)9978       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot & rhs ) VULKAN_HPP_NOEXCEPT
9979       {
9980         std::swap( m_device, rhs.m_device );
9981         std::swap( m_privateDataSlot, rhs.m_privateDataSlot );
9982         std::swap( m_allocator, rhs.m_allocator );
9983         std::swap( m_dispatcher, rhs.m_dispatcher );
9984       }
9985 
9986     private:
9987       VULKAN_HPP_NAMESPACE::Device                                              m_device          = {};
9988       VULKAN_HPP_NAMESPACE::PrivateDataSlot                                     m_privateDataSlot = {};
9989       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator       = {};
9990       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher      = nullptr;
9991     };
9992 
9993     class QueryPool
9994     {
9995     public:
9996       using CType   = VkQueryPool;
9997       using CppType = VULKAN_HPP_NAMESPACE::QueryPool;
9998 
9999       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eQueryPool;
10000       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
10001         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueryPool;
10002 
10003     public:
10004 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)10005       QueryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10006                  VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const &                               createInfo,
10007                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10008       {
10009         *this = device.createQueryPool( createInfo, allocator );
10010       }
10011 #  endif
10012 
QueryPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkQueryPool queryPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)10013       QueryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10014                  VkQueryPool                                                                     queryPool,
10015                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10016         : m_device( device )
10017         , m_queryPool( queryPool )
10018         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
10019         , m_dispatcher( device.getDispatcher() )
10020       {
10021       }
10022 
QueryPool(std::nullptr_t)10023       QueryPool( std::nullptr_t ) {}
10024 
~QueryPool()10025       ~QueryPool()
10026       {
10027         clear();
10028       }
10029 
10030       QueryPool()                    = delete;
10031       QueryPool( QueryPool const & ) = delete;
10032 
QueryPool(QueryPool && rhs)10033       QueryPool( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT
10034         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
10035         , m_queryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queryPool, {} ) )
10036         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
10037         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
10038       {
10039       }
10040 
10041       QueryPool & operator=( QueryPool const & ) = delete;
10042 
operator =(QueryPool && rhs)10043       QueryPool & operator=( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT
10044       {
10045         if ( this != &rhs )
10046         {
10047           std::swap( m_device, rhs.m_device );
10048           std::swap( m_queryPool, rhs.m_queryPool );
10049           std::swap( m_allocator, rhs.m_allocator );
10050           std::swap( m_dispatcher, rhs.m_dispatcher );
10051         }
10052         return *this;
10053       }
10054 
operator *() const10055       VULKAN_HPP_NAMESPACE::QueryPool const & operator*() const VULKAN_HPP_NOEXCEPT
10056       {
10057         return m_queryPool;
10058       }
10059 
operator VULKAN_HPP_NAMESPACE::QueryPool() const10060       operator VULKAN_HPP_NAMESPACE::QueryPool() const VULKAN_HPP_NOEXCEPT
10061       {
10062         return m_queryPool;
10063       }
10064 
clear()10065       void clear() VULKAN_HPP_NOEXCEPT
10066       {
10067         if ( m_queryPool )
10068         {
10069           getDispatcher()->vkDestroyQueryPool(
10070             static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10071         }
10072         m_device     = nullptr;
10073         m_queryPool  = nullptr;
10074         m_allocator  = nullptr;
10075         m_dispatcher = nullptr;
10076       }
10077 
release()10078       VULKAN_HPP_NAMESPACE::QueryPool release()
10079       {
10080         m_device     = nullptr;
10081         m_allocator  = nullptr;
10082         m_dispatcher = nullptr;
10083         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_queryPool, nullptr );
10084       }
10085 
getDevice() const10086       VULKAN_HPP_NAMESPACE::Device getDevice() const
10087       {
10088         return m_device;
10089       }
10090 
getDispatcher() const10091       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
10092       {
10093         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10094         return m_dispatcher;
10095       }
10096 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::QueryPool & rhs)10097       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::QueryPool & rhs ) VULKAN_HPP_NOEXCEPT
10098       {
10099         std::swap( m_device, rhs.m_device );
10100         std::swap( m_queryPool, rhs.m_queryPool );
10101         std::swap( m_allocator, rhs.m_allocator );
10102         std::swap( m_dispatcher, rhs.m_dispatcher );
10103       }
10104 
10105       //=== VK_VERSION_1_0 ===
10106 
10107       template <typename DataType>
10108       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, std::vector<DataType>>
10109                            getResults( uint32_t                                     firstQuery,
10110                                        uint32_t                                     queryCount,
10111                                        size_t                                       dataSize,
10112                                        VULKAN_HPP_NAMESPACE::DeviceSize             stride,
10113                                        VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
10114 
10115       template <typename DataType>
10116       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, DataType>
10117                            getResult( uint32_t                                     firstQuery,
10118                                       uint32_t                                     queryCount,
10119                                       VULKAN_HPP_NAMESPACE::DeviceSize             stride,
10120                                       VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
10121 
10122       //=== VK_VERSION_1_2 ===
10123 
10124       void reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
10125 
10126       //=== VK_EXT_host_query_reset ===
10127 
10128       void resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
10129 
10130     private:
10131       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
10132       VULKAN_HPP_NAMESPACE::QueryPool                                           m_queryPool  = {};
10133       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
10134       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
10135     };
10136 
10137     class Queue
10138     {
10139     public:
10140       using CType   = VkQueue;
10141       using CppType = VULKAN_HPP_NAMESPACE::Queue;
10142 
10143       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eQueue;
10144       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
10145         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueue;
10146 
10147     public:
10148 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,uint32_t queueFamilyIndex,uint32_t queueIndex)10149       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, uint32_t queueFamilyIndex, uint32_t queueIndex )
10150       {
10151         *this = device.getQueue( queueFamilyIndex, queueIndex );
10152       }
10153 #  endif
10154 
10155 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo)10156       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo )
10157       {
10158         *this = device.getQueue2( queueInfo );
10159       }
10160 #  endif
10161 
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkQueue queue)10162       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, VkQueue queue ) : m_queue( queue ), m_dispatcher( device.getDispatcher() )
10163       {
10164       }
10165 
Queue(std::nullptr_t)10166       Queue( std::nullptr_t ) {}
10167 
~Queue()10168       ~Queue()
10169       {
10170         clear();
10171       }
10172 
10173       Queue() = delete;
10174 
Queue(Queue const & rhs)10175       Queue( Queue const & rhs ) : m_queue( rhs.m_queue ), m_dispatcher( rhs.m_dispatcher ) {}
10176 
Queue(Queue && rhs)10177       Queue( Queue && rhs ) VULKAN_HPP_NOEXCEPT
10178         : m_queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queue, {} ) )
10179         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
10180       {
10181       }
10182 
operator =(Queue const & rhs)10183       Queue & operator=( Queue const & rhs )
10184       {
10185         m_queue      = rhs.m_queue;
10186         m_dispatcher = rhs.m_dispatcher;
10187         return *this;
10188       }
10189 
operator =(Queue && rhs)10190       Queue & operator=( Queue && rhs ) VULKAN_HPP_NOEXCEPT
10191       {
10192         if ( this != &rhs )
10193         {
10194           std::swap( m_queue, rhs.m_queue );
10195           std::swap( m_dispatcher, rhs.m_dispatcher );
10196         }
10197         return *this;
10198       }
10199 
operator *() const10200       VULKAN_HPP_NAMESPACE::Queue const & operator*() const VULKAN_HPP_NOEXCEPT
10201       {
10202         return m_queue;
10203       }
10204 
operator VULKAN_HPP_NAMESPACE::Queue() const10205       operator VULKAN_HPP_NAMESPACE::Queue() const VULKAN_HPP_NOEXCEPT
10206       {
10207         return m_queue;
10208       }
10209 
clear()10210       void clear() VULKAN_HPP_NOEXCEPT
10211       {
10212         m_queue      = nullptr;
10213         m_dispatcher = nullptr;
10214       }
10215 
release()10216       VULKAN_HPP_NAMESPACE::Queue release()
10217       {
10218         m_dispatcher = nullptr;
10219         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_queue, nullptr );
10220       }
10221 
getDispatcher() const10222       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
10223       {
10224         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10225         return m_dispatcher;
10226       }
10227 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Queue & rhs)10228       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Queue & rhs ) VULKAN_HPP_NOEXCEPT
10229       {
10230         std::swap( m_queue, rhs.m_queue );
10231         std::swap( m_dispatcher, rhs.m_dispatcher );
10232       }
10233 
10234       //=== VK_VERSION_1_0 ===
10235 
10236       void submit( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,
10237                    VULKAN_HPP_NAMESPACE::Fence fence                                                VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
10238 
10239       void waitIdle() const;
10240 
10241       void bindSparse( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,
10242                        VULKAN_HPP_NAMESPACE::Fence fence                                                    VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
10243 
10244       //=== VK_VERSION_1_3 ===
10245 
10246       void submit2( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2> const & submits,
10247                     VULKAN_HPP_NAMESPACE::Fence fence                                                 VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
10248 
10249       //=== VK_KHR_swapchain ===
10250 
10251       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo ) const;
10252 
10253       //=== VK_EXT_debug_utils ===
10254 
10255       void beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
10256 
10257       void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT;
10258 
10259       void insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
10260 
10261       //=== VK_NV_device_diagnostic_checkpoints ===
10262 
10263       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV> getCheckpointDataNV() const;
10264 
10265       //=== VK_INTEL_performance_query ===
10266 
10267       void setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const;
10268 
10269       //=== VK_KHR_synchronization2 ===
10270 
10271       void submit2KHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2> const & submits,
10272                        VULKAN_HPP_NAMESPACE::Fence fence                                                 VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
10273 
10274       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV> getCheckpointData2NV() const;
10275 
10276       //=== VK_NV_low_latency2 ===
10277 
10278       void notifyOutOfBandNV( const VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV & queueTypeInfo ) const VULKAN_HPP_NOEXCEPT;
10279 
10280     private:
10281       VULKAN_HPP_NAMESPACE::Queue                                               m_queue      = {};
10282       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
10283     };
10284 
10285     class RenderPass
10286     {
10287     public:
10288       using CType   = VkRenderPass;
10289       using CppType = VULKAN_HPP_NAMESPACE::RenderPass;
10290 
10291       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eRenderPass;
10292       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
10293         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eRenderPass;
10294 
10295     public:
10296 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)10297       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10298                   VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const &                              createInfo,
10299                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10300       {
10301         *this = device.createRenderPass( createInfo, allocator );
10302       }
10303 #  endif
10304 
10305 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)10306       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10307                   VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const &                             createInfo,
10308                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10309       {
10310         *this = device.createRenderPass2( createInfo, allocator );
10311       }
10312 #  endif
10313 
RenderPass(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkRenderPass renderPass,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)10314       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10315                   VkRenderPass                                                                    renderPass,
10316                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10317         : m_device( device )
10318         , m_renderPass( renderPass )
10319         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
10320         , m_dispatcher( device.getDispatcher() )
10321       {
10322       }
10323 
RenderPass(std::nullptr_t)10324       RenderPass( std::nullptr_t ) {}
10325 
~RenderPass()10326       ~RenderPass()
10327       {
10328         clear();
10329       }
10330 
10331       RenderPass()                     = delete;
10332       RenderPass( RenderPass const & ) = delete;
10333 
RenderPass(RenderPass && rhs)10334       RenderPass( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT
10335         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
10336         , m_renderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_renderPass, {} ) )
10337         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
10338         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
10339       {
10340       }
10341 
10342       RenderPass & operator=( RenderPass const & ) = delete;
10343 
operator =(RenderPass && rhs)10344       RenderPass & operator=( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT
10345       {
10346         if ( this != &rhs )
10347         {
10348           std::swap( m_device, rhs.m_device );
10349           std::swap( m_renderPass, rhs.m_renderPass );
10350           std::swap( m_allocator, rhs.m_allocator );
10351           std::swap( m_dispatcher, rhs.m_dispatcher );
10352         }
10353         return *this;
10354       }
10355 
operator *() const10356       VULKAN_HPP_NAMESPACE::RenderPass const & operator*() const VULKAN_HPP_NOEXCEPT
10357       {
10358         return m_renderPass;
10359       }
10360 
operator VULKAN_HPP_NAMESPACE::RenderPass() const10361       operator VULKAN_HPP_NAMESPACE::RenderPass() const VULKAN_HPP_NOEXCEPT
10362       {
10363         return m_renderPass;
10364       }
10365 
clear()10366       void clear() VULKAN_HPP_NOEXCEPT
10367       {
10368         if ( m_renderPass )
10369         {
10370           getDispatcher()->vkDestroyRenderPass(
10371             static_cast<VkDevice>( m_device ), static_cast<VkRenderPass>( m_renderPass ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10372         }
10373         m_device     = nullptr;
10374         m_renderPass = nullptr;
10375         m_allocator  = nullptr;
10376         m_dispatcher = nullptr;
10377       }
10378 
release()10379       VULKAN_HPP_NAMESPACE::RenderPass release()
10380       {
10381         m_device     = nullptr;
10382         m_allocator  = nullptr;
10383         m_dispatcher = nullptr;
10384         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_renderPass, nullptr );
10385       }
10386 
getDevice() const10387       VULKAN_HPP_NAMESPACE::Device getDevice() const
10388       {
10389         return m_device;
10390       }
10391 
getDispatcher() const10392       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
10393       {
10394         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10395         return m_dispatcher;
10396       }
10397 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass & rhs)10398       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass & rhs ) VULKAN_HPP_NOEXCEPT
10399       {
10400         std::swap( m_device, rhs.m_device );
10401         std::swap( m_renderPass, rhs.m_renderPass );
10402         std::swap( m_allocator, rhs.m_allocator );
10403         std::swap( m_dispatcher, rhs.m_dispatcher );
10404       }
10405 
10406       //=== VK_VERSION_1_0 ===
10407 
10408       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Extent2D getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT;
10409 
10410       //=== VK_HUAWEI_subpass_shading ===
10411 
10412       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Extent2D getSubpassShadingMaxWorkgroupSizeHUAWEI() const;
10413 
10414     private:
10415       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
10416       VULKAN_HPP_NAMESPACE::RenderPass                                          m_renderPass = {};
10417       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
10418       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
10419     };
10420 
10421     class Sampler
10422     {
10423     public:
10424       using CType   = VkSampler;
10425       using CppType = VULKAN_HPP_NAMESPACE::Sampler;
10426 
10427       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSampler;
10428       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
10429         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSampler;
10430 
10431     public:
10432 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)10433       Sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10434                VULKAN_HPP_NAMESPACE::SamplerCreateInfo const &                                 createInfo,
10435                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10436       {
10437         *this = device.createSampler( createInfo, allocator );
10438       }
10439 #  endif
10440 
Sampler(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSampler sampler,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)10441       Sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10442                VkSampler                                                                       sampler,
10443                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10444         : m_device( device )
10445         , m_sampler( sampler )
10446         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
10447         , m_dispatcher( device.getDispatcher() )
10448       {
10449       }
10450 
Sampler(std::nullptr_t)10451       Sampler( std::nullptr_t ) {}
10452 
~Sampler()10453       ~Sampler()
10454       {
10455         clear();
10456       }
10457 
10458       Sampler()                  = delete;
10459       Sampler( Sampler const & ) = delete;
10460 
Sampler(Sampler && rhs)10461       Sampler( Sampler && rhs ) VULKAN_HPP_NOEXCEPT
10462         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
10463         , m_sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_sampler, {} ) )
10464         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
10465         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
10466       {
10467       }
10468 
10469       Sampler & operator=( Sampler const & ) = delete;
10470 
operator =(Sampler && rhs)10471       Sampler & operator=( Sampler && rhs ) VULKAN_HPP_NOEXCEPT
10472       {
10473         if ( this != &rhs )
10474         {
10475           std::swap( m_device, rhs.m_device );
10476           std::swap( m_sampler, rhs.m_sampler );
10477           std::swap( m_allocator, rhs.m_allocator );
10478           std::swap( m_dispatcher, rhs.m_dispatcher );
10479         }
10480         return *this;
10481       }
10482 
operator *() const10483       VULKAN_HPP_NAMESPACE::Sampler const & operator*() const VULKAN_HPP_NOEXCEPT
10484       {
10485         return m_sampler;
10486       }
10487 
operator VULKAN_HPP_NAMESPACE::Sampler() const10488       operator VULKAN_HPP_NAMESPACE::Sampler() const VULKAN_HPP_NOEXCEPT
10489       {
10490         return m_sampler;
10491       }
10492 
clear()10493       void clear() VULKAN_HPP_NOEXCEPT
10494       {
10495         if ( m_sampler )
10496         {
10497           getDispatcher()->vkDestroySampler(
10498             static_cast<VkDevice>( m_device ), static_cast<VkSampler>( m_sampler ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10499         }
10500         m_device     = nullptr;
10501         m_sampler    = nullptr;
10502         m_allocator  = nullptr;
10503         m_dispatcher = nullptr;
10504       }
10505 
release()10506       VULKAN_HPP_NAMESPACE::Sampler release()
10507       {
10508         m_device     = nullptr;
10509         m_allocator  = nullptr;
10510         m_dispatcher = nullptr;
10511         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_sampler, nullptr );
10512       }
10513 
getDevice() const10514       VULKAN_HPP_NAMESPACE::Device getDevice() const
10515       {
10516         return m_device;
10517       }
10518 
getDispatcher() const10519       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
10520       {
10521         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10522         return m_dispatcher;
10523       }
10524 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Sampler & rhs)10525       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Sampler & rhs ) VULKAN_HPP_NOEXCEPT
10526       {
10527         std::swap( m_device, rhs.m_device );
10528         std::swap( m_sampler, rhs.m_sampler );
10529         std::swap( m_allocator, rhs.m_allocator );
10530         std::swap( m_dispatcher, rhs.m_dispatcher );
10531       }
10532 
10533     private:
10534       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
10535       VULKAN_HPP_NAMESPACE::Sampler                                             m_sampler    = {};
10536       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
10537       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
10538     };
10539 
10540     class SamplerYcbcrConversion
10541     {
10542     public:
10543       using CType   = VkSamplerYcbcrConversion;
10544       using CppType = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion;
10545 
10546       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSamplerYcbcrConversion;
10547       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
10548         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSamplerYcbcrConversion;
10549 
10550     public:
10551 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)10552       SamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10553                               VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const &                  createInfo,
10554                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10555       {
10556         *this = device.createSamplerYcbcrConversion( createInfo, allocator );
10557       }
10558 #  endif
10559 
SamplerYcbcrConversion(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSamplerYcbcrConversion ycbcrConversion,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)10560       SamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10561                               VkSamplerYcbcrConversion                                                        ycbcrConversion,
10562                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10563         : m_device( device )
10564         , m_ycbcrConversion( ycbcrConversion )
10565         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
10566         , m_dispatcher( device.getDispatcher() )
10567       {
10568       }
10569 
SamplerYcbcrConversion(std::nullptr_t)10570       SamplerYcbcrConversion( std::nullptr_t ) {}
10571 
~SamplerYcbcrConversion()10572       ~SamplerYcbcrConversion()
10573       {
10574         clear();
10575       }
10576 
10577       SamplerYcbcrConversion()                                 = delete;
10578       SamplerYcbcrConversion( SamplerYcbcrConversion const & ) = delete;
10579 
SamplerYcbcrConversion(SamplerYcbcrConversion && rhs)10580       SamplerYcbcrConversion( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT
10581         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
10582         , m_ycbcrConversion( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_ycbcrConversion, {} ) )
10583         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
10584         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
10585       {
10586       }
10587 
10588       SamplerYcbcrConversion & operator=( SamplerYcbcrConversion const & ) = delete;
10589 
operator =(SamplerYcbcrConversion && rhs)10590       SamplerYcbcrConversion & operator=( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT
10591       {
10592         if ( this != &rhs )
10593         {
10594           std::swap( m_device, rhs.m_device );
10595           std::swap( m_ycbcrConversion, rhs.m_ycbcrConversion );
10596           std::swap( m_allocator, rhs.m_allocator );
10597           std::swap( m_dispatcher, rhs.m_dispatcher );
10598         }
10599         return *this;
10600       }
10601 
operator *() const10602       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & operator*() const VULKAN_HPP_NOEXCEPT
10603       {
10604         return m_ycbcrConversion;
10605       }
10606 
operator VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion() const10607       operator VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion() const VULKAN_HPP_NOEXCEPT
10608       {
10609         return m_ycbcrConversion;
10610       }
10611 
clear()10612       void clear() VULKAN_HPP_NOEXCEPT
10613       {
10614         if ( m_ycbcrConversion )
10615         {
10616           getDispatcher()->vkDestroySamplerYcbcrConversion( static_cast<VkDevice>( m_device ),
10617                                                             static_cast<VkSamplerYcbcrConversion>( m_ycbcrConversion ),
10618                                                             reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10619         }
10620         m_device          = nullptr;
10621         m_ycbcrConversion = nullptr;
10622         m_allocator       = nullptr;
10623         m_dispatcher      = nullptr;
10624       }
10625 
release()10626       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion release()
10627       {
10628         m_device     = nullptr;
10629         m_allocator  = nullptr;
10630         m_dispatcher = nullptr;
10631         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_ycbcrConversion, nullptr );
10632       }
10633 
getDevice() const10634       VULKAN_HPP_NAMESPACE::Device getDevice() const
10635       {
10636         return m_device;
10637       }
10638 
getDispatcher() const10639       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
10640       {
10641         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10642         return m_dispatcher;
10643       }
10644 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion & rhs)10645       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion & rhs ) VULKAN_HPP_NOEXCEPT
10646       {
10647         std::swap( m_device, rhs.m_device );
10648         std::swap( m_ycbcrConversion, rhs.m_ycbcrConversion );
10649         std::swap( m_allocator, rhs.m_allocator );
10650         std::swap( m_dispatcher, rhs.m_dispatcher );
10651       }
10652 
10653     private:
10654       VULKAN_HPP_NAMESPACE::Device                                              m_device          = {};
10655       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion                              m_ycbcrConversion = {};
10656       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator       = {};
10657       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher      = nullptr;
10658     };
10659 
10660     class Semaphore
10661     {
10662     public:
10663       using CType   = VkSemaphore;
10664       using CppType = VULKAN_HPP_NAMESPACE::Semaphore;
10665 
10666       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSemaphore;
10667       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
10668         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSemaphore;
10669 
10670     public:
10671 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)10672       Semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10673                  VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const &                               createInfo,
10674                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10675       {
10676         *this = device.createSemaphore( createInfo, allocator );
10677       }
10678 #  endif
10679 
Semaphore(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSemaphore semaphore,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)10680       Semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10681                  VkSemaphore                                                                     semaphore,
10682                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10683         : m_device( device )
10684         , m_semaphore( semaphore )
10685         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
10686         , m_dispatcher( device.getDispatcher() )
10687       {
10688       }
10689 
Semaphore(std::nullptr_t)10690       Semaphore( std::nullptr_t ) {}
10691 
~Semaphore()10692       ~Semaphore()
10693       {
10694         clear();
10695       }
10696 
10697       Semaphore()                    = delete;
10698       Semaphore( Semaphore const & ) = delete;
10699 
Semaphore(Semaphore && rhs)10700       Semaphore( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT
10701         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
10702         , m_semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_semaphore, {} ) )
10703         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
10704         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
10705       {
10706       }
10707 
10708       Semaphore & operator=( Semaphore const & ) = delete;
10709 
operator =(Semaphore && rhs)10710       Semaphore & operator=( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT
10711       {
10712         if ( this != &rhs )
10713         {
10714           std::swap( m_device, rhs.m_device );
10715           std::swap( m_semaphore, rhs.m_semaphore );
10716           std::swap( m_allocator, rhs.m_allocator );
10717           std::swap( m_dispatcher, rhs.m_dispatcher );
10718         }
10719         return *this;
10720       }
10721 
operator *() const10722       VULKAN_HPP_NAMESPACE::Semaphore const & operator*() const VULKAN_HPP_NOEXCEPT
10723       {
10724         return m_semaphore;
10725       }
10726 
operator VULKAN_HPP_NAMESPACE::Semaphore() const10727       operator VULKAN_HPP_NAMESPACE::Semaphore() const VULKAN_HPP_NOEXCEPT
10728       {
10729         return m_semaphore;
10730       }
10731 
clear()10732       void clear() VULKAN_HPP_NOEXCEPT
10733       {
10734         if ( m_semaphore )
10735         {
10736           getDispatcher()->vkDestroySemaphore(
10737             static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10738         }
10739         m_device     = nullptr;
10740         m_semaphore  = nullptr;
10741         m_allocator  = nullptr;
10742         m_dispatcher = nullptr;
10743       }
10744 
release()10745       VULKAN_HPP_NAMESPACE::Semaphore release()
10746       {
10747         m_device     = nullptr;
10748         m_allocator  = nullptr;
10749         m_dispatcher = nullptr;
10750         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_semaphore, nullptr );
10751       }
10752 
getDevice() const10753       VULKAN_HPP_NAMESPACE::Device getDevice() const
10754       {
10755         return m_device;
10756       }
10757 
getDispatcher() const10758       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
10759       {
10760         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10761         return m_dispatcher;
10762       }
10763 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Semaphore & rhs)10764       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Semaphore & rhs ) VULKAN_HPP_NOEXCEPT
10765       {
10766         std::swap( m_device, rhs.m_device );
10767         std::swap( m_semaphore, rhs.m_semaphore );
10768         std::swap( m_allocator, rhs.m_allocator );
10769         std::swap( m_dispatcher, rhs.m_dispatcher );
10770       }
10771 
10772       //=== VK_VERSION_1_2 ===
10773 
10774       VULKAN_HPP_NODISCARD uint64_t getCounterValue() const;
10775 
10776       //=== VK_KHR_timeline_semaphore ===
10777 
10778       VULKAN_HPP_NODISCARD uint64_t getCounterValueKHR() const;
10779 
10780     private:
10781       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
10782       VULKAN_HPP_NAMESPACE::Semaphore                                           m_semaphore  = {};
10783       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
10784       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
10785     };
10786 
10787     class ShaderEXT
10788     {
10789     public:
10790       using CType   = VkShaderEXT;
10791       using CppType = VULKAN_HPP_NAMESPACE::ShaderEXT;
10792 
10793       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eShaderEXT;
10794       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
10795         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
10796 
10797     public:
10798 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
ShaderEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)10799       ShaderEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10800                  VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT const &                               createInfo,
10801                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10802       {
10803         *this = device.createShaderEXT( createInfo, allocator );
10804       }
10805 #  endif
10806 
ShaderEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkShaderEXT shader,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr,VULKAN_HPP_NAMESPACE::Result successCode=VULKAN_HPP_NAMESPACE::Result::eSuccess)10807       ShaderEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10808                  VkShaderEXT                                                                     shader,
10809                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator   = nullptr,
10810                  VULKAN_HPP_NAMESPACE::Result                                                    successCode = VULKAN_HPP_NAMESPACE::Result::eSuccess )
10811         : m_device( device )
10812         , m_shader( shader )
10813         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
10814         , m_constructorSuccessCode( successCode )
10815         , m_dispatcher( device.getDispatcher() )
10816       {
10817       }
10818 
ShaderEXT(std::nullptr_t)10819       ShaderEXT( std::nullptr_t ) {}
10820 
~ShaderEXT()10821       ~ShaderEXT()
10822       {
10823         clear();
10824       }
10825 
10826       ShaderEXT()                    = delete;
10827       ShaderEXT( ShaderEXT const & ) = delete;
10828 
ShaderEXT(ShaderEXT && rhs)10829       ShaderEXT( ShaderEXT && rhs ) VULKAN_HPP_NOEXCEPT
10830         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
10831         , m_shader( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_shader, {} ) )
10832         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
10833         , m_constructorSuccessCode( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_constructorSuccessCode, {} ) )
10834         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
10835       {
10836       }
10837 
10838       ShaderEXT & operator=( ShaderEXT const & ) = delete;
10839 
operator =(ShaderEXT && rhs)10840       ShaderEXT & operator=( ShaderEXT && rhs ) VULKAN_HPP_NOEXCEPT
10841       {
10842         if ( this != &rhs )
10843         {
10844           std::swap( m_device, rhs.m_device );
10845           std::swap( m_shader, rhs.m_shader );
10846           std::swap( m_allocator, rhs.m_allocator );
10847           std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
10848           std::swap( m_dispatcher, rhs.m_dispatcher );
10849         }
10850         return *this;
10851       }
10852 
operator *() const10853       VULKAN_HPP_NAMESPACE::ShaderEXT const & operator*() const VULKAN_HPP_NOEXCEPT
10854       {
10855         return m_shader;
10856       }
10857 
operator VULKAN_HPP_NAMESPACE::ShaderEXT() const10858       operator VULKAN_HPP_NAMESPACE::ShaderEXT() const VULKAN_HPP_NOEXCEPT
10859       {
10860         return m_shader;
10861       }
10862 
clear()10863       void clear() VULKAN_HPP_NOEXCEPT
10864       {
10865         if ( m_shader )
10866         {
10867           getDispatcher()->vkDestroyShaderEXT(
10868             static_cast<VkDevice>( m_device ), static_cast<VkShaderEXT>( m_shader ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
10869         }
10870         m_device                 = nullptr;
10871         m_shader                 = nullptr;
10872         m_allocator              = nullptr;
10873         m_constructorSuccessCode = VULKAN_HPP_NAMESPACE::Result::eErrorUnknown;
10874         m_dispatcher             = nullptr;
10875       }
10876 
release()10877       VULKAN_HPP_NAMESPACE::ShaderEXT release()
10878       {
10879         m_device                 = nullptr;
10880         m_allocator              = nullptr;
10881         m_constructorSuccessCode = VULKAN_HPP_NAMESPACE::Result::eErrorUnknown;
10882         m_dispatcher             = nullptr;
10883         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_shader, nullptr );
10884       }
10885 
getConstructorSuccessCode() const10886       VULKAN_HPP_NAMESPACE::Result getConstructorSuccessCode() const
10887       {
10888         return m_constructorSuccessCode;
10889       }
10890 
getDevice() const10891       VULKAN_HPP_NAMESPACE::Device getDevice() const
10892       {
10893         return m_device;
10894       }
10895 
getDispatcher() const10896       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
10897       {
10898         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
10899         return m_dispatcher;
10900       }
10901 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT & rhs)10902       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT & rhs ) VULKAN_HPP_NOEXCEPT
10903       {
10904         std::swap( m_device, rhs.m_device );
10905         std::swap( m_shader, rhs.m_shader );
10906         std::swap( m_allocator, rhs.m_allocator );
10907         std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode );
10908         std::swap( m_dispatcher, rhs.m_dispatcher );
10909       }
10910 
10911       //=== VK_EXT_shader_object ===
10912 
10913       VULKAN_HPP_NODISCARD std::vector<uint8_t> getBinaryData() const;
10914 
10915     private:
10916       VULKAN_HPP_NAMESPACE::Device                                              m_device                 = {};
10917       VULKAN_HPP_NAMESPACE::ShaderEXT                                           m_shader                 = {};
10918       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator              = {};
10919       VULKAN_HPP_NAMESPACE::Result                                              m_constructorSuccessCode = VULKAN_HPP_NAMESPACE::Result::eErrorUnknown;
10920       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher             = nullptr;
10921     };
10922 
10923     class ShaderEXTs : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT>
10924     {
10925     public:
10926 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
ShaderEXTs(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)10927       ShaderEXTs( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                     device,
10928                   VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT> const & createInfos,
10929                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>     allocator = nullptr )
10930       {
10931         *this = device.createShadersEXT( createInfos, allocator );
10932       }
10933 #  endif
10934 
ShaderEXTs(std::nullptr_t)10935       ShaderEXTs( std::nullptr_t ) {}
10936 
10937       ShaderEXTs()                                 = delete;
10938       ShaderEXTs( ShaderEXTs const & )             = delete;
10939       ShaderEXTs( ShaderEXTs && rhs )              = default;
10940       ShaderEXTs & operator=( ShaderEXTs const & ) = delete;
10941       ShaderEXTs & operator=( ShaderEXTs && rhs )  = default;
10942 
10943     private:
ShaderEXTs(std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT> && rhs)10944       ShaderEXTs( std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT> && rhs )
10945       {
10946         std::swap( *this, rhs );
10947       }
10948     };
10949 
10950     class ShaderModule
10951     {
10952     public:
10953       using CType   = VkShaderModule;
10954       using CppType = VULKAN_HPP_NAMESPACE::ShaderModule;
10955 
10956       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eShaderModule;
10957       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
10958         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eShaderModule;
10959 
10960     public:
10961 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)10962       ShaderModule( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10963                     VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const &                            createInfo,
10964                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10965       {
10966         *this = device.createShaderModule( createInfo, allocator );
10967       }
10968 #  endif
10969 
ShaderModule(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkShaderModule shaderModule,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)10970       ShaderModule( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
10971                     VkShaderModule                                                                  shaderModule,
10972                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
10973         : m_device( device )
10974         , m_shaderModule( shaderModule )
10975         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
10976         , m_dispatcher( device.getDispatcher() )
10977       {
10978       }
10979 
ShaderModule(std::nullptr_t)10980       ShaderModule( std::nullptr_t ) {}
10981 
~ShaderModule()10982       ~ShaderModule()
10983       {
10984         clear();
10985       }
10986 
10987       ShaderModule()                       = delete;
10988       ShaderModule( ShaderModule const & ) = delete;
10989 
ShaderModule(ShaderModule && rhs)10990       ShaderModule( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT
10991         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
10992         , m_shaderModule( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_shaderModule, {} ) )
10993         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
10994         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
10995       {
10996       }
10997 
10998       ShaderModule & operator=( ShaderModule const & ) = delete;
10999 
operator =(ShaderModule && rhs)11000       ShaderModule & operator=( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT
11001       {
11002         if ( this != &rhs )
11003         {
11004           std::swap( m_device, rhs.m_device );
11005           std::swap( m_shaderModule, rhs.m_shaderModule );
11006           std::swap( m_allocator, rhs.m_allocator );
11007           std::swap( m_dispatcher, rhs.m_dispatcher );
11008         }
11009         return *this;
11010       }
11011 
operator *() const11012       VULKAN_HPP_NAMESPACE::ShaderModule const & operator*() const VULKAN_HPP_NOEXCEPT
11013       {
11014         return m_shaderModule;
11015       }
11016 
operator VULKAN_HPP_NAMESPACE::ShaderModule() const11017       operator VULKAN_HPP_NAMESPACE::ShaderModule() const VULKAN_HPP_NOEXCEPT
11018       {
11019         return m_shaderModule;
11020       }
11021 
clear()11022       void clear() VULKAN_HPP_NOEXCEPT
11023       {
11024         if ( m_shaderModule )
11025         {
11026           getDispatcher()->vkDestroyShaderModule(
11027             static_cast<VkDevice>( m_device ), static_cast<VkShaderModule>( m_shaderModule ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11028         }
11029         m_device       = nullptr;
11030         m_shaderModule = nullptr;
11031         m_allocator    = nullptr;
11032         m_dispatcher   = nullptr;
11033       }
11034 
release()11035       VULKAN_HPP_NAMESPACE::ShaderModule release()
11036       {
11037         m_device     = nullptr;
11038         m_allocator  = nullptr;
11039         m_dispatcher = nullptr;
11040         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_shaderModule, nullptr );
11041       }
11042 
getDevice() const11043       VULKAN_HPP_NAMESPACE::Device getDevice() const
11044       {
11045         return m_device;
11046       }
11047 
getDispatcher() const11048       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
11049       {
11050         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11051         return m_dispatcher;
11052       }
11053 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderModule & rhs)11054       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderModule & rhs ) VULKAN_HPP_NOEXCEPT
11055       {
11056         std::swap( m_device, rhs.m_device );
11057         std::swap( m_shaderModule, rhs.m_shaderModule );
11058         std::swap( m_allocator, rhs.m_allocator );
11059         std::swap( m_dispatcher, rhs.m_dispatcher );
11060       }
11061 
11062       //=== VK_EXT_shader_module_identifier ===
11063 
11064       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT getIdentifierEXT() const VULKAN_HPP_NOEXCEPT;
11065 
11066     private:
11067       VULKAN_HPP_NAMESPACE::Device                                              m_device       = {};
11068       VULKAN_HPP_NAMESPACE::ShaderModule                                        m_shaderModule = {};
11069       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator    = {};
11070       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher   = nullptr;
11071     };
11072 
11073     class SurfaceKHR
11074     {
11075     public:
11076       using CType   = VkSurfaceKHR;
11077       using CppType = VULKAN_HPP_NAMESPACE::SurfaceKHR;
11078 
11079       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSurfaceKHR;
11080       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
11081         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSurfaceKHR;
11082 
11083     public:
11084 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11085 #    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)11086       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11087                   VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const &                       createInfo,
11088                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11089       {
11090         *this = instance.createAndroidSurfaceKHR( createInfo, allocator );
11091       }
11092 #    endif /*VK_USE_PLATFORM_ANDROID_KHR*/
11093 #  endif
11094 
11095 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11096 #    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)11097       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11098                   VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const &                      createInfo,
11099                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11100       {
11101         *this = instance.createDirectFBSurfaceEXT( createInfo, allocator );
11102       }
11103 #    endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
11104 #  endif
11105 
11106 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)11107       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11108                   VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const &                       createInfo,
11109                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11110       {
11111         *this = instance.createDisplayPlaneSurfaceKHR( createInfo, allocator );
11112       }
11113 #  endif
11114 
11115 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)11116       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11117                   VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const &                      createInfo,
11118                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11119       {
11120         *this = instance.createHeadlessSurfaceEXT( createInfo, allocator );
11121       }
11122 #  endif
11123 
11124 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11125 #    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)11126       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11127                   VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const &                           createInfo,
11128                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11129       {
11130         *this = instance.createIOSSurfaceMVK( createInfo, allocator );
11131       }
11132 #    endif /*VK_USE_PLATFORM_IOS_MVK*/
11133 #  endif
11134 
11135 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11136 #    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)11137       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11138                   VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const &                 createInfo,
11139                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11140       {
11141         *this = instance.createImagePipeSurfaceFUCHSIA( createInfo, allocator );
11142       }
11143 #    endif /*VK_USE_PLATFORM_FUCHSIA*/
11144 #  endif
11145 
11146 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11147 #    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)11148       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11149                   VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const &                         createInfo,
11150                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11151       {
11152         *this = instance.createMacOSSurfaceMVK( createInfo, allocator );
11153       }
11154 #    endif /*VK_USE_PLATFORM_MACOS_MVK*/
11155 #  endif
11156 
11157 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11158 #    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)11159       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11160                   VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const &                         createInfo,
11161                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11162       {
11163         *this = instance.createMetalSurfaceEXT( createInfo, allocator );
11164       }
11165 #    endif /*VK_USE_PLATFORM_METAL_EXT*/
11166 #  endif
11167 
11168 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11169 #    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)11170       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11171                   VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const &                        createInfo,
11172                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11173       {
11174         *this = instance.createScreenSurfaceQNX( createInfo, allocator );
11175       }
11176 #    endif /*VK_USE_PLATFORM_SCREEN_QNX*/
11177 #  endif
11178 
11179 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11180 #    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)11181       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11182                   VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const &              createInfo,
11183                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11184       {
11185         *this = instance.createStreamDescriptorSurfaceGGP( createInfo, allocator );
11186       }
11187 #    endif /*VK_USE_PLATFORM_GGP*/
11188 #  endif
11189 
11190 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11191 #    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)11192       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11193                   VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const &                             createInfo,
11194                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11195       {
11196         *this = instance.createViSurfaceNN( createInfo, allocator );
11197       }
11198 #    endif /*VK_USE_PLATFORM_VI_NN*/
11199 #  endif
11200 
11201 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11202 #    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)11203       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11204                   VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const &                       createInfo,
11205                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11206       {
11207         *this = instance.createWaylandSurfaceKHR( createInfo, allocator );
11208       }
11209 #    endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
11210 #  endif
11211 
11212 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11213 #    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)11214       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11215                   VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const &                         createInfo,
11216                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11217       {
11218         *this = instance.createWin32SurfaceKHR( createInfo, allocator );
11219       }
11220 #    endif /*VK_USE_PLATFORM_WIN32_KHR*/
11221 #  endif
11222 
11223 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11224 #    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)11225       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11226                   VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const &                           createInfo,
11227                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11228       {
11229         *this = instance.createXcbSurfaceKHR( createInfo, allocator );
11230       }
11231 #    endif /*VK_USE_PLATFORM_XCB_KHR*/
11232 #  endif
11233 
11234 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11235 #    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)11236       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11237                   VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const &                          createInfo,
11238                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11239       {
11240         *this = instance.createXlibSurfaceKHR( createInfo, allocator );
11241       }
11242 #    endif /*VK_USE_PLATFORM_XLIB_KHR*/
11243 #  endif
11244 
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkSurfaceKHR surface,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)11245       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
11246                   VkSurfaceKHR                                                                    surface,
11247                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11248         : m_instance( instance )
11249         , m_surface( surface )
11250         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
11251         , m_dispatcher( instance.getDispatcher() )
11252       {
11253       }
11254 
SurfaceKHR(std::nullptr_t)11255       SurfaceKHR( std::nullptr_t ) {}
11256 
~SurfaceKHR()11257       ~SurfaceKHR()
11258       {
11259         clear();
11260       }
11261 
11262       SurfaceKHR()                     = delete;
11263       SurfaceKHR( SurfaceKHR const & ) = delete;
11264 
SurfaceKHR(SurfaceKHR && rhs)11265       SurfaceKHR( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT
11266         : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) )
11267         , m_surface( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_surface, {} ) )
11268         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
11269         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
11270       {
11271       }
11272 
11273       SurfaceKHR & operator=( SurfaceKHR const & ) = delete;
11274 
operator =(SurfaceKHR && rhs)11275       SurfaceKHR & operator=( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT
11276       {
11277         if ( this != &rhs )
11278         {
11279           std::swap( m_instance, rhs.m_instance );
11280           std::swap( m_surface, rhs.m_surface );
11281           std::swap( m_allocator, rhs.m_allocator );
11282           std::swap( m_dispatcher, rhs.m_dispatcher );
11283         }
11284         return *this;
11285       }
11286 
operator *() const11287       VULKAN_HPP_NAMESPACE::SurfaceKHR const & operator*() const VULKAN_HPP_NOEXCEPT
11288       {
11289         return m_surface;
11290       }
11291 
operator VULKAN_HPP_NAMESPACE::SurfaceKHR() const11292       operator VULKAN_HPP_NAMESPACE::SurfaceKHR() const VULKAN_HPP_NOEXCEPT
11293       {
11294         return m_surface;
11295       }
11296 
clear()11297       void clear() VULKAN_HPP_NOEXCEPT
11298       {
11299         if ( m_surface )
11300         {
11301           getDispatcher()->vkDestroySurfaceKHR(
11302             static_cast<VkInstance>( m_instance ), static_cast<VkSurfaceKHR>( m_surface ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11303         }
11304         m_instance   = nullptr;
11305         m_surface    = nullptr;
11306         m_allocator  = nullptr;
11307         m_dispatcher = nullptr;
11308       }
11309 
release()11310       VULKAN_HPP_NAMESPACE::SurfaceKHR release()
11311       {
11312         m_instance   = nullptr;
11313         m_allocator  = nullptr;
11314         m_dispatcher = nullptr;
11315         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_surface, nullptr );
11316       }
11317 
getInstance() const11318       VULKAN_HPP_NAMESPACE::Instance getInstance() const
11319       {
11320         return m_instance;
11321       }
11322 
getDispatcher() const11323       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
11324       {
11325         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11326         return m_dispatcher;
11327       }
11328 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR & rhs)11329       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR & rhs ) VULKAN_HPP_NOEXCEPT
11330       {
11331         std::swap( m_instance, rhs.m_instance );
11332         std::swap( m_surface, rhs.m_surface );
11333         std::swap( m_allocator, rhs.m_allocator );
11334         std::swap( m_dispatcher, rhs.m_dispatcher );
11335       }
11336 
11337     private:
11338       VULKAN_HPP_NAMESPACE::Instance                                              m_instance   = {};
11339       VULKAN_HPP_NAMESPACE::SurfaceKHR                                            m_surface    = {};
11340       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                           m_allocator  = {};
11341       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher = nullptr;
11342     };
11343 
11344     class SwapchainKHR
11345     {
11346     public:
11347       using CType   = VkSwapchainKHR;
11348       using CppType = VULKAN_HPP_NAMESPACE::SwapchainKHR;
11349 
11350       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSwapchainKHR;
11351       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
11352         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSwapchainKHR;
11353 
11354     public:
11355 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)11356       SwapchainKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
11357                     VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const &                            createInfo,
11358                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11359       {
11360         *this = device.createSwapchainKHR( createInfo, allocator );
11361       }
11362 #  endif
11363 
SwapchainKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSwapchainKHR swapchain,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)11364       SwapchainKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
11365                     VkSwapchainKHR                                                                  swapchain,
11366                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11367         : m_device( device )
11368         , m_swapchain( swapchain )
11369         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
11370         , m_dispatcher( device.getDispatcher() )
11371       {
11372       }
11373 
SwapchainKHR(std::nullptr_t)11374       SwapchainKHR( std::nullptr_t ) {}
11375 
~SwapchainKHR()11376       ~SwapchainKHR()
11377       {
11378         clear();
11379       }
11380 
11381       SwapchainKHR()                       = delete;
11382       SwapchainKHR( SwapchainKHR const & ) = delete;
11383 
SwapchainKHR(SwapchainKHR && rhs)11384       SwapchainKHR( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT
11385         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
11386         , m_swapchain( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_swapchain, {} ) )
11387         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
11388         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
11389       {
11390       }
11391 
11392       SwapchainKHR & operator=( SwapchainKHR const & ) = delete;
11393 
operator =(SwapchainKHR && rhs)11394       SwapchainKHR & operator=( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT
11395       {
11396         if ( this != &rhs )
11397         {
11398           std::swap( m_device, rhs.m_device );
11399           std::swap( m_swapchain, rhs.m_swapchain );
11400           std::swap( m_allocator, rhs.m_allocator );
11401           std::swap( m_dispatcher, rhs.m_dispatcher );
11402         }
11403         return *this;
11404       }
11405 
operator *() const11406       VULKAN_HPP_NAMESPACE::SwapchainKHR const & operator*() const VULKAN_HPP_NOEXCEPT
11407       {
11408         return m_swapchain;
11409       }
11410 
operator VULKAN_HPP_NAMESPACE::SwapchainKHR() const11411       operator VULKAN_HPP_NAMESPACE::SwapchainKHR() const VULKAN_HPP_NOEXCEPT
11412       {
11413         return m_swapchain;
11414       }
11415 
clear()11416       void clear() VULKAN_HPP_NOEXCEPT
11417       {
11418         if ( m_swapchain )
11419         {
11420           getDispatcher()->vkDestroySwapchainKHR(
11421             static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11422         }
11423         m_device     = nullptr;
11424         m_swapchain  = nullptr;
11425         m_allocator  = nullptr;
11426         m_dispatcher = nullptr;
11427       }
11428 
release()11429       VULKAN_HPP_NAMESPACE::SwapchainKHR release()
11430       {
11431         m_device     = nullptr;
11432         m_allocator  = nullptr;
11433         m_dispatcher = nullptr;
11434         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_swapchain, nullptr );
11435       }
11436 
getDevice() const11437       VULKAN_HPP_NAMESPACE::Device getDevice() const
11438       {
11439         return m_device;
11440       }
11441 
getDispatcher() const11442       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
11443       {
11444         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11445         return m_dispatcher;
11446       }
11447 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR & rhs)11448       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR & rhs ) VULKAN_HPP_NOEXCEPT
11449       {
11450         std::swap( m_device, rhs.m_device );
11451         std::swap( m_swapchain, rhs.m_swapchain );
11452         std::swap( m_allocator, rhs.m_allocator );
11453         std::swap( m_dispatcher, rhs.m_dispatcher );
11454       }
11455 
11456       //=== VK_KHR_swapchain ===
11457 
11458       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::Image> getImages() const;
11459 
11460       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
11461                            acquireNextImage( uint64_t                                  timeout,
11462                                              VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
11463                                              VULKAN_HPP_NAMESPACE::Fence fence         VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
11464 
11465       //=== VK_EXT_display_control ===
11466 
11467       VULKAN_HPP_NODISCARD uint64_t getCounterEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter ) const;
11468 
11469       //=== VK_GOOGLE_display_timing ===
11470 
11471       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE getRefreshCycleDurationGOOGLE() const;
11472 
11473       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE> getPastPresentationTimingGOOGLE() const;
11474 
11475       //=== VK_KHR_shared_presentable_image ===
11476 
11477       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
11478 
11479       //=== VK_AMD_display_native_hdr ===
11480 
11481       void setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT;
11482 
11483       //=== VK_KHR_present_wait ===
11484 
11485       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result waitForPresent( uint64_t presentId, uint64_t timeout ) const;
11486 
11487 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
11488       //=== VK_EXT_full_screen_exclusive ===
11489 
11490       void acquireFullScreenExclusiveModeEXT() const;
11491 
11492       void releaseFullScreenExclusiveModeEXT() const;
11493 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
11494 
11495       //=== VK_NV_low_latency2 ===
11496 
11497       void setLatencySleepModeNV( const VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV & sleepModeInfo ) const;
11498 
11499       void latencySleepNV( const VULKAN_HPP_NAMESPACE::LatencySleepInfoNV & sleepInfo ) const VULKAN_HPP_NOEXCEPT;
11500 
11501       void setLatencyMarkerNV( const VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV & latencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT;
11502 
11503       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV getLatencyTimingsNV() const VULKAN_HPP_NOEXCEPT;
11504 
11505     private:
11506       VULKAN_HPP_NAMESPACE::Device                                              m_device     = {};
11507       VULKAN_HPP_NAMESPACE::SwapchainKHR                                        m_swapchain  = {};
11508       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator  = {};
11509       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher = nullptr;
11510     };
11511 
11512     class SwapchainKHRs : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>
11513     {
11514     public:
11515 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)11516       SwapchainKHRs( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                        device,
11517                      VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR> const & createInfos,
11518                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>        allocator = nullptr )
11519       {
11520         *this = device.createSharedSwapchainsKHR( createInfos, allocator );
11521       }
11522 #  endif
11523 
SwapchainKHRs(std::nullptr_t)11524       SwapchainKHRs( std::nullptr_t ) {}
11525 
11526       SwapchainKHRs()                                    = delete;
11527       SwapchainKHRs( SwapchainKHRs const & )             = delete;
11528       SwapchainKHRs( SwapchainKHRs && rhs )              = default;
11529       SwapchainKHRs & operator=( SwapchainKHRs const & ) = delete;
11530       SwapchainKHRs & operator=( SwapchainKHRs && rhs )  = default;
11531 
11532     private:
SwapchainKHRs(std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR> && rhs)11533       SwapchainKHRs( std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR> && rhs )
11534       {
11535         std::swap( *this, rhs );
11536       }
11537     };
11538 
11539     class ValidationCacheEXT
11540     {
11541     public:
11542       using CType   = VkValidationCacheEXT;
11543       using CppType = VULKAN_HPP_NAMESPACE::ValidationCacheEXT;
11544 
11545       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eValidationCacheEXT;
11546       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
11547         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eValidationCacheEXT;
11548 
11549     public:
11550 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)11551       ValidationCacheEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
11552                           VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const &                      createInfo,
11553                           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11554       {
11555         *this = device.createValidationCacheEXT( createInfo, allocator );
11556       }
11557 #  endif
11558 
ValidationCacheEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkValidationCacheEXT validationCache,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)11559       ValidationCacheEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
11560                           VkValidationCacheEXT                                                            validationCache,
11561                           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11562         : m_device( device )
11563         , m_validationCache( validationCache )
11564         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
11565         , m_dispatcher( device.getDispatcher() )
11566       {
11567       }
11568 
ValidationCacheEXT(std::nullptr_t)11569       ValidationCacheEXT( std::nullptr_t ) {}
11570 
~ValidationCacheEXT()11571       ~ValidationCacheEXT()
11572       {
11573         clear();
11574       }
11575 
11576       ValidationCacheEXT()                             = delete;
11577       ValidationCacheEXT( ValidationCacheEXT const & ) = delete;
11578 
ValidationCacheEXT(ValidationCacheEXT && rhs)11579       ValidationCacheEXT( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT
11580         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
11581         , m_validationCache( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_validationCache, {} ) )
11582         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
11583         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
11584       {
11585       }
11586 
11587       ValidationCacheEXT & operator=( ValidationCacheEXT const & ) = delete;
11588 
operator =(ValidationCacheEXT && rhs)11589       ValidationCacheEXT & operator=( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT
11590       {
11591         if ( this != &rhs )
11592         {
11593           std::swap( m_device, rhs.m_device );
11594           std::swap( m_validationCache, rhs.m_validationCache );
11595           std::swap( m_allocator, rhs.m_allocator );
11596           std::swap( m_dispatcher, rhs.m_dispatcher );
11597         }
11598         return *this;
11599       }
11600 
operator *() const11601       VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & operator*() const VULKAN_HPP_NOEXCEPT
11602       {
11603         return m_validationCache;
11604       }
11605 
operator VULKAN_HPP_NAMESPACE::ValidationCacheEXT() const11606       operator VULKAN_HPP_NAMESPACE::ValidationCacheEXT() const VULKAN_HPP_NOEXCEPT
11607       {
11608         return m_validationCache;
11609       }
11610 
clear()11611       void clear() VULKAN_HPP_NOEXCEPT
11612       {
11613         if ( m_validationCache )
11614         {
11615           getDispatcher()->vkDestroyValidationCacheEXT( static_cast<VkDevice>( m_device ),
11616                                                         static_cast<VkValidationCacheEXT>( m_validationCache ),
11617                                                         reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11618         }
11619         m_device          = nullptr;
11620         m_validationCache = nullptr;
11621         m_allocator       = nullptr;
11622         m_dispatcher      = nullptr;
11623       }
11624 
release()11625       VULKAN_HPP_NAMESPACE::ValidationCacheEXT release()
11626       {
11627         m_device     = nullptr;
11628         m_allocator  = nullptr;
11629         m_dispatcher = nullptr;
11630         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_validationCache, nullptr );
11631       }
11632 
getDevice() const11633       VULKAN_HPP_NAMESPACE::Device getDevice() const
11634       {
11635         return m_device;
11636       }
11637 
getDispatcher() const11638       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
11639       {
11640         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11641         return m_dispatcher;
11642       }
11643 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ValidationCacheEXT & rhs)11644       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ValidationCacheEXT & rhs ) VULKAN_HPP_NOEXCEPT
11645       {
11646         std::swap( m_device, rhs.m_device );
11647         std::swap( m_validationCache, rhs.m_validationCache );
11648         std::swap( m_allocator, rhs.m_allocator );
11649         std::swap( m_dispatcher, rhs.m_dispatcher );
11650       }
11651 
11652       //=== VK_EXT_validation_cache ===
11653 
11654       void merge( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches ) const;
11655 
11656       VULKAN_HPP_NODISCARD std::vector<uint8_t> getData() const;
11657 
11658     private:
11659       VULKAN_HPP_NAMESPACE::Device                                              m_device          = {};
11660       VULKAN_HPP_NAMESPACE::ValidationCacheEXT                                  m_validationCache = {};
11661       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator       = {};
11662       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher      = nullptr;
11663     };
11664 
11665     class VideoSessionKHR
11666     {
11667     public:
11668       using CType   = VkVideoSessionKHR;
11669       using CppType = VULKAN_HPP_NAMESPACE::VideoSessionKHR;
11670 
11671       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionKHR;
11672       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
11673         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
11674 
11675     public:
11676 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)11677       VideoSessionKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
11678                        VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const &                         createInfo,
11679                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11680       {
11681         *this = device.createVideoSessionKHR( createInfo, allocator );
11682       }
11683 #  endif
11684 
VideoSessionKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkVideoSessionKHR videoSession,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)11685       VideoSessionKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
11686                        VkVideoSessionKHR                                                               videoSession,
11687                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11688         : m_device( device )
11689         , m_videoSession( videoSession )
11690         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
11691         , m_dispatcher( device.getDispatcher() )
11692       {
11693       }
11694 
VideoSessionKHR(std::nullptr_t)11695       VideoSessionKHR( std::nullptr_t ) {}
11696 
~VideoSessionKHR()11697       ~VideoSessionKHR()
11698       {
11699         clear();
11700       }
11701 
11702       VideoSessionKHR()                          = delete;
11703       VideoSessionKHR( VideoSessionKHR const & ) = delete;
11704 
VideoSessionKHR(VideoSessionKHR && rhs)11705       VideoSessionKHR( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT
11706         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
11707         , m_videoSession( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSession, {} ) )
11708         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
11709         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
11710       {
11711       }
11712 
11713       VideoSessionKHR & operator=( VideoSessionKHR const & ) = delete;
11714 
operator =(VideoSessionKHR && rhs)11715       VideoSessionKHR & operator=( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT
11716       {
11717         if ( this != &rhs )
11718         {
11719           std::swap( m_device, rhs.m_device );
11720           std::swap( m_videoSession, rhs.m_videoSession );
11721           std::swap( m_allocator, rhs.m_allocator );
11722           std::swap( m_dispatcher, rhs.m_dispatcher );
11723         }
11724         return *this;
11725       }
11726 
operator *() const11727       VULKAN_HPP_NAMESPACE::VideoSessionKHR const & operator*() const VULKAN_HPP_NOEXCEPT
11728       {
11729         return m_videoSession;
11730       }
11731 
operator VULKAN_HPP_NAMESPACE::VideoSessionKHR() const11732       operator VULKAN_HPP_NAMESPACE::VideoSessionKHR() const VULKAN_HPP_NOEXCEPT
11733       {
11734         return m_videoSession;
11735       }
11736 
clear()11737       void clear() VULKAN_HPP_NOEXCEPT
11738       {
11739         if ( m_videoSession )
11740         {
11741           getDispatcher()->vkDestroyVideoSessionKHR( static_cast<VkDevice>( m_device ),
11742                                                      static_cast<VkVideoSessionKHR>( m_videoSession ),
11743                                                      reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11744         }
11745         m_device       = nullptr;
11746         m_videoSession = nullptr;
11747         m_allocator    = nullptr;
11748         m_dispatcher   = nullptr;
11749       }
11750 
release()11751       VULKAN_HPP_NAMESPACE::VideoSessionKHR release()
11752       {
11753         m_device     = nullptr;
11754         m_allocator  = nullptr;
11755         m_dispatcher = nullptr;
11756         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_videoSession, nullptr );
11757       }
11758 
getDevice() const11759       VULKAN_HPP_NAMESPACE::Device getDevice() const
11760       {
11761         return m_device;
11762       }
11763 
getDispatcher() const11764       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
11765       {
11766         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11767         return m_dispatcher;
11768       }
11769 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionKHR & rhs)11770       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionKHR & rhs ) VULKAN_HPP_NOEXCEPT
11771       {
11772         std::swap( m_device, rhs.m_device );
11773         std::swap( m_videoSession, rhs.m_videoSession );
11774         std::swap( m_allocator, rhs.m_allocator );
11775         std::swap( m_dispatcher, rhs.m_dispatcher );
11776       }
11777 
11778       //=== VK_KHR_video_queue ===
11779 
11780       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR> getMemoryRequirements() const;
11781 
11782       void bindMemory( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR> const & bindSessionMemoryInfos ) const;
11783 
11784     private:
11785       VULKAN_HPP_NAMESPACE::Device                                              m_device       = {};
11786       VULKAN_HPP_NAMESPACE::VideoSessionKHR                                     m_videoSession = {};
11787       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator    = {};
11788       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher   = nullptr;
11789     };
11790 
11791     class VideoSessionParametersKHR
11792     {
11793     public:
11794       using CType   = VkVideoSessionParametersKHR;
11795       using CppType = VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR;
11796 
11797       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionParametersKHR;
11798       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
11799         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
11800 
11801     public:
11802 #  if !defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
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)11803       VideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
11804                                  VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const &               createInfo,
11805                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11806       {
11807         *this = device.createVideoSessionParametersKHR( createInfo, allocator );
11808       }
11809 #  endif
11810 
VideoSessionParametersKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkVideoSessionParametersKHR videoSessionParameters,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)11811       VideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
11812                                  VkVideoSessionParametersKHR                                                     videoSessionParameters,
11813                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
11814         : m_device( device )
11815         , m_videoSessionParameters( videoSessionParameters )
11816         , m_allocator( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) )
11817         , m_dispatcher( device.getDispatcher() )
11818       {
11819       }
11820 
VideoSessionParametersKHR(std::nullptr_t)11821       VideoSessionParametersKHR( std::nullptr_t ) {}
11822 
~VideoSessionParametersKHR()11823       ~VideoSessionParametersKHR()
11824       {
11825         clear();
11826       }
11827 
11828       VideoSessionParametersKHR()                                    = delete;
11829       VideoSessionParametersKHR( VideoSessionParametersKHR const & ) = delete;
11830 
VideoSessionParametersKHR(VideoSessionParametersKHR && rhs)11831       VideoSessionParametersKHR( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT
11832         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
11833         , m_videoSessionParameters( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionParameters, {} ) )
11834         , m_allocator( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_allocator, {} ) )
11835         , m_dispatcher( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_dispatcher, nullptr ) )
11836       {
11837       }
11838 
11839       VideoSessionParametersKHR & operator=( VideoSessionParametersKHR const & ) = delete;
11840 
operator =(VideoSessionParametersKHR && rhs)11841       VideoSessionParametersKHR & operator=( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT
11842       {
11843         if ( this != &rhs )
11844         {
11845           std::swap( m_device, rhs.m_device );
11846           std::swap( m_videoSessionParameters, rhs.m_videoSessionParameters );
11847           std::swap( m_allocator, rhs.m_allocator );
11848           std::swap( m_dispatcher, rhs.m_dispatcher );
11849         }
11850         return *this;
11851       }
11852 
operator *() const11853       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & operator*() const VULKAN_HPP_NOEXCEPT
11854       {
11855         return m_videoSessionParameters;
11856       }
11857 
operator VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR() const11858       operator VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR() const VULKAN_HPP_NOEXCEPT
11859       {
11860         return m_videoSessionParameters;
11861       }
11862 
clear()11863       void clear() VULKAN_HPP_NOEXCEPT
11864       {
11865         if ( m_videoSessionParameters )
11866         {
11867           getDispatcher()->vkDestroyVideoSessionParametersKHR( static_cast<VkDevice>( m_device ),
11868                                                                static_cast<VkVideoSessionParametersKHR>( m_videoSessionParameters ),
11869                                                                reinterpret_cast<const VkAllocationCallbacks *>( m_allocator ) );
11870         }
11871         m_device                 = nullptr;
11872         m_videoSessionParameters = nullptr;
11873         m_allocator              = nullptr;
11874         m_dispatcher             = nullptr;
11875       }
11876 
release()11877       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR release()
11878       {
11879         m_device     = nullptr;
11880         m_allocator  = nullptr;
11881         m_dispatcher = nullptr;
11882         return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( m_videoSessionParameters, nullptr );
11883       }
11884 
getDevice() const11885       VULKAN_HPP_NAMESPACE::Device getDevice() const
11886       {
11887         return m_device;
11888       }
11889 
getDispatcher() const11890       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
11891       {
11892         VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION );
11893         return m_dispatcher;
11894       }
11895 
swap(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionParametersKHR & rhs)11896       void swap( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionParametersKHR & rhs ) VULKAN_HPP_NOEXCEPT
11897       {
11898         std::swap( m_device, rhs.m_device );
11899         std::swap( m_videoSessionParameters, rhs.m_videoSessionParameters );
11900         std::swap( m_allocator, rhs.m_allocator );
11901         std::swap( m_dispatcher, rhs.m_dispatcher );
11902       }
11903 
11904       //=== VK_KHR_video_queue ===
11905 
11906       void update( const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo ) const;
11907 
11908     private:
11909       VULKAN_HPP_NAMESPACE::Device                                              m_device                 = {};
11910       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR                           m_videoSessionParameters = {};
11911       const VULKAN_HPP_NAMESPACE::AllocationCallbacks *                         m_allocator              = {};
11912       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher             = nullptr;
11913     };
11914 
11915     //===========================
11916     //=== COMMAND Definitions ===
11917     //===========================
11918 
11919     //=== VK_VERSION_1_0 ===
11920 
11921     VULKAN_HPP_NODISCARD
11922       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance>::Type
createInstance(VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const11923                         Context::createInstance( VULKAN_HPP_NAMESPACE::InstanceCreateInfo const &                                createInfo,
11924                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
11925     {
11926       VULKAN_HPP_NAMESPACE::Instance instance;
11927       VULKAN_HPP_NAMESPACE::Result   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateInstance(
11928         reinterpret_cast<const VkInstanceCreateInfo *>( &createInfo ),
11929         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
11930         reinterpret_cast<VkInstance *>( &instance ) ) );
11931       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11932       {
11933 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11934         return VULKAN_HPP_UNEXPECTED( result );
11935 #  else
11936         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Context::createInstance" );
11937 #  endif
11938       }
11939 
11940       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance( *this, *reinterpret_cast<VkInstance *>( &instance ), allocator );
11941     }
11942 
11943     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
11944       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice>>::Type
enumeratePhysicalDevices() const11945       Instance::enumeratePhysicalDevices() const
11946     {
11947       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDevice> physicalDevices;
11948       uint32_t                                          physicalDeviceCount;
11949       VULKAN_HPP_NAMESPACE::Result                      result;
11950       do
11951       {
11952         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11953           getDispatcher()->vkEnumeratePhysicalDevices( static_cast<VkInstance>( m_instance ), &physicalDeviceCount, nullptr ) );
11954         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceCount )
11955         {
11956           physicalDevices.resize( physicalDeviceCount );
11957           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDevices(
11958             static_cast<VkInstance>( m_instance ), &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice *>( physicalDevices.data() ) ) );
11959         }
11960       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11961       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::eIncomplete ) )
11962       {
11963 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
11964         return VULKAN_HPP_UNEXPECTED( result );
11965 #  else
11966         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::enumeratePhysicalDevices" );
11967 #  endif
11968       }
11969 
11970       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice> physicalDevicesRAII;
11971       physicalDevicesRAII.reserve( physicalDevices.size() );
11972       for ( auto & physicalDevice : physicalDevices )
11973       {
11974         physicalDevicesRAII.emplace_back( *this, *reinterpret_cast<VkPhysicalDevice *>( &physicalDevice ) );
11975       }
11976       return physicalDevicesRAII;
11977     }
11978 
getFeatures() const11979     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures PhysicalDevice::getFeatures() const VULKAN_HPP_NOEXCEPT
11980     {
11981       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures && "Function <vkGetPhysicalDeviceFeatures> requires <VK_VERSION_1_0>" );
11982 
11983       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features;
11984       getDispatcher()->vkGetPhysicalDeviceFeatures( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11985                                                     reinterpret_cast<VkPhysicalDeviceFeatures *>( &features ) );
11986 
11987       return features;
11988     }
11989 
11990     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties
getFormatProperties(VULKAN_HPP_NAMESPACE::Format format) const11991                                            PhysicalDevice::getFormatProperties( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
11992     {
11993       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties && "Function <vkGetPhysicalDeviceFormatProperties> requires <VK_VERSION_1_0>" );
11994 
11995       VULKAN_HPP_NAMESPACE::FormatProperties formatProperties;
11996       getDispatcher()->vkGetPhysicalDeviceFormatProperties(
11997         static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties *>( &formatProperties ) );
11998 
11999       return formatProperties;
12000     }
12001 
12002     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) const12003                                            PhysicalDevice::getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format           format,
12004                                                 VULKAN_HPP_NAMESPACE::ImageType        type,
12005                                                 VULKAN_HPP_NAMESPACE::ImageTiling      tiling,
12006                                                 VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage,
12007                                                 VULKAN_HPP_NAMESPACE::ImageCreateFlags flags ) const
12008     {
12009       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties &&
12010                          "Function <vkGetPhysicalDeviceImageFormatProperties> requires <VK_VERSION_1_0>" );
12011 
12012       VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties;
12013       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12014         getDispatcher()->vkGetPhysicalDeviceImageFormatProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12015                                                                    static_cast<VkFormat>( format ),
12016                                                                    static_cast<VkImageType>( type ),
12017                                                                    static_cast<VkImageTiling>( tiling ),
12018                                                                    static_cast<VkImageUsageFlags>( usage ),
12019                                                                    static_cast<VkImageCreateFlags>( flags ),
12020                                                                    reinterpret_cast<VkImageFormatProperties *>( &imageFormatProperties ) ) );
12021       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" );
12022 
12023       return imageFormatProperties;
12024     }
12025 
getProperties() const12026     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties PhysicalDevice::getProperties() const VULKAN_HPP_NOEXCEPT
12027     {
12028       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties && "Function <vkGetPhysicalDeviceProperties> requires <VK_VERSION_1_0>" );
12029 
12030       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties;
12031       getDispatcher()->vkGetPhysicalDeviceProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12032                                                       reinterpret_cast<VkPhysicalDeviceProperties *>( &properties ) );
12033 
12034       return properties;
12035     }
12036 
getQueueFamilyProperties() const12037     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties> PhysicalDevice::getQueueFamilyProperties() const
12038     {
12039       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties &&
12040                          "Function <vkGetPhysicalDeviceQueueFamilyProperties> requires <VK_VERSION_1_0>" );
12041 
12042       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties> queueFamilyProperties;
12043       uint32_t                                                 queueFamilyPropertyCount;
12044       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
12045       queueFamilyProperties.resize( queueFamilyPropertyCount );
12046       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12047                                                                  &queueFamilyPropertyCount,
12048                                                                  reinterpret_cast<VkQueueFamilyProperties *>( queueFamilyProperties.data() ) );
12049 
12050       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
12051       if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
12052       {
12053         queueFamilyProperties.resize( queueFamilyPropertyCount );
12054       }
12055       return queueFamilyProperties;
12056     }
12057 
getMemoryProperties() const12058     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const VULKAN_HPP_NOEXCEPT
12059     {
12060       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties && "Function <vkGetPhysicalDeviceMemoryProperties> requires <VK_VERSION_1_0>" );
12061 
12062       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties;
12063       getDispatcher()->vkGetPhysicalDeviceMemoryProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12064                                                             reinterpret_cast<VkPhysicalDeviceMemoryProperties *>( &memoryProperties ) );
12065 
12066       return memoryProperties;
12067     }
12068 
getProcAddr(const std::string & name) const12069     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT
12070     {
12071       VULKAN_HPP_ASSERT( getDispatcher()->vkGetInstanceProcAddr && "Function <vkGetInstanceProcAddr> requires <VK_VERSION_1_0>" );
12072 
12073       PFN_vkVoidFunction result = getDispatcher()->vkGetInstanceProcAddr( static_cast<VkInstance>( m_instance ), name.c_str() );
12074 
12075       return result;
12076     }
12077 
getProcAddr(const std::string & name) const12078     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT
12079     {
12080       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceProcAddr && "Function <vkGetDeviceProcAddr> requires <VK_VERSION_1_0>" );
12081 
12082       PFN_vkVoidFunction result = getDispatcher()->vkGetDeviceProcAddr( static_cast<VkDevice>( m_device ), name.c_str() );
12083 
12084       return result;
12085     }
12086 
12087     VULKAN_HPP_NODISCARD
12088       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device>::Type
createDevice(VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12089                         PhysicalDevice::createDevice( VULKAN_HPP_NAMESPACE::DeviceCreateInfo const &                                  createInfo,
12090                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
12091       VULKAN_HPP_RAII_CREATE_NOEXCEPT
12092     {
12093       VULKAN_HPP_NAMESPACE::Device device;
12094       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDevice(
12095         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12096         reinterpret_cast<const VkDeviceCreateInfo *>( &createInfo ),
12097         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12098         reinterpret_cast<VkDevice *>( &device ) ) );
12099       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12100       {
12101 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12102         return VULKAN_HPP_UNEXPECTED( result );
12103 #  else
12104         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "PhysicalDevice::createDevice" );
12105 #  endif
12106       }
12107 
12108       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device( *this, *reinterpret_cast<VkDevice *>( &device ), allocator );
12109     }
12110 
12111     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties>
enumerateInstanceExtensionProperties(Optional<const std::string> layerName) const12112                                            Context::enumerateInstanceExtensionProperties( Optional<const std::string> layerName ) const
12113     {
12114       VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceExtensionProperties &&
12115                          "Function <vkEnumerateInstanceExtensionProperties> requires <VK_VERSION_1_0>" );
12116 
12117       std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> properties;
12118       uint32_t                                               propertyCount;
12119       VULKAN_HPP_NAMESPACE::Result                           result;
12120       do
12121       {
12122         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12123           getDispatcher()->vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
12124         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
12125         {
12126           properties.resize( propertyCount );
12127           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceExtensionProperties(
12128             layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties *>( properties.data() ) ) );
12129         }
12130       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12131       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceExtensionProperties" );
12132       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
12133       if ( propertyCount < properties.size() )
12134       {
12135         properties.resize( propertyCount );
12136       }
12137       return properties;
12138     }
12139 
12140     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties>
enumerateDeviceExtensionProperties(Optional<const std::string> layerName) const12141                                            PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
12142     {
12143       VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateDeviceExtensionProperties && "Function <vkEnumerateDeviceExtensionProperties> requires <VK_VERSION_1_0>" );
12144 
12145       std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> properties;
12146       uint32_t                                               propertyCount;
12147       VULKAN_HPP_NAMESPACE::Result                           result;
12148       do
12149       {
12150         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateDeviceExtensionProperties(
12151           static_cast<VkPhysicalDevice>( m_physicalDevice ), layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
12152         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
12153         {
12154           properties.resize( propertyCount );
12155           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12156             getDispatcher()->vkEnumerateDeviceExtensionProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12157                                                                    layerName ? layerName->c_str() : nullptr,
12158                                                                    &propertyCount,
12159                                                                    reinterpret_cast<VkExtensionProperties *>( properties.data() ) ) );
12160         }
12161       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12162       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" );
12163       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
12164       if ( propertyCount < properties.size() )
12165       {
12166         properties.resize( propertyCount );
12167       }
12168       return properties;
12169     }
12170 
enumerateInstanceLayerProperties() const12171     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> Context::enumerateInstanceLayerProperties() const
12172     {
12173       VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceLayerProperties && "Function <vkEnumerateInstanceLayerProperties> requires <VK_VERSION_1_0>" );
12174 
12175       std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> properties;
12176       uint32_t                                           propertyCount;
12177       VULKAN_HPP_NAMESPACE::Result                       result;
12178       do
12179       {
12180         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
12181         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
12182         {
12183           properties.resize( propertyCount );
12184           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12185             getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties *>( properties.data() ) ) );
12186         }
12187       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12188       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceLayerProperties" );
12189       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
12190       if ( propertyCount < properties.size() )
12191       {
12192         properties.resize( propertyCount );
12193       }
12194       return properties;
12195     }
12196 
enumerateDeviceLayerProperties() const12197     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> PhysicalDevice::enumerateDeviceLayerProperties() const
12198     {
12199       VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateDeviceLayerProperties && "Function <vkEnumerateDeviceLayerProperties> requires <VK_VERSION_1_0>" );
12200 
12201       std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> properties;
12202       uint32_t                                           propertyCount;
12203       VULKAN_HPP_NAMESPACE::Result                       result;
12204       do
12205       {
12206         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12207           getDispatcher()->vkEnumerateDeviceLayerProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
12208         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
12209         {
12210           properties.resize( propertyCount );
12211           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateDeviceLayerProperties(
12212             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkLayerProperties *>( properties.data() ) ) );
12213         }
12214       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12215       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" );
12216       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
12217       if ( propertyCount < properties.size() )
12218       {
12219         properties.resize( propertyCount );
12220       }
12221       return properties;
12222     }
12223 
12224     VULKAN_HPP_NODISCARD
12225       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Queue>::Type
getQueue(uint32_t queueFamilyIndex,uint32_t queueIndex) const12226                         Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12227     {
12228       VULKAN_HPP_NAMESPACE::Queue queue;
12229       getDispatcher()->vkGetDeviceQueue( static_cast<VkDevice>( m_device ), queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue *>( &queue ) );
12230 
12231       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Queue( *this, *reinterpret_cast<VkQueue *>( &queue ) );
12232     }
12233 
submit(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,VULKAN_HPP_NAMESPACE::Fence fence) const12234     VULKAN_HPP_INLINE void Queue::submit( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,
12235                                           VULKAN_HPP_NAMESPACE::Fence                                                      fence ) const
12236     {
12237       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit && "Function <vkQueueSubmit> requires <VK_VERSION_1_0>" );
12238 
12239       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueueSubmit(
12240         static_cast<VkQueue>( m_queue ), submits.size(), reinterpret_cast<const VkSubmitInfo *>( submits.data() ), static_cast<VkFence>( fence ) ) );
12241       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit" );
12242     }
12243 
waitIdle() const12244     VULKAN_HPP_INLINE void Queue::waitIdle() const
12245     {
12246       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueWaitIdle && "Function <vkQueueWaitIdle> requires <VK_VERSION_1_0>" );
12247 
12248       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueueWaitIdle( static_cast<VkQueue>( m_queue ) ) );
12249       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::waitIdle" );
12250     }
12251 
waitIdle() const12252     VULKAN_HPP_INLINE void Device::waitIdle() const
12253     {
12254       VULKAN_HPP_ASSERT( getDispatcher()->vkDeviceWaitIdle && "Function <vkDeviceWaitIdle> requires <VK_VERSION_1_0>" );
12255 
12256       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDeviceWaitIdle( static_cast<VkDevice>( m_device ) ) );
12257       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitIdle" );
12258     }
12259 
12260     VULKAN_HPP_NODISCARD
12261       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceMemory>::Type
allocateMemory(VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & allocateInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12262                         Device::allocateMemory( VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const &                                allocateInfo,
12263                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12264     {
12265       VULKAN_HPP_NAMESPACE::DeviceMemory memory;
12266       VULKAN_HPP_NAMESPACE::Result       result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAllocateMemory(
12267         static_cast<VkDevice>( m_device ),
12268         reinterpret_cast<const VkMemoryAllocateInfo *>( &allocateInfo ),
12269         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12270         reinterpret_cast<VkDeviceMemory *>( &memory ) ) );
12271       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12272       {
12273 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12274         return VULKAN_HPP_UNEXPECTED( result );
12275 #  else
12276         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::allocateMemory" );
12277 #  endif
12278       }
12279 
12280       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceMemory( *this, *reinterpret_cast<VkDeviceMemory *>( &memory ), allocator );
12281     }
12282 
mapMemory(VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::DeviceSize size,VULKAN_HPP_NAMESPACE::MemoryMapFlags flags) const12283     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void * DeviceMemory::mapMemory( VULKAN_HPP_NAMESPACE::DeviceSize     offset,
12284                                                                            VULKAN_HPP_NAMESPACE::DeviceSize     size,
12285                                                                            VULKAN_HPP_NAMESPACE::MemoryMapFlags flags ) const
12286     {
12287       VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory && "Function <vkMapMemory> requires <VK_VERSION_1_0>" );
12288 
12289       void *                       pData;
12290       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkMapMemory( static_cast<VkDevice>( m_device ),
12291                                                                                                                      static_cast<VkDeviceMemory>( m_memory ),
12292                                                                                                                      static_cast<VkDeviceSize>( offset ),
12293                                                                                                                      static_cast<VkDeviceSize>( size ),
12294                                                                                                                      static_cast<VkMemoryMapFlags>( flags ),
12295                                                                                                                      &pData ) );
12296       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::DeviceMemory::mapMemory" );
12297 
12298       return pData;
12299     }
12300 
unmapMemory() const12301     VULKAN_HPP_INLINE void DeviceMemory::unmapMemory() const VULKAN_HPP_NOEXCEPT
12302     {
12303       VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory && "Function <vkUnmapMemory> requires <VK_VERSION_1_0>" );
12304 
12305       getDispatcher()->vkUnmapMemory( static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_memory ) );
12306     }
12307 
12308     VULKAN_HPP_INLINE void
flushMappedMemoryRanges(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges) const12309       Device::flushMappedMemoryRanges( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const
12310     {
12311       VULKAN_HPP_ASSERT( getDispatcher()->vkFlushMappedMemoryRanges && "Function <vkFlushMappedMemoryRanges> requires <VK_VERSION_1_0>" );
12312 
12313       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkFlushMappedMemoryRanges(
12314         static_cast<VkDevice>( m_device ), memoryRanges.size(), reinterpret_cast<const VkMappedMemoryRange *>( memoryRanges.data() ) ) );
12315       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" );
12316     }
12317 
12318     VULKAN_HPP_INLINE void
invalidateMappedMemoryRanges(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges) const12319       Device::invalidateMappedMemoryRanges( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const
12320     {
12321       VULKAN_HPP_ASSERT( getDispatcher()->vkInvalidateMappedMemoryRanges && "Function <vkInvalidateMappedMemoryRanges> requires <VK_VERSION_1_0>" );
12322 
12323       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkInvalidateMappedMemoryRanges(
12324         static_cast<VkDevice>( m_device ), memoryRanges.size(), reinterpret_cast<const VkMappedMemoryRange *>( memoryRanges.data() ) ) );
12325       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" );
12326     }
12327 
getCommitment() const12328     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize DeviceMemory::getCommitment() const VULKAN_HPP_NOEXCEPT
12329     {
12330       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryCommitment && "Function <vkGetDeviceMemoryCommitment> requires <VK_VERSION_1_0>" );
12331 
12332       VULKAN_HPP_NAMESPACE::DeviceSize committedMemoryInBytes;
12333       getDispatcher()->vkGetDeviceMemoryCommitment(
12334         static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_memory ), reinterpret_cast<VkDeviceSize *>( &committedMemoryInBytes ) );
12335 
12336       return committedMemoryInBytes;
12337     }
12338 
bindMemory(VULKAN_HPP_NAMESPACE::DeviceMemory memory,VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset) const12339     VULKAN_HPP_INLINE void Buffer::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const
12340     {
12341       VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory && "Function <vkBindBufferMemory> requires <VK_VERSION_1_0>" );
12342 
12343       VULKAN_HPP_NAMESPACE::Result result =
12344         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindBufferMemory( static_cast<VkDevice>( m_device ),
12345                                                                                         static_cast<VkBuffer>( m_buffer ),
12346                                                                                         static_cast<VkDeviceMemory>( memory ),
12347                                                                                         static_cast<VkDeviceSize>( memoryOffset ) ) );
12348       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Buffer::bindMemory" );
12349     }
12350 
bindMemory(VULKAN_HPP_NAMESPACE::DeviceMemory memory,VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset) const12351     VULKAN_HPP_INLINE void Image::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const
12352     {
12353       VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory && "Function <vkBindImageMemory> requires <VK_VERSION_1_0>" );
12354 
12355       VULKAN_HPP_NAMESPACE::Result result =
12356         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindImageMemory( static_cast<VkDevice>( m_device ),
12357                                                                                        static_cast<VkImage>( m_image ),
12358                                                                                        static_cast<VkDeviceMemory>( memory ),
12359                                                                                        static_cast<VkDeviceSize>( memoryOffset ) ) );
12360       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Image::bindMemory" );
12361     }
12362 
getMemoryRequirements() const12363     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements Buffer::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT
12364     {
12365       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements && "Function <vkGetBufferMemoryRequirements> requires <VK_VERSION_1_0>" );
12366 
12367       VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements;
12368       getDispatcher()->vkGetBufferMemoryRequirements(
12369         static_cast<VkDevice>( m_device ), static_cast<VkBuffer>( m_buffer ), reinterpret_cast<VkMemoryRequirements *>( &memoryRequirements ) );
12370 
12371       return memoryRequirements;
12372     }
12373 
getMemoryRequirements() const12374     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements Image::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT
12375     {
12376       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements && "Function <vkGetImageMemoryRequirements> requires <VK_VERSION_1_0>" );
12377 
12378       VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements;
12379       getDispatcher()->vkGetImageMemoryRequirements(
12380         static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), reinterpret_cast<VkMemoryRequirements *>( &memoryRequirements ) );
12381 
12382       return memoryRequirements;
12383     }
12384 
getSparseMemoryRequirements() const12385     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements> Image::getSparseMemoryRequirements() const
12386     {
12387       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements && "Function <vkGetImageSparseMemoryRequirements> requires <VK_VERSION_1_0>" );
12388 
12389       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements> sparseMemoryRequirements;
12390       uint32_t                                                         sparseMemoryRequirementCount;
12391       getDispatcher()->vkGetImageSparseMemoryRequirements(
12392         static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), &sparseMemoryRequirementCount, nullptr );
12393       sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
12394       getDispatcher()->vkGetImageSparseMemoryRequirements( static_cast<VkDevice>( m_device ),
12395                                                            static_cast<VkImage>( m_image ),
12396                                                            &sparseMemoryRequirementCount,
12397                                                            reinterpret_cast<VkSparseImageMemoryRequirements *>( sparseMemoryRequirements.data() ) );
12398 
12399       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
12400       if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
12401       {
12402         sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
12403       }
12404       return sparseMemoryRequirements;
12405     }
12406 
12407     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) const12408                                            PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format              format,
12409                                                       VULKAN_HPP_NAMESPACE::ImageType           type,
12410                                                       VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,
12411                                                       VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage,
12412                                                       VULKAN_HPP_NAMESPACE::ImageTiling         tiling ) const
12413     {
12414       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties &&
12415                          "Function <vkGetPhysicalDeviceSparseImageFormatProperties> requires <VK_VERSION_1_0>" );
12416 
12417       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties> properties;
12418       uint32_t                                                       propertyCount;
12419       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12420                                                                        static_cast<VkFormat>( format ),
12421                                                                        static_cast<VkImageType>( type ),
12422                                                                        static_cast<VkSampleCountFlagBits>( samples ),
12423                                                                        static_cast<VkImageUsageFlags>( usage ),
12424                                                                        static_cast<VkImageTiling>( tiling ),
12425                                                                        &propertyCount,
12426                                                                        nullptr );
12427       properties.resize( propertyCount );
12428       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
12429                                                                        static_cast<VkFormat>( format ),
12430                                                                        static_cast<VkImageType>( type ),
12431                                                                        static_cast<VkSampleCountFlagBits>( samples ),
12432                                                                        static_cast<VkImageUsageFlags>( usage ),
12433                                                                        static_cast<VkImageTiling>( tiling ),
12434                                                                        &propertyCount,
12435                                                                        reinterpret_cast<VkSparseImageFormatProperties *>( properties.data() ) );
12436 
12437       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
12438       if ( propertyCount < properties.size() )
12439       {
12440         properties.resize( propertyCount );
12441       }
12442       return properties;
12443     }
12444 
bindSparse(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,VULKAN_HPP_NAMESPACE::Fence fence) const12445     VULKAN_HPP_INLINE void Queue::bindSparse( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,
12446                                               VULKAN_HPP_NAMESPACE::Fence                                                          fence ) const
12447     {
12448       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBindSparse && "Function <vkQueueBindSparse> requires <VK_VERSION_1_0>" );
12449 
12450       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueueBindSparse(
12451         static_cast<VkQueue>( m_queue ), bindInfo.size(), reinterpret_cast<const VkBindSparseInfo *>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
12452       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::bindSparse" );
12453     }
12454 
12455     VULKAN_HPP_NODISCARD
12456       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence>::Type
createFence(VULKAN_HPP_NAMESPACE::FenceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12457                         Device::createFence( VULKAN_HPP_NAMESPACE::FenceCreateInfo const &                                   createInfo,
12458                            VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12459     {
12460       VULKAN_HPP_NAMESPACE::Fence  fence;
12461       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateFence(
12462         static_cast<VkDevice>( m_device ),
12463         reinterpret_cast<const VkFenceCreateInfo *>( &createInfo ),
12464         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12465         reinterpret_cast<VkFence *>( &fence ) ) );
12466       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12467       {
12468 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12469         return VULKAN_HPP_UNEXPECTED( result );
12470 #  else
12471         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createFence" );
12472 #  endif
12473       }
12474 
12475       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence( *this, *reinterpret_cast<VkFence *>( &fence ), allocator );
12476     }
12477 
resetFences(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences) const12478     VULKAN_HPP_INLINE void Device::resetFences( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences ) const
12479     {
12480       VULKAN_HPP_ASSERT( getDispatcher()->vkResetFences && "Function <vkResetFences> requires <VK_VERSION_1_0>" );
12481 
12482       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12483         getDispatcher()->vkResetFences( static_cast<VkDevice>( m_device ), fences.size(), reinterpret_cast<const VkFence *>( fences.data() ) ) );
12484       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetFences" );
12485     }
12486 
getStatus() const12487     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Fence::getStatus() const
12488     {
12489       VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceStatus && "Function <vkGetFenceStatus> requires <VK_VERSION_1_0>" );
12490 
12491       VULKAN_HPP_NAMESPACE::Result result =
12492         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetFenceStatus( static_cast<VkDevice>( m_device ), static_cast<VkFence>( m_fence ) ) );
12493       VULKAN_HPP_NAMESPACE::detail::resultCheck(
12494         result, VULKAN_HPP_NAMESPACE_STRING "::Fence::getStatus", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } );
12495 
12496       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
12497     }
12498 
waitForFences(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,VULKAN_HPP_NAMESPACE::Bool32 waitAll,uint64_t timeout) const12499     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::waitForFences(
12500       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences, VULKAN_HPP_NAMESPACE::Bool32 waitAll, uint64_t timeout ) const
12501     {
12502       VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForFences && "Function <vkWaitForFences> requires <VK_VERSION_1_0>" );
12503 
12504       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkWaitForFences(
12505         static_cast<VkDevice>( m_device ), fences.size(), reinterpret_cast<const VkFence *>( fences.data() ), static_cast<VkBool32>( waitAll ), timeout ) );
12506       VULKAN_HPP_NAMESPACE::detail::resultCheck(
12507         result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitForFences", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } );
12508 
12509       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
12510     }
12511 
12512     VULKAN_HPP_NODISCARD
12513       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Semaphore>::Type
createSemaphore(VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12514                         Device::createSemaphore( VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const &                               createInfo,
12515                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12516     {
12517       VULKAN_HPP_NAMESPACE::Semaphore semaphore;
12518       VULKAN_HPP_NAMESPACE::Result    result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSemaphore(
12519         static_cast<VkDevice>( m_device ),
12520         reinterpret_cast<const VkSemaphoreCreateInfo *>( &createInfo ),
12521         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12522         reinterpret_cast<VkSemaphore *>( &semaphore ) ) );
12523       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12524       {
12525 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12526         return VULKAN_HPP_UNEXPECTED( result );
12527 #  else
12528         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createSemaphore" );
12529 #  endif
12530       }
12531 
12532       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Semaphore( *this, *reinterpret_cast<VkSemaphore *>( &semaphore ), allocator );
12533     }
12534 
12535     VULKAN_HPP_NODISCARD
12536       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Event>::Type
createEvent(VULKAN_HPP_NAMESPACE::EventCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12537                         Device::createEvent( VULKAN_HPP_NAMESPACE::EventCreateInfo const &                                   createInfo,
12538                            VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12539     {
12540       VULKAN_HPP_NAMESPACE::Event  event;
12541       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateEvent(
12542         static_cast<VkDevice>( m_device ),
12543         reinterpret_cast<const VkEventCreateInfo *>( &createInfo ),
12544         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12545         reinterpret_cast<VkEvent *>( &event ) ) );
12546       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12547       {
12548 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12549         return VULKAN_HPP_UNEXPECTED( result );
12550 #  else
12551         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createEvent" );
12552 #  endif
12553       }
12554 
12555       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Event( *this, *reinterpret_cast<VkEvent *>( &event ), allocator );
12556     }
12557 
getStatus() const12558     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Event::getStatus() const
12559     {
12560       VULKAN_HPP_ASSERT( getDispatcher()->vkGetEventStatus && "Function <vkGetEventStatus> requires <VK_VERSION_1_0>" );
12561 
12562       VULKAN_HPP_NAMESPACE::Result result =
12563         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetEventStatus( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
12564       VULKAN_HPP_NAMESPACE::detail::resultCheck(
12565         result, VULKAN_HPP_NAMESPACE_STRING "::Event::getStatus", { VULKAN_HPP_NAMESPACE::Result::eEventSet, VULKAN_HPP_NAMESPACE::Result::eEventReset } );
12566 
12567       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
12568     }
12569 
set() const12570     VULKAN_HPP_INLINE void Event::set() const
12571     {
12572       VULKAN_HPP_ASSERT( getDispatcher()->vkSetEvent && "Function <vkSetEvent> requires <VK_VERSION_1_0>" );
12573 
12574       VULKAN_HPP_NAMESPACE::Result result =
12575         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetEvent( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
12576       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Event::set" );
12577     }
12578 
reset() const12579     VULKAN_HPP_INLINE void Event::reset() const
12580     {
12581       VULKAN_HPP_ASSERT( getDispatcher()->vkResetEvent && "Function <vkResetEvent> requires <VK_VERSION_1_0>" );
12582 
12583       VULKAN_HPP_NAMESPACE::Result result =
12584         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkResetEvent( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
12585       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Event::reset" );
12586     }
12587 
12588     VULKAN_HPP_NODISCARD
12589       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::QueryPool>::Type
createQueryPool(VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12590                         Device::createQueryPool( VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const &                               createInfo,
12591                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12592     {
12593       VULKAN_HPP_NAMESPACE::QueryPool queryPool;
12594       VULKAN_HPP_NAMESPACE::Result    result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateQueryPool(
12595         static_cast<VkDevice>( m_device ),
12596         reinterpret_cast<const VkQueryPoolCreateInfo *>( &createInfo ),
12597         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12598         reinterpret_cast<VkQueryPool *>( &queryPool ) ) );
12599       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12600       {
12601 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12602         return VULKAN_HPP_UNEXPECTED( result );
12603 #  else
12604         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createQueryPool" );
12605 #  endif
12606       }
12607 
12608       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::QueryPool( *this, *reinterpret_cast<VkQueryPool *>( &queryPool ), allocator );
12609     }
12610 
12611     template <typename DataType>
getResults(uint32_t firstQuery,uint32_t queryCount,size_t dataSize,VULKAN_HPP_NAMESPACE::DeviceSize stride,VULKAN_HPP_NAMESPACE::QueryResultFlags flags) const12612     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, std::vector<DataType>> QueryPool::getResults(
12613       uint32_t firstQuery, uint32_t queryCount, size_t dataSize, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const
12614     {
12615       VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueryPoolResults && "Function <vkGetQueryPoolResults> requires <VK_VERSION_1_0>" );
12616 
12617       VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
12618       std::vector<DataType>        data( dataSize / sizeof( DataType ) );
12619       VULKAN_HPP_NAMESPACE::Result result =
12620         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetQueryPoolResults( static_cast<VkDevice>( m_device ),
12621                                                                                            static_cast<VkQueryPool>( m_queryPool ),
12622                                                                                            firstQuery,
12623                                                                                            queryCount,
12624                                                                                            data.size() * sizeof( DataType ),
12625                                                                                            reinterpret_cast<void *>( data.data() ),
12626                                                                                            static_cast<VkDeviceSize>( stride ),
12627                                                                                            static_cast<VkQueryResultFlags>( flags ) ) );
12628       VULKAN_HPP_NAMESPACE::detail::resultCheck(
12629         result, VULKAN_HPP_NAMESPACE_STRING "::QueryPool::getResults", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } );
12630 
12631       return std::make_pair( result, std::move( data ) );
12632     }
12633 
12634     template <typename DataType>
getResult(uint32_t firstQuery,uint32_t queryCount,VULKAN_HPP_NAMESPACE::DeviceSize stride,VULKAN_HPP_NAMESPACE::QueryResultFlags flags) const12635     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, DataType> QueryPool::getResult(
12636       uint32_t firstQuery, uint32_t queryCount, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const
12637     {
12638       VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueryPoolResults && "Function <vkGetQueryPoolResults> requires <VK_VERSION_1_0>" );
12639 
12640       DataType                     data;
12641       VULKAN_HPP_NAMESPACE::Result result =
12642         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetQueryPoolResults( static_cast<VkDevice>( m_device ),
12643                                                                                            static_cast<VkQueryPool>( m_queryPool ),
12644                                                                                            firstQuery,
12645                                                                                            queryCount,
12646                                                                                            sizeof( DataType ),
12647                                                                                            reinterpret_cast<void *>( &data ),
12648                                                                                            static_cast<VkDeviceSize>( stride ),
12649                                                                                            static_cast<VkQueryResultFlags>( flags ) ) );
12650       VULKAN_HPP_NAMESPACE::detail::resultCheck(
12651         result, VULKAN_HPP_NAMESPACE_STRING "::QueryPool::getResult", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } );
12652 
12653       return std::make_pair( result, std::move( data ) );
12654     }
12655 
12656     VULKAN_HPP_NODISCARD
12657       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Buffer>::Type
createBuffer(VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12658                         Device::createBuffer( VULKAN_HPP_NAMESPACE::BufferCreateInfo const &                                  createInfo,
12659                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12660     {
12661       VULKAN_HPP_NAMESPACE::Buffer buffer;
12662       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateBuffer(
12663         static_cast<VkDevice>( m_device ),
12664         reinterpret_cast<const VkBufferCreateInfo *>( &createInfo ),
12665         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12666         reinterpret_cast<VkBuffer *>( &buffer ) ) );
12667       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12668       {
12669 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12670         return VULKAN_HPP_UNEXPECTED( result );
12671 #  else
12672         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createBuffer" );
12673 #  endif
12674       }
12675 
12676       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Buffer( *this, *reinterpret_cast<VkBuffer *>( &buffer ), allocator );
12677     }
12678 
12679     VULKAN_HPP_NODISCARD
12680       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferView>::Type
createBufferView(VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12681                         Device::createBufferView( VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const &                              createInfo,
12682                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
12683       VULKAN_HPP_RAII_CREATE_NOEXCEPT
12684     {
12685       VULKAN_HPP_NAMESPACE::BufferView view;
12686       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateBufferView(
12687         static_cast<VkDevice>( m_device ),
12688         reinterpret_cast<const VkBufferViewCreateInfo *>( &createInfo ),
12689         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12690         reinterpret_cast<VkBufferView *>( &view ) ) );
12691       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12692       {
12693 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12694         return VULKAN_HPP_UNEXPECTED( result );
12695 #  else
12696         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createBufferView" );
12697 #  endif
12698       }
12699 
12700       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferView( *this, *reinterpret_cast<VkBufferView *>( &view ), allocator );
12701     }
12702 
12703     VULKAN_HPP_NODISCARD
12704       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Image>::Type
createImage(VULKAN_HPP_NAMESPACE::ImageCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12705                         Device::createImage( VULKAN_HPP_NAMESPACE::ImageCreateInfo const &                                   createInfo,
12706                            VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12707     {
12708       VULKAN_HPP_NAMESPACE::Image  image;
12709       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateImage(
12710         static_cast<VkDevice>( m_device ),
12711         reinterpret_cast<const VkImageCreateInfo *>( &createInfo ),
12712         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12713         reinterpret_cast<VkImage *>( &image ) ) );
12714       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12715       {
12716 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12717         return VULKAN_HPP_UNEXPECTED( result );
12718 #  else
12719         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createImage" );
12720 #  endif
12721       }
12722 
12723       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Image( *this, *reinterpret_cast<VkImage *>( &image ), allocator );
12724     }
12725 
12726     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout
getSubresourceLayout(const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource) const12727                                            Image::getSubresourceLayout( const VULKAN_HPP_NAMESPACE::ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT
12728     {
12729       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSubresourceLayout && "Function <vkGetImageSubresourceLayout> requires <VK_VERSION_1_0>" );
12730 
12731       VULKAN_HPP_NAMESPACE::SubresourceLayout layout;
12732       getDispatcher()->vkGetImageSubresourceLayout( static_cast<VkDevice>( m_device ),
12733                                                     static_cast<VkImage>( m_image ),
12734                                                     reinterpret_cast<const VkImageSubresource *>( &subresource ),
12735                                                     reinterpret_cast<VkSubresourceLayout *>( &layout ) );
12736 
12737       return layout;
12738     }
12739 
12740     VULKAN_HPP_NODISCARD
12741       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ImageView>::Type
createImageView(VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12742                         Device::createImageView( VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const &                               createInfo,
12743                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12744     {
12745       VULKAN_HPP_NAMESPACE::ImageView view;
12746       VULKAN_HPP_NAMESPACE::Result    result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateImageView(
12747         static_cast<VkDevice>( m_device ),
12748         reinterpret_cast<const VkImageViewCreateInfo *>( &createInfo ),
12749         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12750         reinterpret_cast<VkImageView *>( &view ) ) );
12751       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12752       {
12753 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12754         return VULKAN_HPP_UNEXPECTED( result );
12755 #  else
12756         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createImageView" );
12757 #  endif
12758       }
12759 
12760       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ImageView( *this, *reinterpret_cast<VkImageView *>( &view ), allocator );
12761     }
12762 
12763     VULKAN_HPP_NODISCARD
12764       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderModule>::Type
createShaderModule(VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12765                         Device::createShaderModule( VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const &                            createInfo,
12766                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
12767       VULKAN_HPP_RAII_CREATE_NOEXCEPT
12768     {
12769       VULKAN_HPP_NAMESPACE::ShaderModule shaderModule;
12770       VULKAN_HPP_NAMESPACE::Result       result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateShaderModule(
12771         static_cast<VkDevice>( m_device ),
12772         reinterpret_cast<const VkShaderModuleCreateInfo *>( &createInfo ),
12773         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12774         reinterpret_cast<VkShaderModule *>( &shaderModule ) ) );
12775       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12776       {
12777 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12778         return VULKAN_HPP_UNEXPECTED( result );
12779 #  else
12780         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createShaderModule" );
12781 #  endif
12782       }
12783 
12784       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderModule( *this, *reinterpret_cast<VkShaderModule *>( &shaderModule ), allocator );
12785     }
12786 
12787     VULKAN_HPP_NODISCARD
12788       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache>::Type
createPipelineCache(VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12789                         Device::createPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const &                           createInfo,
12790                                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
12791       VULKAN_HPP_RAII_CREATE_NOEXCEPT
12792     {
12793       VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache;
12794       VULKAN_HPP_NAMESPACE::Result        result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreatePipelineCache(
12795         static_cast<VkDevice>( m_device ),
12796         reinterpret_cast<const VkPipelineCacheCreateInfo *>( &createInfo ),
12797         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12798         reinterpret_cast<VkPipelineCache *>( &pipelineCache ) ) );
12799       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12800       {
12801 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12802         return VULKAN_HPP_UNEXPECTED( result );
12803 #  else
12804         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createPipelineCache" );
12805 #  endif
12806       }
12807 
12808       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache( *this, *reinterpret_cast<VkPipelineCache *>( &pipelineCache ), allocator );
12809     }
12810 
getData() const12811     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> PipelineCache::getData() const
12812     {
12813       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineCacheData && "Function <vkGetPipelineCacheData> requires <VK_VERSION_1_0>" );
12814 
12815       std::vector<uint8_t>         data;
12816       size_t                       dataSize;
12817       VULKAN_HPP_NAMESPACE::Result result;
12818       do
12819       {
12820         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12821           getDispatcher()->vkGetPipelineCacheData( static_cast<VkDevice>( m_device ), static_cast<VkPipelineCache>( m_pipelineCache ), &dataSize, nullptr ) );
12822         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
12823         {
12824           data.resize( dataSize );
12825           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineCacheData(
12826             static_cast<VkDevice>( m_device ), static_cast<VkPipelineCache>( m_pipelineCache ), &dataSize, reinterpret_cast<void *>( data.data() ) ) );
12827         }
12828       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12829       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PipelineCache::getData" );
12830       VULKAN_HPP_ASSERT( dataSize <= data.size() );
12831       if ( dataSize < data.size() )
12832       {
12833         data.resize( dataSize );
12834       }
12835       return data;
12836     }
12837 
merge(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches) const12838     VULKAN_HPP_INLINE void PipelineCache::merge( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches ) const
12839     {
12840       VULKAN_HPP_ASSERT( getDispatcher()->vkMergePipelineCaches && "Function <vkMergePipelineCaches> requires <VK_VERSION_1_0>" );
12841 
12842       VULKAN_HPP_NAMESPACE::Result result =
12843         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkMergePipelineCaches( static_cast<VkDevice>( m_device ),
12844                                                                                            static_cast<VkPipelineCache>( m_pipelineCache ),
12845                                                                                            srcCaches.size(),
12846                                                                                            reinterpret_cast<const VkPipelineCache *>( srcCaches.data() ) ) );
12847       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PipelineCache::merge" );
12848     }
12849 
12850     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
12851       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
createGraphicsPipelines(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) const12852       Device::createGraphicsPipelines(
12853         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
12854         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo> const &                   createInfos,
12855         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator ) const
12856     {
12857       std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
12858       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateGraphicsPipelines(
12859         static_cast<VkDevice>( m_device ),
12860         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
12861         createInfos.size(),
12862         reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( createInfos.data() ),
12863         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12864         reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
12865       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
12866       {
12867 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12868         return VULKAN_HPP_UNEXPECTED( result );
12869 #  else
12870         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createGraphicsPipelines" );
12871 #  endif
12872       }
12873 
12874       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline> pipelinesRAII;
12875       pipelinesRAII.reserve( pipelines.size() );
12876       for ( auto & pipeline : pipelines )
12877       {
12878         pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
12879       }
12880       return pipelinesRAII;
12881     }
12882 
12883     VULKAN_HPP_NODISCARD
12884       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
createGraphicsPipeline(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) const12885                         Device::createGraphicsPipeline(
12886         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
12887         VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const &                                                     createInfo,
12888         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12889     {
12890       VULKAN_HPP_NAMESPACE::Pipeline pipeline;
12891       VULKAN_HPP_NAMESPACE::Result   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateGraphicsPipelines(
12892         static_cast<VkDevice>( m_device ),
12893         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
12894         1,
12895         reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( &createInfo ),
12896         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12897         reinterpret_cast<VkPipeline *>( &pipeline ) ) );
12898       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
12899       {
12900 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12901         return VULKAN_HPP_UNEXPECTED( result );
12902 #  else
12903         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createGraphicsPipeline" );
12904 #  endif
12905       }
12906 
12907       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
12908     }
12909 
12910     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
12911       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
createComputePipelines(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) const12912       Device::createComputePipelines(
12913         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
12914         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo> const &                    createInfos,
12915         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator ) const
12916     {
12917       std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
12918       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateComputePipelines(
12919         static_cast<VkDevice>( m_device ),
12920         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
12921         createInfos.size(),
12922         reinterpret_cast<const VkComputePipelineCreateInfo *>( createInfos.data() ),
12923         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12924         reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
12925       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
12926       {
12927 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12928         return VULKAN_HPP_UNEXPECTED( result );
12929 #  else
12930         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createComputePipelines" );
12931 #  endif
12932       }
12933 
12934       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline> pipelinesRAII;
12935       pipelinesRAII.reserve( pipelines.size() );
12936       for ( auto & pipeline : pipelines )
12937       {
12938         pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
12939       }
12940       return pipelinesRAII;
12941     }
12942 
12943     VULKAN_HPP_NODISCARD
12944       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
createComputePipeline(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) const12945       Device::createComputePipeline( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
12946                                      VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const &                                                      createInfo,
12947                                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
12948       VULKAN_HPP_RAII_CREATE_NOEXCEPT
12949     {
12950       VULKAN_HPP_NAMESPACE::Pipeline pipeline;
12951       VULKAN_HPP_NAMESPACE::Result   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateComputePipelines(
12952         static_cast<VkDevice>( m_device ),
12953         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
12954         1,
12955         reinterpret_cast<const VkComputePipelineCreateInfo *>( &createInfo ),
12956         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12957         reinterpret_cast<VkPipeline *>( &pipeline ) ) );
12958       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
12959       {
12960 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12961         return VULKAN_HPP_UNEXPECTED( result );
12962 #  else
12963         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createComputePipeline" );
12964 #  endif
12965       }
12966 
12967       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
12968     }
12969 
12970     VULKAN_HPP_NODISCARD
12971       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineLayout>::Type
createPipelineLayout(VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12972                         Device::createPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const &                          createInfo,
12973                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
12974       VULKAN_HPP_RAII_CREATE_NOEXCEPT
12975     {
12976       VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout;
12977       VULKAN_HPP_NAMESPACE::Result         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreatePipelineLayout(
12978         static_cast<VkDevice>( m_device ),
12979         reinterpret_cast<const VkPipelineLayoutCreateInfo *>( &createInfo ),
12980         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
12981         reinterpret_cast<VkPipelineLayout *>( &pipelineLayout ) ) );
12982       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12983       {
12984 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
12985         return VULKAN_HPP_UNEXPECTED( result );
12986 #  else
12987         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createPipelineLayout" );
12988 #  endif
12989       }
12990 
12991       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineLayout( *this, *reinterpret_cast<VkPipelineLayout *>( &pipelineLayout ), allocator );
12992     }
12993 
12994     VULKAN_HPP_NODISCARD
12995       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Sampler>::Type
createSampler(VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const12996                         Device::createSampler( VULKAN_HPP_NAMESPACE::SamplerCreateInfo const &                                 createInfo,
12997                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
12998     {
12999       VULKAN_HPP_NAMESPACE::Sampler sampler;
13000       VULKAN_HPP_NAMESPACE::Result  result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSampler(
13001         static_cast<VkDevice>( m_device ),
13002         reinterpret_cast<const VkSamplerCreateInfo *>( &createInfo ),
13003         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
13004         reinterpret_cast<VkSampler *>( &sampler ) ) );
13005       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13006       {
13007 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
13008         return VULKAN_HPP_UNEXPECTED( result );
13009 #  else
13010         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createSampler" );
13011 #  endif
13012       }
13013 
13014       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Sampler( *this, *reinterpret_cast<VkSampler *>( &sampler ), allocator );
13015     }
13016 
13017     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
13018       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSetLayout>::Type
createDescriptorSetLayout(VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const13019       Device::createDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const &                     createInfo,
13020                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
13021       VULKAN_HPP_RAII_CREATE_NOEXCEPT
13022     {
13023       VULKAN_HPP_NAMESPACE::DescriptorSetLayout setLayout;
13024       VULKAN_HPP_NAMESPACE::Result              result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDescriptorSetLayout(
13025         static_cast<VkDevice>( m_device ),
13026         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
13027         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
13028         reinterpret_cast<VkDescriptorSetLayout *>( &setLayout ) ) );
13029       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13030       {
13031 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
13032         return VULKAN_HPP_UNEXPECTED( result );
13033 #  else
13034         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createDescriptorSetLayout" );
13035 #  endif
13036       }
13037 
13038       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSetLayout( *this, *reinterpret_cast<VkDescriptorSetLayout *>( &setLayout ), allocator );
13039     }
13040 
13041     VULKAN_HPP_NODISCARD
13042       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool>::Type
createDescriptorPool(VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const13043                         Device::createDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const &                          createInfo,
13044                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
13045       VULKAN_HPP_RAII_CREATE_NOEXCEPT
13046     {
13047       VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool;
13048       VULKAN_HPP_NAMESPACE::Result         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDescriptorPool(
13049         static_cast<VkDevice>( m_device ),
13050         reinterpret_cast<const VkDescriptorPoolCreateInfo *>( &createInfo ),
13051         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
13052         reinterpret_cast<VkDescriptorPool *>( &descriptorPool ) ) );
13053       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13054       {
13055 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
13056         return VULKAN_HPP_UNEXPECTED( result );
13057 #  else
13058         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createDescriptorPool" );
13059 #  endif
13060       }
13061 
13062       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool( *this, *reinterpret_cast<VkDescriptorPool *>( &descriptorPool ), allocator );
13063     }
13064 
reset(VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags) const13065     VULKAN_HPP_INLINE void DescriptorPool::reset( VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT
13066     {
13067       VULKAN_HPP_ASSERT( getDispatcher()->vkResetDescriptorPool && "Function <vkResetDescriptorPool> requires <VK_VERSION_1_0>" );
13068 
13069       getDispatcher()->vkResetDescriptorPool(
13070         static_cast<VkDevice>( m_device ), static_cast<VkDescriptorPool>( m_descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) );
13071     }
13072 
13073     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
13074       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet>>::Type
allocateDescriptorSets(VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo) const13075       Device::allocateDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo ) const
13076     {
13077       std::vector<VULKAN_HPP_NAMESPACE::DescriptorSet> descriptorSets( allocateInfo.descriptorSetCount );
13078       VULKAN_HPP_NAMESPACE::Result                     result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13079         getDispatcher()->vkAllocateDescriptorSets( static_cast<VkDevice>( m_device ),
13080                                                    reinterpret_cast<const VkDescriptorSetAllocateInfo *>( &allocateInfo ),
13081                                                    reinterpret_cast<VkDescriptorSet *>( descriptorSets.data() ) ) );
13082       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13083       {
13084 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
13085         return VULKAN_HPP_UNEXPECTED( result );
13086 #  else
13087         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::allocateDescriptorSets" );
13088 #  endif
13089       }
13090 
13091       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet> descriptorSetsRAII;
13092       descriptorSetsRAII.reserve( descriptorSets.size() );
13093       for ( auto & descriptorSet : descriptorSets )
13094       {
13095         descriptorSetsRAII.emplace_back(
13096           *this, *reinterpret_cast<VkDescriptorSet *>( &descriptorSet ), static_cast<VkDescriptorPool>( allocateInfo.descriptorPool ) );
13097       }
13098       return descriptorSetsRAII;
13099     }
13100 
updateDescriptorSets(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const & descriptorCopies) const13101     VULKAN_HPP_INLINE void Device::updateDescriptorSets(
13102       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,
13103       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const &  descriptorCopies ) const VULKAN_HPP_NOEXCEPT
13104     {
13105       VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSets && "Function <vkUpdateDescriptorSets> requires <VK_VERSION_1_0>" );
13106 
13107       getDispatcher()->vkUpdateDescriptorSets( static_cast<VkDevice>( m_device ),
13108                                                descriptorWrites.size(),
13109                                                reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ),
13110                                                descriptorCopies.size(),
13111                                                reinterpret_cast<const VkCopyDescriptorSet *>( descriptorCopies.data() ) );
13112     }
13113 
13114     VULKAN_HPP_NODISCARD
13115       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Framebuffer>::Type
createFramebuffer(VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const13116                         Device::createFramebuffer( VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const &                             createInfo,
13117                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
13118       VULKAN_HPP_RAII_CREATE_NOEXCEPT
13119     {
13120       VULKAN_HPP_NAMESPACE::Framebuffer framebuffer;
13121       VULKAN_HPP_NAMESPACE::Result      result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateFramebuffer(
13122         static_cast<VkDevice>( m_device ),
13123         reinterpret_cast<const VkFramebufferCreateInfo *>( &createInfo ),
13124         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
13125         reinterpret_cast<VkFramebuffer *>( &framebuffer ) ) );
13126       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13127       {
13128 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
13129         return VULKAN_HPP_UNEXPECTED( result );
13130 #  else
13131         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createFramebuffer" );
13132 #  endif
13133       }
13134 
13135       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Framebuffer( *this, *reinterpret_cast<VkFramebuffer *>( &framebuffer ), allocator );
13136     }
13137 
13138     VULKAN_HPP_NODISCARD
13139       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass>::Type
createRenderPass(VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const13140                         Device::createRenderPass( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const &                              createInfo,
13141                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
13142       VULKAN_HPP_RAII_CREATE_NOEXCEPT
13143     {
13144       VULKAN_HPP_NAMESPACE::RenderPass renderPass;
13145       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRenderPass(
13146         static_cast<VkDevice>( m_device ),
13147         reinterpret_cast<const VkRenderPassCreateInfo *>( &createInfo ),
13148         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
13149         reinterpret_cast<VkRenderPass *>( &renderPass ) ) );
13150       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13151       {
13152 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
13153         return VULKAN_HPP_UNEXPECTED( result );
13154 #  else
13155         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createRenderPass" );
13156 #  endif
13157       }
13158 
13159       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass( *this, *reinterpret_cast<VkRenderPass *>( &renderPass ), allocator );
13160     }
13161 
getRenderAreaGranularity() const13162     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Extent2D RenderPass::getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT
13163     {
13164       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRenderAreaGranularity && "Function <vkGetRenderAreaGranularity> requires <VK_VERSION_1_0>" );
13165 
13166       VULKAN_HPP_NAMESPACE::Extent2D granularity;
13167       getDispatcher()->vkGetRenderAreaGranularity(
13168         static_cast<VkDevice>( m_device ), static_cast<VkRenderPass>( m_renderPass ), reinterpret_cast<VkExtent2D *>( &granularity ) );
13169 
13170       return granularity;
13171     }
13172 
13173     VULKAN_HPP_NODISCARD
13174       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool>::Type
createCommandPool(VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const13175                         Device::createCommandPool( VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const &                             createInfo,
13176                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
13177       VULKAN_HPP_RAII_CREATE_NOEXCEPT
13178     {
13179       VULKAN_HPP_NAMESPACE::CommandPool commandPool;
13180       VULKAN_HPP_NAMESPACE::Result      result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateCommandPool(
13181         static_cast<VkDevice>( m_device ),
13182         reinterpret_cast<const VkCommandPoolCreateInfo *>( &createInfo ),
13183         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
13184         reinterpret_cast<VkCommandPool *>( &commandPool ) ) );
13185       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13186       {
13187 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
13188         return VULKAN_HPP_UNEXPECTED( result );
13189 #  else
13190         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createCommandPool" );
13191 #  endif
13192       }
13193 
13194       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool( *this, *reinterpret_cast<VkCommandPool *>( &commandPool ), allocator );
13195     }
13196 
reset(VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags) const13197     VULKAN_HPP_INLINE void CommandPool::reset( VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags ) const
13198     {
13199       VULKAN_HPP_ASSERT( getDispatcher()->vkResetCommandPool && "Function <vkResetCommandPool> requires <VK_VERSION_1_0>" );
13200 
13201       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkResetCommandPool(
13202         static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
13203       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandPool::reset" );
13204     }
13205 
13206     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
13207       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer>>::Type
allocateCommandBuffers(VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo) const13208       Device::allocateCommandBuffers( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo ) const
13209     {
13210       std::vector<VULKAN_HPP_NAMESPACE::CommandBuffer> commandBuffers( allocateInfo.commandBufferCount );
13211       VULKAN_HPP_NAMESPACE::Result                     result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13212         getDispatcher()->vkAllocateCommandBuffers( static_cast<VkDevice>( m_device ),
13213                                                    reinterpret_cast<const VkCommandBufferAllocateInfo *>( &allocateInfo ),
13214                                                    reinterpret_cast<VkCommandBuffer *>( commandBuffers.data() ) ) );
13215       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13216       {
13217 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
13218         return VULKAN_HPP_UNEXPECTED( result );
13219 #  else
13220         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::allocateCommandBuffers" );
13221 #  endif
13222       }
13223 
13224       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer> commandBuffersRAII;
13225       commandBuffersRAII.reserve( commandBuffers.size() );
13226       for ( auto & commandBuffer : commandBuffers )
13227       {
13228         commandBuffersRAII.emplace_back(
13229           *this, *reinterpret_cast<VkCommandBuffer *>( &commandBuffer ), static_cast<VkCommandPool>( allocateInfo.commandPool ) );
13230       }
13231       return commandBuffersRAII;
13232     }
13233 
begin(const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo) const13234     VULKAN_HPP_INLINE void CommandBuffer::begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo & beginInfo ) const
13235     {
13236       VULKAN_HPP_ASSERT( getDispatcher()->vkBeginCommandBuffer && "Function <vkBeginCommandBuffer> requires <VK_VERSION_1_0>" );
13237 
13238       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBeginCommandBuffer(
13239         static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCommandBufferBeginInfo *>( &beginInfo ) ) );
13240       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::begin" );
13241     }
13242 
end() const13243     VULKAN_HPP_INLINE void CommandBuffer::end() const
13244     {
13245       VULKAN_HPP_ASSERT( getDispatcher()->vkEndCommandBuffer && "Function <vkEndCommandBuffer> requires <VK_VERSION_1_0>" );
13246 
13247       VULKAN_HPP_NAMESPACE::Result result =
13248         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEndCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ) ) );
13249       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::end" );
13250     }
13251 
reset(VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags) const13252     VULKAN_HPP_INLINE void CommandBuffer::reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags ) const
13253     {
13254       VULKAN_HPP_ASSERT( getDispatcher()->vkResetCommandBuffer && "Function <vkResetCommandBuffer> requires <VK_VERSION_1_0>" );
13255 
13256       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13257         getDispatcher()->vkResetCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCommandBufferResetFlags>( flags ) ) );
13258       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::reset" );
13259     }
13260 
bindPipeline(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::Pipeline pipeline) const13261     VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
13262                                                         VULKAN_HPP_NAMESPACE::Pipeline          pipeline ) const VULKAN_HPP_NOEXCEPT
13263     {
13264       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindPipeline && "Function <vkCmdBindPipeline> requires <VK_VERSION_1_0>" );
13265 
13266       getDispatcher()->vkCmdBindPipeline(
13267         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
13268     }
13269 
13270     VULKAN_HPP_INLINE void
setViewport(uint32_t firstViewport,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports) const13271       CommandBuffer::setViewport( uint32_t                                                                       firstViewport,
13272                                   VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
13273     {
13274       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewport && "Function <vkCmdSetViewport> requires <VK_VERSION_1_0>" );
13275 
13276       getDispatcher()->vkCmdSetViewport(
13277         static_cast<VkCommandBuffer>( m_commandBuffer ), firstViewport, viewports.size(), reinterpret_cast<const VkViewport *>( viewports.data() ) );
13278     }
13279 
13280     VULKAN_HPP_INLINE void
setScissor(uint32_t firstScissor,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors) const13281       CommandBuffer::setScissor( uint32_t                                                                     firstScissor,
13282                                  VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
13283     {
13284       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissor && "Function <vkCmdSetScissor> requires <VK_VERSION_1_0>" );
13285 
13286       getDispatcher()->vkCmdSetScissor(
13287         static_cast<VkCommandBuffer>( m_commandBuffer ), firstScissor, scissors.size(), reinterpret_cast<const VkRect2D *>( scissors.data() ) );
13288     }
13289 
setLineWidth(float lineWidth) const13290     VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT
13291     {
13292       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineWidth && "Function <vkCmdSetLineWidth> requires <VK_VERSION_1_0>" );
13293 
13294       getDispatcher()->vkCmdSetLineWidth( static_cast<VkCommandBuffer>( m_commandBuffer ), lineWidth );
13295     }
13296 
13297     VULKAN_HPP_INLINE void
setDepthBias(float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor) const13298       CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT
13299     {
13300       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBias && "Function <vkCmdSetDepthBias> requires <VK_VERSION_1_0>" );
13301 
13302       getDispatcher()->vkCmdSetDepthBias( static_cast<VkCommandBuffer>( m_commandBuffer ), depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
13303     }
13304 
setBlendConstants(const float blendConstants[4]) const13305     VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT
13306     {
13307       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetBlendConstants && "Function <vkCmdSetBlendConstants> requires <VK_VERSION_1_0>" );
13308 
13309       getDispatcher()->vkCmdSetBlendConstants( static_cast<VkCommandBuffer>( m_commandBuffer ), blendConstants );
13310     }
13311 
setDepthBounds(float minDepthBounds,float maxDepthBounds) const13312     VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT
13313     {
13314       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBounds && "Function <vkCmdSetDepthBounds> requires <VK_VERSION_1_0>" );
13315 
13316       getDispatcher()->vkCmdSetDepthBounds( static_cast<VkCommandBuffer>( m_commandBuffer ), minDepthBounds, maxDepthBounds );
13317     }
13318 
setStencilCompareMask(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t compareMask) const13319     VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
13320                                                                  uint32_t                               compareMask ) const VULKAN_HPP_NOEXCEPT
13321     {
13322       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilCompareMask && "Function <vkCmdSetStencilCompareMask> requires <VK_VERSION_1_0>" );
13323 
13324       getDispatcher()->vkCmdSetStencilCompareMask( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
13325     }
13326 
setStencilWriteMask(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t writeMask) const13327     VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT
13328     {
13329       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilWriteMask && "Function <vkCmdSetStencilWriteMask> requires <VK_VERSION_1_0>" );
13330 
13331       getDispatcher()->vkCmdSetStencilWriteMask( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
13332     }
13333 
setStencilReference(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t reference) const13334     VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t reference ) const VULKAN_HPP_NOEXCEPT
13335     {
13336       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilReference && "Function <vkCmdSetStencilReference> requires <VK_VERSION_1_0>" );
13337 
13338       getDispatcher()->vkCmdSetStencilReference( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), reference );
13339     }
13340 
13341     VULKAN_HPP_INLINE void
bindDescriptorSets(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t firstSet,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const & dynamicOffsets) const13342       CommandBuffer::bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint                                             pipelineBindPoint,
13343                                          VULKAN_HPP_NAMESPACE::PipelineLayout                                                layout,
13344                                          uint32_t                                                                            firstSet,
13345                                          VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,
13346                                          VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT
13347     {
13348       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorSets && "Function <vkCmdBindDescriptorSets> requires <VK_VERSION_1_0>" );
13349 
13350       getDispatcher()->vkCmdBindDescriptorSets( static_cast<VkCommandBuffer>( m_commandBuffer ),
13351                                                 static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
13352                                                 static_cast<VkPipelineLayout>( layout ),
13353                                                 firstSet,
13354                                                 descriptorSets.size(),
13355                                                 reinterpret_cast<const VkDescriptorSet *>( descriptorSets.data() ),
13356                                                 dynamicOffsets.size(),
13357                                                 dynamicOffsets.data() );
13358     }
13359 
bindIndexBuffer(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::IndexType indexType) const13360     VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer     buffer,
13361                                                            VULKAN_HPP_NAMESPACE::DeviceSize offset,
13362                                                            VULKAN_HPP_NAMESPACE::IndexType  indexType ) const VULKAN_HPP_NOEXCEPT
13363     {
13364       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer && "Function <vkCmdBindIndexBuffer> requires <VK_VERSION_1_0>" );
13365 
13366       getDispatcher()->vkCmdBindIndexBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
13367                                              static_cast<VkBuffer>( buffer ),
13368                                              static_cast<VkDeviceSize>( offset ),
13369                                              static_cast<VkIndexType>( indexType ) );
13370     }
13371 
bindVertexBuffers(uint32_t firstBinding,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets) const13372     VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t                                                                         firstBinding,
13373                                                              VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
13374                                                              VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets ) const
13375     {
13376       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers && "Function <vkCmdBindVertexBuffers> requires <VK_VERSION_1_0>" );
13377 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
13378       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
13379 #  else
13380       if ( buffers.size() != offsets.size() )
13381       {
13382         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
13383       }
13384 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
13385 
13386       getDispatcher()->vkCmdBindVertexBuffers( static_cast<VkCommandBuffer>( m_commandBuffer ),
13387                                                firstBinding,
13388                                                buffers.size(),
13389                                                reinterpret_cast<const VkBuffer *>( buffers.data() ),
13390                                                reinterpret_cast<const VkDeviceSize *>( offsets.data() ) );
13391     }
13392 
13393     VULKAN_HPP_INLINE void
draw(uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance) const13394       CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
13395     {
13396       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDraw && "Function <vkCmdDraw> requires <VK_VERSION_1_0>" );
13397 
13398       getDispatcher()->vkCmdDraw( static_cast<VkCommandBuffer>( m_commandBuffer ), vertexCount, instanceCount, firstVertex, firstInstance );
13399     }
13400 
drawIndexed(uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance) const13401     VULKAN_HPP_INLINE void CommandBuffer::drawIndexed(
13402       uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
13403     {
13404       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexed && "Function <vkCmdDrawIndexed> requires <VK_VERSION_1_0>" );
13405 
13406       getDispatcher()->vkCmdDrawIndexed( static_cast<VkCommandBuffer>( m_commandBuffer ), indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
13407     }
13408 
drawIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const13409     VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
13410                                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
13411                                                         uint32_t                         drawCount,
13412                                                         uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
13413     {
13414       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirect && "Function <vkCmdDrawIndirect> requires <VK_VERSION_1_0>" );
13415 
13416       getDispatcher()->vkCmdDrawIndirect(
13417         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ), drawCount, stride );
13418     }
13419 
drawIndexedIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const13420     VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
13421                                                                VULKAN_HPP_NAMESPACE::DeviceSize offset,
13422                                                                uint32_t                         drawCount,
13423                                                                uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
13424     {
13425       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexedIndirect && "Function <vkCmdDrawIndexedIndirect> requires <VK_VERSION_1_0>" );
13426 
13427       getDispatcher()->vkCmdDrawIndexedIndirect(
13428         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ), drawCount, stride );
13429     }
13430 
dispatch(uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const13431     VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
13432     {
13433       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatch && "Function <vkCmdDispatch> requires <VK_VERSION_1_0>" );
13434 
13435       getDispatcher()->vkCmdDispatch( static_cast<VkCommandBuffer>( m_commandBuffer ), groupCountX, groupCountY, groupCountZ );
13436     }
13437 
dispatchIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset) const13438     VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
13439                                                             VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT
13440     {
13441       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchIndirect && "Function <vkCmdDispatchIndirect> requires <VK_VERSION_1_0>" );
13442 
13443       getDispatcher()->vkCmdDispatchIndirect(
13444         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ) );
13445     }
13446 
13447     VULKAN_HPP_INLINE void
copyBuffer(VULKAN_HPP_NAMESPACE::Buffer srcBuffer,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions) const13448       CommandBuffer::copyBuffer( VULKAN_HPP_NAMESPACE::Buffer                                                     srcBuffer,
13449                                  VULKAN_HPP_NAMESPACE::Buffer                                                     dstBuffer,
13450                                  VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
13451     {
13452       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer && "Function <vkCmdCopyBuffer> requires <VK_VERSION_1_0>" );
13453 
13454       getDispatcher()->vkCmdCopyBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
13455                                         static_cast<VkBuffer>( srcBuffer ),
13456                                         static_cast<VkBuffer>( dstBuffer ),
13457                                         regions.size(),
13458                                         reinterpret_cast<const VkBufferCopy *>( regions.data() ) );
13459     }
13460 
13461     VULKAN_HPP_INLINE void
copyImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions) const13462       CommandBuffer::copyImage( VULKAN_HPP_NAMESPACE::Image                                                     srcImage,
13463                                 VULKAN_HPP_NAMESPACE::ImageLayout                                               srcImageLayout,
13464                                 VULKAN_HPP_NAMESPACE::Image                                                     dstImage,
13465                                 VULKAN_HPP_NAMESPACE::ImageLayout                                               dstImageLayout,
13466                                 VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
13467     {
13468       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage && "Function <vkCmdCopyImage> requires <VK_VERSION_1_0>" );
13469 
13470       getDispatcher()->vkCmdCopyImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
13471                                        static_cast<VkImage>( srcImage ),
13472                                        static_cast<VkImageLayout>( srcImageLayout ),
13473                                        static_cast<VkImage>( dstImage ),
13474                                        static_cast<VkImageLayout>( dstImageLayout ),
13475                                        regions.size(),
13476                                        reinterpret_cast<const VkImageCopy *>( regions.data() ) );
13477     }
13478 
blitImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,VULKAN_HPP_NAMESPACE::Filter filter) const13479     VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image                                                     srcImage,
13480                                                      VULKAN_HPP_NAMESPACE::ImageLayout                                               srcImageLayout,
13481                                                      VULKAN_HPP_NAMESPACE::Image                                                     dstImage,
13482                                                      VULKAN_HPP_NAMESPACE::ImageLayout                                               dstImageLayout,
13483                                                      VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,
13484                                                      VULKAN_HPP_NAMESPACE::Filter filter ) const VULKAN_HPP_NOEXCEPT
13485     {
13486       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage && "Function <vkCmdBlitImage> requires <VK_VERSION_1_0>" );
13487 
13488       getDispatcher()->vkCmdBlitImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
13489                                        static_cast<VkImage>( srcImage ),
13490                                        static_cast<VkImageLayout>( srcImageLayout ),
13491                                        static_cast<VkImage>( dstImage ),
13492                                        static_cast<VkImageLayout>( dstImageLayout ),
13493                                        regions.size(),
13494                                        reinterpret_cast<const VkImageBlit *>( regions.data() ),
13495                                        static_cast<VkFilter>( filter ) );
13496     }
13497 
copyBufferToImage(VULKAN_HPP_NAMESPACE::Buffer srcBuffer,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions) const13498     VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage(
13499       VULKAN_HPP_NAMESPACE::Buffer                                                          srcBuffer,
13500       VULKAN_HPP_NAMESPACE::Image                                                           dstImage,
13501       VULKAN_HPP_NAMESPACE::ImageLayout                                                     dstImageLayout,
13502       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
13503     {
13504       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage && "Function <vkCmdCopyBufferToImage> requires <VK_VERSION_1_0>" );
13505 
13506       getDispatcher()->vkCmdCopyBufferToImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
13507                                                static_cast<VkBuffer>( srcBuffer ),
13508                                                static_cast<VkImage>( dstImage ),
13509                                                static_cast<VkImageLayout>( dstImageLayout ),
13510                                                regions.size(),
13511                                                reinterpret_cast<const VkBufferImageCopy *>( regions.data() ) );
13512     }
13513 
copyImageToBuffer(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions) const13514     VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer(
13515       VULKAN_HPP_NAMESPACE::Image                                                           srcImage,
13516       VULKAN_HPP_NAMESPACE::ImageLayout                                                     srcImageLayout,
13517       VULKAN_HPP_NAMESPACE::Buffer                                                          dstBuffer,
13518       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
13519     {
13520       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer && "Function <vkCmdCopyImageToBuffer> requires <VK_VERSION_1_0>" );
13521 
13522       getDispatcher()->vkCmdCopyImageToBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
13523                                                static_cast<VkImage>( srcImage ),
13524                                                static_cast<VkImageLayout>( srcImageLayout ),
13525                                                static_cast<VkBuffer>( dstBuffer ),
13526                                                regions.size(),
13527                                                reinterpret_cast<const VkBufferImageCopy *>( regions.data() ) );
13528     }
13529 
13530     template <typename DataType>
updateBuffer(VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,VULKAN_HPP_NAMESPACE::ArrayProxy<const DataType> const & data) const13531     VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer                             dstBuffer,
13532                                                         VULKAN_HPP_NAMESPACE::DeviceSize                         dstOffset,
13533                                                         VULKAN_HPP_NAMESPACE::ArrayProxy<const DataType> const & data ) const VULKAN_HPP_NOEXCEPT
13534     {
13535       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdateBuffer && "Function <vkCmdUpdateBuffer> requires <VK_VERSION_1_0>" );
13536 
13537       getDispatcher()->vkCmdUpdateBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
13538                                           static_cast<VkBuffer>( dstBuffer ),
13539                                           static_cast<VkDeviceSize>( dstOffset ),
13540                                           data.size() * sizeof( DataType ),
13541                                           reinterpret_cast<const void *>( data.data() ) );
13542     }
13543 
fillBuffer(VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,VULKAN_HPP_NAMESPACE::DeviceSize size,uint32_t data) const13544     VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
13545                                                       VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
13546                                                       VULKAN_HPP_NAMESPACE::DeviceSize size,
13547                                                       uint32_t                         data ) const VULKAN_HPP_NOEXCEPT
13548     {
13549       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdFillBuffer && "Function <vkCmdFillBuffer> requires <VK_VERSION_1_0>" );
13550 
13551       getDispatcher()->vkCmdFillBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
13552                                         static_cast<VkBuffer>( dstBuffer ),
13553                                         static_cast<VkDeviceSize>( dstOffset ),
13554                                         static_cast<VkDeviceSize>( size ),
13555                                         data );
13556     }
13557 
clearColorImage(VULKAN_HPP_NAMESPACE::Image image,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout,const VULKAN_HPP_NAMESPACE::ClearColorValue & color,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges) const13558     VULKAN_HPP_INLINE void CommandBuffer::clearColorImage(
13559       VULKAN_HPP_NAMESPACE::Image                                                                 image,
13560       VULKAN_HPP_NAMESPACE::ImageLayout                                                           imageLayout,
13561       const VULKAN_HPP_NAMESPACE::ClearColorValue &                                               color,
13562       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT
13563     {
13564       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearColorImage && "Function <vkCmdClearColorImage> requires <VK_VERSION_1_0>" );
13565 
13566       getDispatcher()->vkCmdClearColorImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
13567                                              static_cast<VkImage>( image ),
13568                                              static_cast<VkImageLayout>( imageLayout ),
13569                                              reinterpret_cast<const VkClearColorValue *>( &color ),
13570                                              ranges.size(),
13571                                              reinterpret_cast<const VkImageSubresourceRange *>( ranges.data() ) );
13572     }
13573 
clearDepthStencilImage(VULKAN_HPP_NAMESPACE::Image image,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout,const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue & depthStencil,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges) const13574     VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage(
13575       VULKAN_HPP_NAMESPACE::Image                                                                 image,
13576       VULKAN_HPP_NAMESPACE::ImageLayout                                                           imageLayout,
13577       const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue &                                        depthStencil,
13578       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT
13579     {
13580       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearDepthStencilImage && "Function <vkCmdClearDepthStencilImage> requires <VK_VERSION_1_0>" );
13581 
13582       getDispatcher()->vkCmdClearDepthStencilImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
13583                                                     static_cast<VkImage>( image ),
13584                                                     static_cast<VkImageLayout>( imageLayout ),
13585                                                     reinterpret_cast<const VkClearDepthStencilValue *>( &depthStencil ),
13586                                                     ranges.size(),
13587                                                     reinterpret_cast<const VkImageSubresourceRange *>( ranges.data() ) );
13588     }
13589 
13590     VULKAN_HPP_INLINE void
clearAttachments(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const & rects) const13591       CommandBuffer::clearAttachments( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,
13592                                        VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const &       rects ) const VULKAN_HPP_NOEXCEPT
13593     {
13594       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearAttachments && "Function <vkCmdClearAttachments> requires <VK_VERSION_1_0>" );
13595 
13596       getDispatcher()->vkCmdClearAttachments( static_cast<VkCommandBuffer>( m_commandBuffer ),
13597                                               attachments.size(),
13598                                               reinterpret_cast<const VkClearAttachment *>( attachments.data() ),
13599                                               rects.size(),
13600                                               reinterpret_cast<const VkClearRect *>( rects.data() ) );
13601     }
13602 
13603     VULKAN_HPP_INLINE void
resolveImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions) const13604       CommandBuffer::resolveImage( VULKAN_HPP_NAMESPACE::Image                                                        srcImage,
13605                                    VULKAN_HPP_NAMESPACE::ImageLayout                                                  srcImageLayout,
13606                                    VULKAN_HPP_NAMESPACE::Image                                                        dstImage,
13607                                    VULKAN_HPP_NAMESPACE::ImageLayout                                                  dstImageLayout,
13608                                    VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions ) const VULKAN_HPP_NOEXCEPT
13609     {
13610       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage && "Function <vkCmdResolveImage> requires <VK_VERSION_1_0>" );
13611 
13612       getDispatcher()->vkCmdResolveImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
13613                                           static_cast<VkImage>( srcImage ),
13614                                           static_cast<VkImageLayout>( srcImageLayout ),
13615                                           static_cast<VkImage>( dstImage ),
13616                                           static_cast<VkImageLayout>( dstImageLayout ),
13617                                           regions.size(),
13618                                           reinterpret_cast<const VkImageResolve *>( regions.data() ) );
13619     }
13620 
setEvent(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask) const13621     VULKAN_HPP_INLINE void CommandBuffer::setEvent( VULKAN_HPP_NAMESPACE::Event              event,
13622                                                     VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT
13623     {
13624       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent && "Function <vkCmdSetEvent> requires <VK_VERSION_1_0>" );
13625 
13626       getDispatcher()->vkCmdSetEvent(
13627         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
13628     }
13629 
resetEvent(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask) const13630     VULKAN_HPP_INLINE void CommandBuffer::resetEvent( VULKAN_HPP_NAMESPACE::Event              event,
13631                                                       VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT
13632     {
13633       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent && "Function <vkCmdResetEvent> requires <VK_VERSION_1_0>" );
13634 
13635       getDispatcher()->vkCmdResetEvent(
13636         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
13637     }
13638 
waitEvents(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask,VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const & memoryBarriers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers) const13639     VULKAN_HPP_INLINE void CommandBuffer::waitEvents(
13640       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &               events,
13641       VULKAN_HPP_NAMESPACE::PipelineStageFlags                                                  srcStageMask,
13642       VULKAN_HPP_NAMESPACE::PipelineStageFlags                                                  dstStageMask,
13643       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
13644       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
13645       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const &  imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT
13646     {
13647       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents && "Function <vkCmdWaitEvents> requires <VK_VERSION_1_0>" );
13648 
13649       getDispatcher()->vkCmdWaitEvents( static_cast<VkCommandBuffer>( m_commandBuffer ),
13650                                         events.size(),
13651                                         reinterpret_cast<const VkEvent *>( events.data() ),
13652                                         static_cast<VkPipelineStageFlags>( srcStageMask ),
13653                                         static_cast<VkPipelineStageFlags>( dstStageMask ),
13654                                         memoryBarriers.size(),
13655                                         reinterpret_cast<const VkMemoryBarrier *>( memoryBarriers.data() ),
13656                                         bufferMemoryBarriers.size(),
13657                                         reinterpret_cast<const VkBufferMemoryBarrier *>( bufferMemoryBarriers.data() ),
13658                                         imageMemoryBarriers.size(),
13659                                         reinterpret_cast<const VkImageMemoryBarrier *>( imageMemoryBarriers.data() ) );
13660     }
13661 
pipelineBarrier(VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask,VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask,VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const & memoryBarriers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers) const13662     VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier(
13663       VULKAN_HPP_NAMESPACE::PipelineStageFlags                                                  srcStageMask,
13664       VULKAN_HPP_NAMESPACE::PipelineStageFlags                                                  dstStageMask,
13665       VULKAN_HPP_NAMESPACE::DependencyFlags                                                     dependencyFlags,
13666       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
13667       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
13668       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const &  imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT
13669     {
13670       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier && "Function <vkCmdPipelineBarrier> requires <VK_VERSION_1_0>" );
13671 
13672       getDispatcher()->vkCmdPipelineBarrier( static_cast<VkCommandBuffer>( m_commandBuffer ),
13673                                              static_cast<VkPipelineStageFlags>( srcStageMask ),
13674                                              static_cast<VkPipelineStageFlags>( dstStageMask ),
13675                                              static_cast<VkDependencyFlags>( dependencyFlags ),
13676                                              memoryBarriers.size(),
13677                                              reinterpret_cast<const VkMemoryBarrier *>( memoryBarriers.data() ),
13678                                              bufferMemoryBarriers.size(),
13679                                              reinterpret_cast<const VkBufferMemoryBarrier *>( bufferMemoryBarriers.data() ),
13680                                              imageMemoryBarriers.size(),
13681                                              reinterpret_cast<const VkImageMemoryBarrier *>( imageMemoryBarriers.data() ) );
13682     }
13683 
beginQuery(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,VULKAN_HPP_NAMESPACE::QueryControlFlags flags) const13684     VULKAN_HPP_INLINE void CommandBuffer::beginQuery( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
13685                                                       uint32_t                                query,
13686                                                       VULKAN_HPP_NAMESPACE::QueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT
13687     {
13688       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQuery && "Function <vkCmdBeginQuery> requires <VK_VERSION_1_0>" );
13689 
13690       getDispatcher()->vkCmdBeginQuery(
13691         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
13692     }
13693 
endQuery(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const13694     VULKAN_HPP_INLINE void CommandBuffer::endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT
13695     {
13696       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQuery && "Function <vkCmdEndQuery> requires <VK_VERSION_1_0>" );
13697 
13698       getDispatcher()->vkCmdEndQuery( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query );
13699     }
13700 
13701     VULKAN_HPP_INLINE void
resetQueryPool(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery,uint32_t queryCount) const13702       CommandBuffer::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
13703     {
13704       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetQueryPool && "Function <vkCmdResetQueryPool> requires <VK_VERSION_1_0>" );
13705 
13706       getDispatcher()->vkCmdResetQueryPool( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
13707     }
13708 
writeTimestamp(VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const13709     VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
13710                                                           VULKAN_HPP_NAMESPACE::QueryPool             queryPool,
13711                                                           uint32_t                                    query ) const VULKAN_HPP_NOEXCEPT
13712     {
13713       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp && "Function <vkCmdWriteTimestamp> requires <VK_VERSION_1_0>" );
13714 
13715       getDispatcher()->vkCmdWriteTimestamp(
13716         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
13717     }
13718 
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) const13719     VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool        queryPool,
13720                                                                 uint32_t                               firstQuery,
13721                                                                 uint32_t                               queryCount,
13722                                                                 VULKAN_HPP_NAMESPACE::Buffer           dstBuffer,
13723                                                                 VULKAN_HPP_NAMESPACE::DeviceSize       dstOffset,
13724                                                                 VULKAN_HPP_NAMESPACE::DeviceSize       stride,
13725                                                                 VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT
13726     {
13727       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyQueryPoolResults && "Function <vkCmdCopyQueryPoolResults> requires <VK_VERSION_1_0>" );
13728 
13729       getDispatcher()->vkCmdCopyQueryPoolResults( static_cast<VkCommandBuffer>( m_commandBuffer ),
13730                                                   static_cast<VkQueryPool>( queryPool ),
13731                                                   firstQuery,
13732                                                   queryCount,
13733                                                   static_cast<VkBuffer>( dstBuffer ),
13734                                                   static_cast<VkDeviceSize>( dstOffset ),
13735                                                   static_cast<VkDeviceSize>( stride ),
13736                                                   static_cast<VkQueryResultFlags>( flags ) );
13737     }
13738 
13739     template <typename ValuesType>
pushConstants(VULKAN_HPP_NAMESPACE::PipelineLayout layout,VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags,uint32_t offset,VULKAN_HPP_NAMESPACE::ArrayProxy<const ValuesType> const & values) const13740     VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout                       layout,
13741                                                          VULKAN_HPP_NAMESPACE::ShaderStageFlags                     stageFlags,
13742                                                          uint32_t                                                   offset,
13743                                                          VULKAN_HPP_NAMESPACE::ArrayProxy<const ValuesType> const & values ) const VULKAN_HPP_NOEXCEPT
13744     {
13745       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants && "Function <vkCmdPushConstants> requires <VK_VERSION_1_0>" );
13746 
13747       getDispatcher()->vkCmdPushConstants( static_cast<VkCommandBuffer>( m_commandBuffer ),
13748                                            static_cast<VkPipelineLayout>( layout ),
13749                                            static_cast<VkShaderStageFlags>( stageFlags ),
13750                                            offset,
13751                                            values.size() * sizeof( ValuesType ),
13752                                            reinterpret_cast<const void *>( values.data() ) );
13753     }
13754 
beginRenderPass(const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,VULKAN_HPP_NAMESPACE::SubpassContents contents) const13755     VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
13756                                                            VULKAN_HPP_NAMESPACE::SubpassContents             contents ) const VULKAN_HPP_NOEXCEPT
13757     {
13758       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass && "Function <vkCmdBeginRenderPass> requires <VK_VERSION_1_0>" );
13759 
13760       getDispatcher()->vkCmdBeginRenderPass( static_cast<VkCommandBuffer>( m_commandBuffer ),
13761                                              reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
13762                                              static_cast<VkSubpassContents>( contents ) );
13763     }
13764 
nextSubpass(VULKAN_HPP_NAMESPACE::SubpassContents contents) const13765     VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT
13766     {
13767       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass && "Function <vkCmdNextSubpass> requires <VK_VERSION_1_0>" );
13768 
13769       getDispatcher()->vkCmdNextSubpass( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkSubpassContents>( contents ) );
13770     }
13771 
endRenderPass() const13772     VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const VULKAN_HPP_NOEXCEPT
13773     {
13774       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass && "Function <vkCmdEndRenderPass> requires <VK_VERSION_1_0>" );
13775 
13776       getDispatcher()->vkCmdEndRenderPass( static_cast<VkCommandBuffer>( m_commandBuffer ) );
13777     }
13778 
executeCommands(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers) const13779     VULKAN_HPP_INLINE void CommandBuffer::executeCommands(
13780       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers ) const VULKAN_HPP_NOEXCEPT
13781     {
13782       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteCommands && "Function <vkCmdExecuteCommands> requires <VK_VERSION_1_0>" );
13783 
13784       getDispatcher()->vkCmdExecuteCommands(
13785         static_cast<VkCommandBuffer>( m_commandBuffer ), commandBuffers.size(), reinterpret_cast<const VkCommandBuffer *>( commandBuffers.data() ) );
13786     }
13787 
13788     //=== VK_VERSION_1_1 ===
13789 
enumerateInstanceVersion() const13790     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t Context::enumerateInstanceVersion() const
13791     {
13792       VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceVersion && "Function <vkEnumerateInstanceVersion> requires <VK_VERSION_1_1>" );
13793 
13794       uint32_t                     apiVersion;
13795       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceVersion( &apiVersion ) );
13796       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceVersion" );
13797 
13798       return apiVersion;
13799     }
13800 
13801     VULKAN_HPP_INLINE void
bindBufferMemory2(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos) const13802       Device::bindBufferMemory2( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const
13803     {
13804       VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2 && "Function <vkBindBufferMemory2> requires <VK_KHR_bind_memory2> or <VK_VERSION_1_1>" );
13805 
13806       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindBufferMemory2(
13807         static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindBufferMemoryInfo *>( bindInfos.data() ) ) );
13808       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2" );
13809     }
13810 
bindImageMemory2(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos) const13811     VULKAN_HPP_INLINE void Device::bindImageMemory2( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const
13812     {
13813       VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2 && "Function <vkBindImageMemory2> requires <VK_KHR_bind_memory2> or <VK_VERSION_1_1>" );
13814 
13815       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindImageMemory2(
13816         static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindImageMemoryInfo *>( bindInfos.data() ) ) );
13817       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2" );
13818     }
13819 
13820     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags
getGroupPeerMemoryFeatures(uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex) const13821       Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT
13822     {
13823       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures &&
13824                          "Function <vkGetDeviceGroupPeerMemoryFeatures> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
13825 
13826       VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures;
13827       getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures( static_cast<VkDevice>( m_device ),
13828                                                            heapIndex,
13829                                                            localDeviceIndex,
13830                                                            remoteDeviceIndex,
13831                                                            reinterpret_cast<VkPeerMemoryFeatureFlags *>( &peerMemoryFeatures ) );
13832 
13833       return peerMemoryFeatures;
13834     }
13835 
setDeviceMask(uint32_t deviceMask) const13836     VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT
13837     {
13838       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMask && "Function <vkCmdSetDeviceMask> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
13839 
13840       getDispatcher()->vkCmdSetDeviceMask( static_cast<VkCommandBuffer>( m_commandBuffer ), deviceMask );
13841     }
13842 
dispatchBase(uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const13843     VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX,
13844                                                         uint32_t baseGroupY,
13845                                                         uint32_t baseGroupZ,
13846                                                         uint32_t groupCountX,
13847                                                         uint32_t groupCountY,
13848                                                         uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
13849     {
13850       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBase && "Function <vkCmdDispatchBase> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
13851 
13852       getDispatcher()->vkCmdDispatchBase(
13853         static_cast<VkCommandBuffer>( m_commandBuffer ), baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
13854     }
13855 
enumeratePhysicalDeviceGroups() const13856     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> Instance::enumeratePhysicalDeviceGroups() const
13857     {
13858       VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceGroups &&
13859                          "Function <vkEnumeratePhysicalDeviceGroups> requires <VK_KHR_device_group_creation> or <VK_VERSION_1_1>" );
13860 
13861       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> physicalDeviceGroupProperties;
13862       uint32_t                                                         physicalDeviceGroupCount;
13863       VULKAN_HPP_NAMESPACE::Result                                     result;
13864       do
13865       {
13866         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13867           getDispatcher()->vkEnumeratePhysicalDeviceGroups( static_cast<VkInstance>( m_instance ), &physicalDeviceGroupCount, nullptr ) );
13868         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceGroupCount )
13869         {
13870           physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
13871           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13872             getDispatcher()->vkEnumeratePhysicalDeviceGroups( static_cast<VkInstance>( m_instance ),
13873                                                               &physicalDeviceGroupCount,
13874                                                               reinterpret_cast<VkPhysicalDeviceGroupProperties *>( physicalDeviceGroupProperties.data() ) ) );
13875         }
13876       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13877       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" );
13878       VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
13879       if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() )
13880       {
13881         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
13882       }
13883       return physicalDeviceGroupProperties;
13884     }
13885 
13886     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirements2(const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info) const13887       Device::getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13888     {
13889       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2 &&
13890                          "Function <vkGetImageMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
13891 
13892       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
13893       getDispatcher()->vkGetImageMemoryRequirements2( static_cast<VkDevice>( m_device ),
13894                                                       reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
13895                                                       reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13896 
13897       return memoryRequirements;
13898     }
13899 
13900     template <typename X, typename Y, typename... Z>
13901     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getImageMemoryRequirements2(const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info) const13902       Device::getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13903     {
13904       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2 &&
13905                          "Function <vkGetImageMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
13906 
13907       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
13908       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
13909       getDispatcher()->vkGetImageMemoryRequirements2( static_cast<VkDevice>( m_device ),
13910                                                       reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
13911                                                       reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13912 
13913       return structureChain;
13914     }
13915 
13916     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirements2(const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info) const13917       Device::getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13918     {
13919       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2 &&
13920                          "Function <vkGetBufferMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
13921 
13922       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
13923       getDispatcher()->vkGetBufferMemoryRequirements2( static_cast<VkDevice>( m_device ),
13924                                                        reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
13925                                                        reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13926 
13927       return memoryRequirements;
13928     }
13929 
13930     template <typename X, typename Y, typename... Z>
13931     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getBufferMemoryRequirements2(const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info) const13932       Device::getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13933     {
13934       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2 &&
13935                          "Function <vkGetBufferMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
13936 
13937       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
13938       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
13939       getDispatcher()->vkGetBufferMemoryRequirements2( static_cast<VkDevice>( m_device ),
13940                                                        reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
13941                                                        reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13942 
13943       return structureChain;
13944     }
13945 
13946     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirements2(const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info) const13947       Device::getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const
13948     {
13949       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements2 &&
13950                          "Function <vkGetImageSparseMemoryRequirements2> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
13951 
13952       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements;
13953       uint32_t                                                          sparseMemoryRequirementCount;
13954       getDispatcher()->vkGetImageSparseMemoryRequirements2(
13955         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ), &sparseMemoryRequirementCount, nullptr );
13956       sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
13957       getDispatcher()->vkGetImageSparseMemoryRequirements2( static_cast<VkDevice>( m_device ),
13958                                                             reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
13959                                                             &sparseMemoryRequirementCount,
13960                                                             reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
13961 
13962       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
13963       if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
13964       {
13965         sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
13966       }
13967       return sparseMemoryRequirements;
13968     }
13969 
getFeatures2() const13970     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT
13971     {
13972       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2 &&
13973                          "Function <vkGetPhysicalDeviceFeatures2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
13974 
13975       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features;
13976       getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
13977                                                      reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
13978 
13979       return features;
13980     }
13981 
13982     template <typename X, typename Y, typename... Z>
getFeatures2() const13983     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT
13984     {
13985       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2 &&
13986                          "Function <vkGetPhysicalDeviceFeatures2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
13987 
13988       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
13989       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 &  features = structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>();
13990       getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
13991                                                      reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
13992 
13993       return structureChain;
13994     }
13995 
getProperties2() const13996     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT
13997     {
13998       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2 &&
13999                          "Function <vkGetPhysicalDeviceProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14000 
14001       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties;
14002       getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14003                                                        reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
14004 
14005       return properties;
14006     }
14007 
14008     template <typename X, typename Y, typename... Z>
getProperties2() const14009     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT
14010     {
14011       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2 &&
14012                          "Function <vkGetPhysicalDeviceProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14013 
14014       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>  structureChain;
14015       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties = structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>();
14016       getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14017                                                        reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
14018 
14019       return structureChain;
14020     }
14021 
14022     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2
getFormatProperties2(VULKAN_HPP_NAMESPACE::Format format) const14023                                            PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
14024     {
14025       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2 &&
14026                          "Function <vkGetPhysicalDeviceFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14027 
14028       VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties;
14029       getDispatcher()->vkGetPhysicalDeviceFormatProperties2(
14030         static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
14031 
14032       return formatProperties;
14033     }
14034 
14035     template <typename X, typename Y, typename... Z>
14036     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getFormatProperties2(VULKAN_HPP_NAMESPACE::Format format) const14037                                            PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
14038     {
14039       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2 &&
14040                          "Function <vkGetPhysicalDeviceFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14041 
14042       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
14043       VULKAN_HPP_NAMESPACE::FormatProperties2 &        formatProperties = structureChain.template get<VULKAN_HPP_NAMESPACE::FormatProperties2>();
14044       getDispatcher()->vkGetPhysicalDeviceFormatProperties2(
14045         static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
14046 
14047       return structureChain;
14048     }
14049 
14050     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties2
getImageFormatProperties2(const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const14051       PhysicalDevice::getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
14052     {
14053       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2 &&
14054                          "Function <vkGetPhysicalDeviceImageFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14055 
14056       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties;
14057       VULKAN_HPP_NAMESPACE::Result                 result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14058         getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14059                                                                     reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
14060                                                                     reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
14061       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" );
14062 
14063       return imageFormatProperties;
14064     }
14065 
14066     template <typename X, typename Y, typename... Z>
14067     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getImageFormatProperties2(const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const14068       PhysicalDevice::getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
14069     {
14070       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2 &&
14071                          "Function <vkGetPhysicalDeviceImageFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14072 
14073       StructureChain<X, Y, Z...>                     structureChain;
14074       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties = structureChain.template get<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>();
14075       VULKAN_HPP_NAMESPACE::Result                   result                = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14076         getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14077                                                                     reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
14078                                                                     reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
14079       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" );
14080 
14081       return structureChain;
14082     }
14083 
getQueueFamilyProperties2() const14084     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> PhysicalDevice::getQueueFamilyProperties2() const
14085     {
14086       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2 &&
14087                          "Function <vkGetPhysicalDeviceQueueFamilyProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14088 
14089       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties;
14090       uint32_t                                                  queueFamilyPropertyCount;
14091       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
14092       queueFamilyProperties.resize( queueFamilyPropertyCount );
14093       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14094                                                                   &queueFamilyPropertyCount,
14095                                                                   reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
14096 
14097       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
14098       if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
14099       {
14100         queueFamilyProperties.resize( queueFamilyPropertyCount );
14101       }
14102       return queueFamilyProperties;
14103     }
14104 
14105     template <typename StructureChain>
getQueueFamilyProperties2() const14106     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain> PhysicalDevice::getQueueFamilyProperties2() const
14107     {
14108       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2 &&
14109                          "Function <vkGetPhysicalDeviceQueueFamilyProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14110 
14111       std::vector<StructureChain>                               structureChains;
14112       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties;
14113       uint32_t                                                  queueFamilyPropertyCount;
14114       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
14115       structureChains.resize( queueFamilyPropertyCount );
14116       queueFamilyProperties.resize( queueFamilyPropertyCount );
14117       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
14118       {
14119         queueFamilyProperties[i].pNext = structureChains[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>().pNext;
14120       }
14121       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14122                                                                   &queueFamilyPropertyCount,
14123                                                                   reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
14124 
14125       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
14126       if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
14127       {
14128         structureChains.resize( queueFamilyPropertyCount );
14129       }
14130       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
14131       {
14132         structureChains[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>() = queueFamilyProperties[i];
14133       }
14134       return structureChains;
14135     }
14136 
14137     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
getMemoryProperties2() const14138                                            PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT
14139     {
14140       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2 &&
14141                          "Function <vkGetPhysicalDeviceMemoryProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14142 
14143       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties;
14144       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14145                                                              reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
14146 
14147       return memoryProperties;
14148     }
14149 
14150     template <typename X, typename Y, typename... Z>
getMemoryProperties2() const14151     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT
14152     {
14153       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2 &&
14154                          "Function <vkGetPhysicalDeviceMemoryProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14155 
14156       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>        structureChain;
14157       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties =
14158         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>();
14159       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14160                                                              reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
14161 
14162       return structureChain;
14163     }
14164 
14165     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
getSparseImageFormatProperties2(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo) const14166       PhysicalDevice::getSparseImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const
14167     {
14168       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2 &&
14169                          "Function <vkGetPhysicalDeviceSparseImageFormatProperties2> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
14170 
14171       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2> properties;
14172       uint32_t                                                        propertyCount;
14173       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14174                                                                         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
14175                                                                         &propertyCount,
14176                                                                         nullptr );
14177       properties.resize( propertyCount );
14178       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14179                                                                         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
14180                                                                         &propertyCount,
14181                                                                         reinterpret_cast<VkSparseImageFormatProperties2 *>( properties.data() ) );
14182 
14183       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
14184       if ( propertyCount < properties.size() )
14185       {
14186         properties.resize( propertyCount );
14187       }
14188       return properties;
14189     }
14190 
trim(VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags) const14191     VULKAN_HPP_INLINE void CommandPool::trim( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT
14192     {
14193       VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPool && "Function <vkTrimCommandPool> requires <VK_KHR_maintenance1> or <VK_VERSION_1_1>" );
14194 
14195       getDispatcher()->vkTrimCommandPool(
14196         static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
14197     }
14198 
14199     VULKAN_HPP_NODISCARD
14200       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Queue>::Type
getQueue2(VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo) const14201                         Device::getQueue2( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
14202     {
14203       VULKAN_HPP_NAMESPACE::Queue queue;
14204       getDispatcher()->vkGetDeviceQueue2(
14205         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceQueueInfo2 *>( &queueInfo ), reinterpret_cast<VkQueue *>( &queue ) );
14206 
14207       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Queue( *this, *reinterpret_cast<VkQueue *>( &queue ) );
14208     }
14209 
14210     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
14211       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion>::Type
createSamplerYcbcrConversion(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const14212       Device::createSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const &                  createInfo,
14213                                             VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
14214       VULKAN_HPP_RAII_CREATE_NOEXCEPT
14215     {
14216       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion;
14217       VULKAN_HPP_NAMESPACE::Result                 result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSamplerYcbcrConversion(
14218         static_cast<VkDevice>( m_device ),
14219         reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( &createInfo ),
14220         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
14221         reinterpret_cast<VkSamplerYcbcrConversion *>( &ycbcrConversion ) ) );
14222       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14223       {
14224 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
14225         return VULKAN_HPP_UNEXPECTED( result );
14226 #  else
14227         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createSamplerYcbcrConversion" );
14228 #  endif
14229       }
14230 
14231       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion(
14232         *this, *reinterpret_cast<VkSamplerYcbcrConversion *>( &ycbcrConversion ), allocator );
14233     }
14234 
14235     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
14236       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate>::Type
createDescriptorUpdateTemplate(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const14237       Device::createDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const &                createInfo,
14238                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
14239       VULKAN_HPP_RAII_CREATE_NOEXCEPT
14240     {
14241       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate;
14242       VULKAN_HPP_NAMESPACE::Result                   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDescriptorUpdateTemplate(
14243         static_cast<VkDevice>( m_device ),
14244         reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( &createInfo ),
14245         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
14246         reinterpret_cast<VkDescriptorUpdateTemplate *>( &descriptorUpdateTemplate ) ) );
14247       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14248       {
14249 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
14250         return VULKAN_HPP_UNEXPECTED( result );
14251 #  else
14252         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createDescriptorUpdateTemplate" );
14253 #  endif
14254       }
14255 
14256       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate(
14257         *this, *reinterpret_cast<VkDescriptorUpdateTemplate *>( &descriptorUpdateTemplate ), allocator );
14258     }
14259 
14260     template <typename DataType>
updateWithTemplate(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,DataType const & data) const14261     VULKAN_HPP_INLINE void DescriptorSet::updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
14262                                                               DataType const &                               data ) const VULKAN_HPP_NOEXCEPT
14263     {
14264       VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSetWithTemplate &&
14265                          "Function <vkUpdateDescriptorSetWithTemplate> requires <VK_KHR_descriptor_update_template> or <VK_VERSION_1_1>" );
14266 
14267       getDispatcher()->vkUpdateDescriptorSetWithTemplate( static_cast<VkDevice>( m_device ),
14268                                                           static_cast<VkDescriptorSet>( m_descriptorSet ),
14269                                                           static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
14270                                                           reinterpret_cast<const void *>( &data ) );
14271     }
14272 
14273     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties
getExternalBufferProperties(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo) const14274       PhysicalDevice::getExternalBufferProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT
14275     {
14276       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties &&
14277                          "Function <vkGetPhysicalDeviceExternalBufferProperties> requires <VK_KHR_external_memory_capabilities> or <VK_VERSION_1_1>" );
14278 
14279       VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties;
14280       getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14281                                                                     reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( &externalBufferInfo ),
14282                                                                     reinterpret_cast<VkExternalBufferProperties *>( &externalBufferProperties ) );
14283 
14284       return externalBufferProperties;
14285     }
14286 
14287     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties
getExternalFenceProperties(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo) const14288       PhysicalDevice::getExternalFenceProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT
14289     {
14290       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties &&
14291                          "Function <vkGetPhysicalDeviceExternalFenceProperties> requires <VK_KHR_external_fence_capabilities> or <VK_VERSION_1_1>" );
14292 
14293       VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties;
14294       getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14295                                                                    reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( &externalFenceInfo ),
14296                                                                    reinterpret_cast<VkExternalFenceProperties *>( &externalFenceProperties ) );
14297 
14298       return externalFenceProperties;
14299     }
14300 
getExternalSemaphoreProperties(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo) const14301     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphoreProperties(
14302       const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT
14303     {
14304       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties &&
14305                          "Function <vkGetPhysicalDeviceExternalSemaphoreProperties> requires <VK_KHR_external_semaphore_capabilities> or <VK_VERSION_1_1>" );
14306 
14307       VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties;
14308       getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties(
14309         static_cast<VkPhysicalDevice>( m_physicalDevice ),
14310         reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( &externalSemaphoreInfo ),
14311         reinterpret_cast<VkExternalSemaphoreProperties *>( &externalSemaphoreProperties ) );
14312 
14313       return externalSemaphoreProperties;
14314     }
14315 
14316     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
getDescriptorSetLayoutSupport(const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo) const14317       Device::getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
14318     {
14319       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupport &&
14320                          "Function <vkGetDescriptorSetLayoutSupport> requires <VK_KHR_maintenance3> or <VK_VERSION_1_1>" );
14321 
14322       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support;
14323       getDispatcher()->vkGetDescriptorSetLayoutSupport( static_cast<VkDevice>( m_device ),
14324                                                         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
14325                                                         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
14326 
14327       return support;
14328     }
14329 
14330     template <typename X, typename Y, typename... Z>
14331     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getDescriptorSetLayoutSupport(const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo) const14332       Device::getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
14333     {
14334       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupport &&
14335                          "Function <vkGetDescriptorSetLayoutSupport> requires <VK_KHR_maintenance3> or <VK_VERSION_1_1>" );
14336 
14337       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>   structureChain;
14338       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support = structureChain.template get<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>();
14339       getDispatcher()->vkGetDescriptorSetLayoutSupport( static_cast<VkDevice>( m_device ),
14340                                                         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
14341                                                         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
14342 
14343       return structureChain;
14344     }
14345 
14346     //=== VK_VERSION_1_2 ===
14347 
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) const14348     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14349                                                              VULKAN_HPP_NAMESPACE::DeviceSize offset,
14350                                                              VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
14351                                                              VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
14352                                                              uint32_t                         maxDrawCount,
14353                                                              uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
14354     {
14355       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCount &&
14356                          "Function <vkCmdDrawIndirectCount> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
14357 
14358       getDispatcher()->vkCmdDrawIndirectCount( static_cast<VkCommandBuffer>( m_commandBuffer ),
14359                                                static_cast<VkBuffer>( buffer ),
14360                                                static_cast<VkDeviceSize>( offset ),
14361                                                static_cast<VkBuffer>( countBuffer ),
14362                                                static_cast<VkDeviceSize>( countBufferOffset ),
14363                                                maxDrawCount,
14364                                                stride );
14365     }
14366 
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) const14367     VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14368                                                                     VULKAN_HPP_NAMESPACE::DeviceSize offset,
14369                                                                     VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
14370                                                                     VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
14371                                                                     uint32_t                         maxDrawCount,
14372                                                                     uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
14373     {
14374       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexedIndirectCount &&
14375                          "Function <vkCmdDrawIndexedIndirectCount> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
14376 
14377       getDispatcher()->vkCmdDrawIndexedIndirectCount( static_cast<VkCommandBuffer>( m_commandBuffer ),
14378                                                       static_cast<VkBuffer>( buffer ),
14379                                                       static_cast<VkDeviceSize>( offset ),
14380                                                       static_cast<VkBuffer>( countBuffer ),
14381                                                       static_cast<VkDeviceSize>( countBufferOffset ),
14382                                                       maxDrawCount,
14383                                                       stride );
14384     }
14385 
14386     VULKAN_HPP_NODISCARD
14387       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass>::Type
createRenderPass2(VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const14388                         Device::createRenderPass2( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const &                             createInfo,
14389                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
14390       VULKAN_HPP_RAII_CREATE_NOEXCEPT
14391     {
14392       VULKAN_HPP_NAMESPACE::RenderPass renderPass;
14393       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRenderPass2(
14394         static_cast<VkDevice>( m_device ),
14395         reinterpret_cast<const VkRenderPassCreateInfo2 *>( &createInfo ),
14396         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
14397         reinterpret_cast<VkRenderPass *>( &renderPass ) ) );
14398       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14399       {
14400 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
14401         return VULKAN_HPP_UNEXPECTED( result );
14402 #  else
14403         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createRenderPass2" );
14404 #  endif
14405       }
14406 
14407       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass( *this, *reinterpret_cast<VkRenderPass *>( &renderPass ), allocator );
14408     }
14409 
beginRenderPass2(const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo) const14410     VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
14411                                                             const VULKAN_HPP_NAMESPACE::SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT
14412     {
14413       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2 &&
14414                          "Function <vkCmdBeginRenderPass2> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
14415 
14416       getDispatcher()->vkCmdBeginRenderPass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
14417                                               reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
14418                                               reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ) );
14419     }
14420 
nextSubpass2(const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo) const14421     VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,
14422                                                         const VULKAN_HPP_NAMESPACE::SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
14423     {
14424       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2 && "Function <vkCmdNextSubpass2> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
14425 
14426       getDispatcher()->vkCmdNextSubpass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
14427                                           reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ),
14428                                           reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
14429     }
14430 
endRenderPass2(const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo) const14431     VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
14432     {
14433       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2 && "Function <vkCmdEndRenderPass2> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
14434 
14435       getDispatcher()->vkCmdEndRenderPass2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
14436     }
14437 
reset(uint32_t firstQuery,uint32_t queryCount) const14438     VULKAN_HPP_INLINE void QueryPool::reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
14439     {
14440       VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPool && "Function <vkResetQueryPool> requires <VK_EXT_host_query_reset> or <VK_VERSION_1_2>" );
14441 
14442       getDispatcher()->vkResetQueryPool( static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), firstQuery, queryCount );
14443     }
14444 
getCounterValue() const14445     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Semaphore::getCounterValue() const
14446     {
14447       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreCounterValue &&
14448                          "Function <vkGetSemaphoreCounterValue> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
14449 
14450       uint64_t                     value;
14451       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14452         getDispatcher()->vkGetSemaphoreCounterValue( static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), &value ) );
14453       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Semaphore::getCounterValue" );
14454 
14455       return value;
14456     }
14457 
waitSemaphores(const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo,uint64_t timeout) const14458     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo,
14459                                                                                                 uint64_t                                        timeout ) const
14460     {
14461       VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphores && "Function <vkWaitSemaphores> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
14462 
14463       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14464         getDispatcher()->vkWaitSemaphores( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreWaitInfo *>( &waitInfo ), timeout ) );
14465       VULKAN_HPP_NAMESPACE::detail::resultCheck(
14466         result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphores", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } );
14467 
14468       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
14469     }
14470 
signalSemaphore(const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo) const14471     VULKAN_HPP_INLINE void Device::signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const
14472     {
14473       VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphore && "Function <vkSignalSemaphore> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
14474 
14475       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14476         getDispatcher()->vkSignalSemaphore( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreSignalInfo *>( &signalInfo ) ) );
14477       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphore" );
14478     }
14479 
14480     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getBufferAddress(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const14481                                            Device::getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
14482     {
14483       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferDeviceAddress &&
14484                          "Function <vkGetBufferDeviceAddress> requires <VK_EXT_buffer_device_address> or <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
14485 
14486       VkDeviceAddress result =
14487         getDispatcher()->vkGetBufferDeviceAddress( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
14488 
14489       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( result );
14490     }
14491 
14492     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getBufferOpaqueCaptureAddress(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const14493       Device::getBufferOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
14494     {
14495       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureAddress &&
14496                          "Function <vkGetBufferOpaqueCaptureAddress> requires <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
14497 
14498       uint64_t result =
14499         getDispatcher()->vkGetBufferOpaqueCaptureAddress( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
14500 
14501       return result;
14502     }
14503 
14504     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getMemoryOpaqueCaptureAddress(const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info) const14505       Device::getMemoryOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
14506     {
14507       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress &&
14508                          "Function <vkGetDeviceMemoryOpaqueCaptureAddress> requires <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
14509 
14510       uint64_t result = getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress( static_cast<VkDevice>( m_device ),
14511                                                                                 reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( &info ) );
14512 
14513       return result;
14514     }
14515 
14516     //=== VK_VERSION_1_3 ===
14517 
getToolProperties() const14518     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties> PhysicalDevice::getToolProperties() const
14519     {
14520       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceToolProperties &&
14521                          "Function <vkGetPhysicalDeviceToolProperties> requires <VK_EXT_tooling_info> or <VK_VERSION_1_3>" );
14522 
14523       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties> toolProperties;
14524       uint32_t                                                        toolCount;
14525       VULKAN_HPP_NAMESPACE::Result                                    result;
14526       do
14527       {
14528         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14529           getDispatcher()->vkGetPhysicalDeviceToolProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, nullptr ) );
14530         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && toolCount )
14531         {
14532           toolProperties.resize( toolCount );
14533           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceToolProperties(
14534             static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, reinterpret_cast<VkPhysicalDeviceToolProperties *>( toolProperties.data() ) ) );
14535         }
14536       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14537       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolProperties" );
14538       VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() );
14539       if ( toolCount < toolProperties.size() )
14540       {
14541         toolProperties.resize( toolCount );
14542       }
14543       return toolProperties;
14544     }
14545 
14546     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
14547       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot>::Type
createPrivateDataSlot(VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const14548       Device::createPrivateDataSlot( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const &                         createInfo,
14549                                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
14550       VULKAN_HPP_RAII_CREATE_NOEXCEPT
14551     {
14552       VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot;
14553       VULKAN_HPP_NAMESPACE::Result          result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreatePrivateDataSlot(
14554         static_cast<VkDevice>( m_device ),
14555         reinterpret_cast<const VkPrivateDataSlotCreateInfo *>( &createInfo ),
14556         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
14557         reinterpret_cast<VkPrivateDataSlot *>( &privateDataSlot ) ) );
14558       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14559       {
14560 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
14561         return VULKAN_HPP_UNEXPECTED( result );
14562 #  else
14563         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createPrivateDataSlot" );
14564 #  endif
14565       }
14566 
14567       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot( *this, *reinterpret_cast<VkPrivateDataSlot *>( &privateDataSlot ), allocator );
14568     }
14569 
setPrivateData(VULKAN_HPP_NAMESPACE::ObjectType objectType_,uint64_t objectHandle,VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot,uint64_t data) const14570     VULKAN_HPP_INLINE void Device::setPrivateData( VULKAN_HPP_NAMESPACE::ObjectType      objectType_,
14571                                                    uint64_t                              objectHandle,
14572                                                    VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot,
14573                                                    uint64_t                              data ) const
14574     {
14575       VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateData && "Function <vkSetPrivateData> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
14576 
14577       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetPrivateData(
14578         static_cast<VkDevice>( m_device ), static_cast<VkObjectType>( objectType_ ), objectHandle, static_cast<VkPrivateDataSlot>( privateDataSlot ), data ) );
14579       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateData" );
14580     }
14581 
getPrivateData(VULKAN_HPP_NAMESPACE::ObjectType objectType_,uint64_t objectHandle,VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot) const14582     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateData( VULKAN_HPP_NAMESPACE::ObjectType      objectType_,
14583                                                                             uint64_t                              objectHandle,
14584                                                                             VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT
14585     {
14586       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateData && "Function <vkGetPrivateData> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
14587 
14588       uint64_t data;
14589       getDispatcher()->vkGetPrivateData(
14590         static_cast<VkDevice>( m_device ), static_cast<VkObjectType>( objectType_ ), objectHandle, static_cast<VkPrivateDataSlot>( privateDataSlot ), &data );
14591 
14592       return data;
14593     }
14594 
setEvent2(VULKAN_HPP_NAMESPACE::Event event,const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo) const14595     VULKAN_HPP_INLINE void CommandBuffer::setEvent2( VULKAN_HPP_NAMESPACE::Event                  event,
14596                                                      const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
14597     {
14598       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2 && "Function <vkCmdSetEvent2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
14599 
14600       getDispatcher()->vkCmdSetEvent2(
14601         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), reinterpret_cast<const VkDependencyInfo *>( &dependencyInfo ) );
14602     }
14603 
resetEvent2(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask) const14604     VULKAN_HPP_INLINE void CommandBuffer::resetEvent2( VULKAN_HPP_NAMESPACE::Event               event,
14605                                                        VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT
14606     {
14607       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2 && "Function <vkCmdResetEvent2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
14608 
14609       getDispatcher()->vkCmdResetEvent2(
14610         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags2>( stageMask ) );
14611     }
14612 
14613     VULKAN_HPP_INLINE void
waitEvents2(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfo> const & dependencyInfos) const14614       CommandBuffer::waitEvents2( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &          events,
14615                                   VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfo> const & dependencyInfos ) const
14616     {
14617       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2 && "Function <vkCmdWaitEvents2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
14618 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
14619       VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() );
14620 #  else
14621       if ( events.size() != dependencyInfos.size() )
14622       {
14623         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::waitEvents2: events.size() != dependencyInfos.size()" );
14624       }
14625 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
14626 
14627       getDispatcher()->vkCmdWaitEvents2( static_cast<VkCommandBuffer>( m_commandBuffer ),
14628                                          events.size(),
14629                                          reinterpret_cast<const VkEvent *>( events.data() ),
14630                                          reinterpret_cast<const VkDependencyInfo *>( dependencyInfos.data() ) );
14631     }
14632 
pipelineBarrier2(const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo) const14633     VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
14634     {
14635       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2 && "Function <vkCmdPipelineBarrier2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
14636 
14637       getDispatcher()->vkCmdPipelineBarrier2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkDependencyInfo *>( &dependencyInfo ) );
14638     }
14639 
writeTimestamp2(VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const14640     VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage,
14641                                                            VULKAN_HPP_NAMESPACE::QueryPool           queryPool,
14642                                                            uint32_t                                  query ) const VULKAN_HPP_NOEXCEPT
14643     {
14644       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2 && "Function <vkCmdWriteTimestamp2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
14645 
14646       getDispatcher()->vkCmdWriteTimestamp2(
14647         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineStageFlags2>( stage ), static_cast<VkQueryPool>( queryPool ), query );
14648     }
14649 
submit2(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2> const & submits,VULKAN_HPP_NAMESPACE::Fence fence) const14650     VULKAN_HPP_INLINE void Queue::submit2( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2> const & submits,
14651                                            VULKAN_HPP_NAMESPACE::Fence                                                       fence ) const
14652     {
14653       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2 && "Function <vkQueueSubmit2> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
14654 
14655       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueueSubmit2(
14656         static_cast<VkQueue>( m_queue ), submits.size(), reinterpret_cast<const VkSubmitInfo2 *>( submits.data() ), static_cast<VkFence>( fence ) ) );
14657       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2" );
14658     }
14659 
copyBuffer2(const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo) const14660     VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT
14661     {
14662       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2 && "Function <vkCmdCopyBuffer2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
14663 
14664       getDispatcher()->vkCmdCopyBuffer2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyBufferInfo2 *>( &copyBufferInfo ) );
14665     }
14666 
copyImage2(const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo) const14667     VULKAN_HPP_INLINE void CommandBuffer::copyImage2( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT
14668     {
14669       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2 && "Function <vkCmdCopyImage2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
14670 
14671       getDispatcher()->vkCmdCopyImage2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyImageInfo2 *>( &copyImageInfo ) );
14672     }
14673 
14674     VULKAN_HPP_INLINE void
copyBufferToImage2(const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo) const14675       CommandBuffer::copyBufferToImage2( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT
14676     {
14677       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2 &&
14678                          "Function <vkCmdCopyBufferToImage2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
14679 
14680       getDispatcher()->vkCmdCopyBufferToImage2( static_cast<VkCommandBuffer>( m_commandBuffer ),
14681                                                 reinterpret_cast<const VkCopyBufferToImageInfo2 *>( &copyBufferToImageInfo ) );
14682     }
14683 
14684     VULKAN_HPP_INLINE void
copyImageToBuffer2(const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo) const14685       CommandBuffer::copyImageToBuffer2( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT
14686     {
14687       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2 &&
14688                          "Function <vkCmdCopyImageToBuffer2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
14689 
14690       getDispatcher()->vkCmdCopyImageToBuffer2( static_cast<VkCommandBuffer>( m_commandBuffer ),
14691                                                 reinterpret_cast<const VkCopyImageToBufferInfo2 *>( &copyImageToBufferInfo ) );
14692     }
14693 
blitImage2(const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo) const14694     VULKAN_HPP_INLINE void CommandBuffer::blitImage2( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT
14695     {
14696       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2 && "Function <vkCmdBlitImage2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
14697 
14698       getDispatcher()->vkCmdBlitImage2( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkBlitImageInfo2 *>( &blitImageInfo ) );
14699     }
14700 
resolveImage2(const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo) const14701     VULKAN_HPP_INLINE void CommandBuffer::resolveImage2( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT
14702     {
14703       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2 && "Function <vkCmdResolveImage2> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
14704 
14705       getDispatcher()->vkCmdResolveImage2( static_cast<VkCommandBuffer>( m_commandBuffer ),
14706                                            reinterpret_cast<const VkResolveImageInfo2 *>( &resolveImageInfo ) );
14707     }
14708 
beginRendering(const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo) const14709     VULKAN_HPP_INLINE void CommandBuffer::beginRendering( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT
14710     {
14711       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRendering && "Function <vkCmdBeginRendering> requires <VK_KHR_dynamic_rendering> or <VK_VERSION_1_3>" );
14712 
14713       getDispatcher()->vkCmdBeginRendering( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkRenderingInfo *>( &renderingInfo ) );
14714     }
14715 
endRendering() const14716     VULKAN_HPP_INLINE void CommandBuffer::endRendering() const VULKAN_HPP_NOEXCEPT
14717     {
14718       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRendering && "Function <vkCmdEndRendering> requires <VK_KHR_dynamic_rendering> or <VK_VERSION_1_3>" );
14719 
14720       getDispatcher()->vkCmdEndRendering( static_cast<VkCommandBuffer>( m_commandBuffer ) );
14721     }
14722 
setCullMode(VULKAN_HPP_NAMESPACE::CullModeFlags cullMode) const14723     VULKAN_HPP_INLINE void CommandBuffer::setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT
14724     {
14725       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullMode &&
14726                          "Function <vkCmdSetCullMode> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14727 
14728       getDispatcher()->vkCmdSetCullMode( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCullModeFlags>( cullMode ) );
14729     }
14730 
setFrontFace(VULKAN_HPP_NAMESPACE::FrontFace frontFace) const14731     VULKAN_HPP_INLINE void CommandBuffer::setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT
14732     {
14733       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFace &&
14734                          "Function <vkCmdSetFrontFace> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14735 
14736       getDispatcher()->vkCmdSetFrontFace( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkFrontFace>( frontFace ) );
14737     }
14738 
setPrimitiveTopology(VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology) const14739     VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT
14740     {
14741       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveTopology &&
14742                          "Function <vkCmdSetPrimitiveTopology> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14743 
14744       getDispatcher()->vkCmdSetPrimitiveTopology( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPrimitiveTopology>( primitiveTopology ) );
14745     }
14746 
14747     VULKAN_HPP_INLINE void
setViewportWithCount(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports) const14748       CommandBuffer::setViewportWithCount( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
14749     {
14750       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWithCount &&
14751                          "Function <vkCmdSetViewportWithCount> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14752 
14753       getDispatcher()->vkCmdSetViewportWithCount(
14754         static_cast<VkCommandBuffer>( m_commandBuffer ), viewports.size(), reinterpret_cast<const VkViewport *>( viewports.data() ) );
14755     }
14756 
14757     VULKAN_HPP_INLINE void
setScissorWithCount(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors) const14758       CommandBuffer::setScissorWithCount( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
14759     {
14760       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissorWithCount &&
14761                          "Function <vkCmdSetScissorWithCount> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14762 
14763       getDispatcher()->vkCmdSetScissorWithCount(
14764         static_cast<VkCommandBuffer>( m_commandBuffer ), scissors.size(), reinterpret_cast<const VkRect2D *>( scissors.data() ) );
14765     }
14766 
bindVertexBuffers2(uint32_t firstBinding,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides) const14767     VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2( uint32_t                                                                         firstBinding,
14768                                                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
14769                                                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
14770                                                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes,
14771                                                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides ) const
14772     {
14773       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers2 &&
14774                          "Function <vkCmdBindVertexBuffers2> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14775 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
14776       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
14777       VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
14778       VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() );
14779 #  else
14780       if ( buffers.size() != offsets.size() )
14781       {
14782         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != offsets.size()" );
14783       }
14784       if ( !sizes.empty() && buffers.size() != sizes.size() )
14785       {
14786         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != sizes.size()" );
14787       }
14788       if ( !strides.empty() && buffers.size() != strides.size() )
14789       {
14790         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != strides.size()" );
14791       }
14792 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
14793 
14794       getDispatcher()->vkCmdBindVertexBuffers2( static_cast<VkCommandBuffer>( m_commandBuffer ),
14795                                                 firstBinding,
14796                                                 buffers.size(),
14797                                                 reinterpret_cast<const VkBuffer *>( buffers.data() ),
14798                                                 reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
14799                                                 reinterpret_cast<const VkDeviceSize *>( sizes.data() ),
14800                                                 reinterpret_cast<const VkDeviceSize *>( strides.data() ) );
14801     }
14802 
setDepthTestEnable(VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable) const14803     VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT
14804     {
14805       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthTestEnable &&
14806                          "Function <vkCmdSetDepthTestEnable> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14807 
14808       getDispatcher()->vkCmdSetDepthTestEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthTestEnable ) );
14809     }
14810 
setDepthWriteEnable(VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable) const14811     VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT
14812     {
14813       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthWriteEnable &&
14814                          "Function <vkCmdSetDepthWriteEnable> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14815 
14816       getDispatcher()->vkCmdSetDepthWriteEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthWriteEnable ) );
14817     }
14818 
setDepthCompareOp(VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp) const14819     VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT
14820     {
14821       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthCompareOp &&
14822                          "Function <vkCmdSetDepthCompareOp> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14823 
14824       getDispatcher()->vkCmdSetDepthCompareOp( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCompareOp>( depthCompareOp ) );
14825     }
14826 
setDepthBoundsTestEnable(VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable) const14827     VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT
14828     {
14829       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBoundsTestEnable &&
14830                          "Function <vkCmdSetDepthBoundsTestEnable> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14831 
14832       getDispatcher()->vkCmdSetDepthBoundsTestEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthBoundsTestEnable ) );
14833     }
14834 
setStencilTestEnable(VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable) const14835     VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT
14836     {
14837       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilTestEnable &&
14838                          "Function <vkCmdSetStencilTestEnable> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14839 
14840       getDispatcher()->vkCmdSetStencilTestEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( stencilTestEnable ) );
14841     }
14842 
setStencilOp(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) const14843     VULKAN_HPP_INLINE void CommandBuffer::setStencilOp( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
14844                                                         VULKAN_HPP_NAMESPACE::StencilOp        failOp,
14845                                                         VULKAN_HPP_NAMESPACE::StencilOp        passOp,
14846                                                         VULKAN_HPP_NAMESPACE::StencilOp        depthFailOp,
14847                                                         VULKAN_HPP_NAMESPACE::CompareOp        compareOp ) const VULKAN_HPP_NOEXCEPT
14848     {
14849       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOp &&
14850                          "Function <vkCmdSetStencilOp> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14851 
14852       getDispatcher()->vkCmdSetStencilOp( static_cast<VkCommandBuffer>( m_commandBuffer ),
14853                                           static_cast<VkStencilFaceFlags>( faceMask ),
14854                                           static_cast<VkStencilOp>( failOp ),
14855                                           static_cast<VkStencilOp>( passOp ),
14856                                           static_cast<VkStencilOp>( depthFailOp ),
14857                                           static_cast<VkCompareOp>( compareOp ) );
14858     }
14859 
setRasterizerDiscardEnable(VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable) const14860     VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT
14861     {
14862       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizerDiscardEnable &&
14863                          "Function <vkCmdSetRasterizerDiscardEnable> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14864 
14865       getDispatcher()->vkCmdSetRasterizerDiscardEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( rasterizerDiscardEnable ) );
14866     }
14867 
setDepthBiasEnable(VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable) const14868     VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT
14869     {
14870       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBiasEnable &&
14871                          "Function <vkCmdSetDepthBiasEnable> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14872 
14873       getDispatcher()->vkCmdSetDepthBiasEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthBiasEnable ) );
14874     }
14875 
setPrimitiveRestartEnable(VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable) const14876     VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT
14877     {
14878       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveRestartEnable &&
14879                          "Function <vkCmdSetPrimitiveRestartEnable> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
14880 
14881       getDispatcher()->vkCmdSetPrimitiveRestartEnable( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( primitiveRestartEnable ) );
14882     }
14883 
14884     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirements(const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info) const14885       Device::getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
14886     {
14887       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirements &&
14888                          "Function <vkGetDeviceBufferMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
14889 
14890       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
14891       getDispatcher()->vkGetDeviceBufferMemoryRequirements( static_cast<VkDevice>( m_device ),
14892                                                             reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( &info ),
14893                                                             reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
14894 
14895       return memoryRequirements;
14896     }
14897 
14898     template <typename X, typename Y, typename... Z>
14899     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getBufferMemoryRequirements(const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info) const14900       Device::getBufferMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
14901     {
14902       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirements &&
14903                          "Function <vkGetDeviceBufferMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
14904 
14905       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
14906       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
14907       getDispatcher()->vkGetDeviceBufferMemoryRequirements( static_cast<VkDevice>( m_device ),
14908                                                             reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( &info ),
14909                                                             reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
14910 
14911       return structureChain;
14912     }
14913 
14914     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirements(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info) const14915       Device::getImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
14916     {
14917       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirements &&
14918                          "Function <vkGetDeviceImageMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
14919 
14920       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
14921       getDispatcher()->vkGetDeviceImageMemoryRequirements( static_cast<VkDevice>( m_device ),
14922                                                            reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
14923                                                            reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
14924 
14925       return memoryRequirements;
14926     }
14927 
14928     template <typename X, typename Y, typename... Z>
14929     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getImageMemoryRequirements(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info) const14930       Device::getImageMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
14931     {
14932       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirements &&
14933                          "Function <vkGetDeviceImageMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
14934 
14935       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
14936       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
14937       getDispatcher()->vkGetDeviceImageMemoryRequirements( static_cast<VkDevice>( m_device ),
14938                                                            reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
14939                                                            reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
14940 
14941       return structureChain;
14942     }
14943 
14944     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirements(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info) const14945                                            Device::getImageSparseMemoryRequirements( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const
14946     {
14947       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSparseMemoryRequirements &&
14948                          "Function <vkGetDeviceImageSparseMemoryRequirements> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
14949 
14950       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements;
14951       uint32_t                                                          sparseMemoryRequirementCount;
14952       getDispatcher()->vkGetDeviceImageSparseMemoryRequirements(
14953         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ), &sparseMemoryRequirementCount, nullptr );
14954       sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
14955       getDispatcher()->vkGetDeviceImageSparseMemoryRequirements( static_cast<VkDevice>( m_device ),
14956                                                                  reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
14957                                                                  &sparseMemoryRequirementCount,
14958                                                                  reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
14959 
14960       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
14961       if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
14962       {
14963         sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
14964       }
14965       return sparseMemoryRequirements;
14966     }
14967 
14968     //=== VK_KHR_surface ===
14969 
getSurfaceSupportKHR(uint32_t queueFamilyIndex,VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const14970     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 PhysicalDevice::getSurfaceSupportKHR( uint32_t                         queueFamilyIndex,
14971                                                                                                               VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
14972     {
14973       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR && "Function <vkGetPhysicalDeviceSurfaceSupportKHR> requires <VK_KHR_surface>" );
14974 
14975       VULKAN_HPP_NAMESPACE::Bool32 supported;
14976       VULKAN_HPP_NAMESPACE::Result result =
14977         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14978                                                                                                           queueFamilyIndex,
14979                                                                                                           static_cast<VkSurfaceKHR>( surface ),
14980                                                                                                           reinterpret_cast<VkBool32 *>( &supported ) ) );
14981       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" );
14982 
14983       return supported;
14984     }
14985 
14986     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR
getSurfaceCapabilitiesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const14987                                            PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
14988     {
14989       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR &&
14990                          "Function <vkGetPhysicalDeviceSurfaceCapabilitiesKHR> requires <VK_KHR_surface>" );
14991 
14992       VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities;
14993       VULKAN_HPP_NAMESPACE::Result                 result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14994         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
14995                                                                     static_cast<VkSurfaceKHR>( surface ),
14996                                                                     reinterpret_cast<VkSurfaceCapabilitiesKHR *>( &surfaceCapabilities ) ) );
14997       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" );
14998 
14999       return surfaceCapabilities;
15000     }
15001 
15002     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>
getSurfaceFormatsKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const15003                                            PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
15004     {
15005       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR && "Function <vkGetPhysicalDeviceSurfaceFormatsKHR> requires <VK_KHR_surface>" );
15006 
15007       std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR> surfaceFormats;
15008       uint32_t                                            surfaceFormatCount;
15009       VULKAN_HPP_NAMESPACE::Result                        result;
15010       do
15011       {
15012         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR(
15013           static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
15014         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount )
15015         {
15016           surfaceFormats.resize( surfaceFormatCount );
15017           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15018             getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15019                                                                    static_cast<VkSurfaceKHR>( surface ),
15020                                                                    &surfaceFormatCount,
15021                                                                    reinterpret_cast<VkSurfaceFormatKHR *>( surfaceFormats.data() ) ) );
15022         }
15023       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15024       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" );
15025       VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
15026       if ( surfaceFormatCount < surfaceFormats.size() )
15027       {
15028         surfaceFormats.resize( surfaceFormatCount );
15029       }
15030       return surfaceFormats;
15031     }
15032 
15033     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
getSurfacePresentModesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const15034                                            PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
15035     {
15036       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR &&
15037                          "Function <vkGetPhysicalDeviceSurfacePresentModesKHR> requires <VK_KHR_surface>" );
15038 
15039       std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR> presentModes;
15040       uint32_t                                          presentModeCount;
15041       VULKAN_HPP_NAMESPACE::Result                      result;
15042       do
15043       {
15044         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR(
15045           static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
15046         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentModeCount )
15047         {
15048           presentModes.resize( presentModeCount );
15049           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15050             getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15051                                                                         static_cast<VkSurfaceKHR>( surface ),
15052                                                                         &presentModeCount,
15053                                                                         reinterpret_cast<VkPresentModeKHR *>( presentModes.data() ) ) );
15054         }
15055       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15056       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" );
15057       VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
15058       if ( presentModeCount < presentModes.size() )
15059       {
15060         presentModes.resize( presentModeCount );
15061       }
15062       return presentModes;
15063     }
15064 
15065     //=== VK_KHR_swapchain ===
15066 
15067     VULKAN_HPP_NODISCARD
15068       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>::Type
createSwapchainKHR(VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15069                         Device::createSwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const &                            createInfo,
15070                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15071       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15072     {
15073       VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain;
15074       VULKAN_HPP_NAMESPACE::Result       result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSwapchainKHR(
15075         static_cast<VkDevice>( m_device ),
15076         reinterpret_cast<const VkSwapchainCreateInfoKHR *>( &createInfo ),
15077         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15078         reinterpret_cast<VkSwapchainKHR *>( &swapchain ) ) );
15079       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15080       {
15081 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15082         return VULKAN_HPP_UNEXPECTED( result );
15083 #  else
15084         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createSwapchainKHR" );
15085 #  endif
15086       }
15087 
15088       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR( *this, *reinterpret_cast<VkSwapchainKHR *>( &swapchain ), allocator );
15089     }
15090 
getImages() const15091     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::Image> SwapchainKHR::getImages() const
15092     {
15093       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainImagesKHR && "Function <vkGetSwapchainImagesKHR> requires <VK_KHR_swapchain>" );
15094 
15095       std::vector<VULKAN_HPP_NAMESPACE::Image> swapchainImages;
15096       uint32_t                                 swapchainImageCount;
15097       VULKAN_HPP_NAMESPACE::Result             result;
15098       do
15099       {
15100         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSwapchainImagesKHR(
15101           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), &swapchainImageCount, nullptr ) );
15102         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && swapchainImageCount )
15103         {
15104           swapchainImages.resize( swapchainImageCount );
15105           result =
15106             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSwapchainImagesKHR( static_cast<VkDevice>( m_device ),
15107                                                                                                  static_cast<VkSwapchainKHR>( m_swapchain ),
15108                                                                                                  &swapchainImageCount,
15109                                                                                                  reinterpret_cast<VkImage *>( swapchainImages.data() ) ) );
15110         }
15111       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15112       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getImages" );
15113       VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() );
15114       if ( swapchainImageCount < swapchainImages.size() )
15115       {
15116         swapchainImages.resize( swapchainImageCount );
15117       }
15118       return swapchainImages;
15119     }
15120 
15121     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) const15122       SwapchainKHR::acquireNextImage( uint64_t timeout, VULKAN_HPP_NAMESPACE::Semaphore semaphore, VULKAN_HPP_NAMESPACE::Fence fence ) const
15123     {
15124       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImageKHR && "Function <vkAcquireNextImageKHR> requires <VK_KHR_swapchain>" );
15125 
15126       uint32_t                     imageIndex;
15127       VULKAN_HPP_NAMESPACE::Result result =
15128         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireNextImageKHR( static_cast<VkDevice>( m_device ),
15129                                                                                            static_cast<VkSwapchainKHR>( m_swapchain ),
15130                                                                                            timeout,
15131                                                                                            static_cast<VkSemaphore>( semaphore ),
15132                                                                                            static_cast<VkFence>( fence ),
15133                                                                                            &imageIndex ) );
15134       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
15135                                                  VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::acquireNextImage",
15136                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
15137                                                    VULKAN_HPP_NAMESPACE::Result::eTimeout,
15138                                                    VULKAN_HPP_NAMESPACE::Result::eNotReady,
15139                                                    VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } );
15140 
15141       return std::make_pair( result, std::move( imageIndex ) );
15142     }
15143 
presentKHR(const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo) const15144     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Queue::presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR & presentInfo ) const
15145     {
15146       VULKAN_HPP_ASSERT( getDispatcher()->vkQueuePresentKHR && "Function <vkQueuePresentKHR> requires <VK_KHR_swapchain>" );
15147 
15148       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15149         getDispatcher()->vkQueuePresentKHR( static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkPresentInfoKHR *>( &presentInfo ) ) );
15150       VULKAN_HPP_NAMESPACE::detail::resultCheck(
15151         result, VULKAN_HPP_NAMESPACE_STRING "::Queue::presentKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } );
15152 
15153       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
15154     }
15155 
getGroupPresentCapabilitiesKHR() const15156     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR Device::getGroupPresentCapabilitiesKHR() const
15157     {
15158       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR &&
15159                          "Function <vkGetDeviceGroupPresentCapabilitiesKHR> requires <VK_KHR_device_group> or <VK_KHR_swapchain>" );
15160 
15161       VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities;
15162       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR(
15163         static_cast<VkDevice>( m_device ), reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR *>( &deviceGroupPresentCapabilities ) ) );
15164       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" );
15165 
15166       return deviceGroupPresentCapabilities;
15167     }
15168 
15169     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
getGroupSurfacePresentModesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const15170                                            Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
15171     {
15172       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR &&
15173                          "Function <vkGetDeviceGroupSurfacePresentModesKHR> requires <VK_KHR_device_group> or <VK_KHR_swapchain>" );
15174 
15175       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes;
15176       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR(
15177         static_cast<VkDevice>( m_device ), static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR *>( &modes ) ) );
15178       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" );
15179 
15180       return modes;
15181     }
15182 
15183     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::Rect2D>
getPresentRectanglesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const15184                                            PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
15185     {
15186       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR &&
15187                          "Function <vkGetPhysicalDevicePresentRectanglesKHR> requires <VK_KHR_device_group> or <VK_KHR_swapchain>" );
15188 
15189       std::vector<VULKAN_HPP_NAMESPACE::Rect2D> rects;
15190       uint32_t                                  rectCount;
15191       VULKAN_HPP_NAMESPACE::Result              result;
15192       do
15193       {
15194         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR(
15195           static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
15196         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && rectCount )
15197         {
15198           rects.resize( rectCount );
15199           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15200             getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15201                                                                       static_cast<VkSurfaceKHR>( surface ),
15202                                                                       &rectCount,
15203                                                                       reinterpret_cast<VkRect2D *>( rects.data() ) ) );
15204         }
15205       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15206       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" );
15207       VULKAN_HPP_ASSERT( rectCount <= rects.size() );
15208       if ( rectCount < rects.size() )
15209       {
15210         rects.resize( rectCount );
15211       }
15212       return rects;
15213     }
15214 
15215     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
acquireNextImage2KHR(const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo) const15216                                            Device::acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR & acquireInfo ) const
15217     {
15218       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImage2KHR && "Function <vkAcquireNextImage2KHR> requires <VK_KHR_device_group> or <VK_KHR_swapchain>" );
15219 
15220       uint32_t                     imageIndex;
15221       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireNextImage2KHR(
15222         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAcquireNextImageInfoKHR *>( &acquireInfo ), &imageIndex ) );
15223       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
15224                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImage2KHR",
15225                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
15226                                                    VULKAN_HPP_NAMESPACE::Result::eTimeout,
15227                                                    VULKAN_HPP_NAMESPACE::Result::eNotReady,
15228                                                    VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } );
15229 
15230       return std::make_pair( result, std::move( imageIndex ) );
15231     }
15232 
15233     //=== VK_KHR_display ===
15234 
getDisplayPropertiesKHR() const15235     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR> PhysicalDevice::getDisplayPropertiesKHR() const
15236     {
15237       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR &&
15238                          "Function <vkGetPhysicalDeviceDisplayPropertiesKHR> requires <VK_KHR_display>" );
15239 
15240       std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR> properties;
15241       uint32_t                                                propertyCount;
15242       VULKAN_HPP_NAMESPACE::Result                            result;
15243       do
15244       {
15245         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15246           getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
15247         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
15248         {
15249           properties.resize( propertyCount );
15250           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR(
15251             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR *>( properties.data() ) ) );
15252         }
15253       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15254       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" );
15255       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
15256       if ( propertyCount < properties.size() )
15257       {
15258         properties.resize( propertyCount );
15259       }
15260       return properties;
15261     }
15262 
getDisplayPlanePropertiesKHR() const15263     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR> PhysicalDevice::getDisplayPlanePropertiesKHR() const
15264     {
15265       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR &&
15266                          "Function <vkGetPhysicalDeviceDisplayPlanePropertiesKHR> requires <VK_KHR_display>" );
15267 
15268       std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR> properties;
15269       uint32_t                                                     propertyCount;
15270       VULKAN_HPP_NAMESPACE::Result                                 result;
15271       do
15272       {
15273         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15274           getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
15275         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
15276         {
15277           properties.resize( propertyCount );
15278           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
15279             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR *>( properties.data() ) ) );
15280         }
15281       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15282       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" );
15283       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
15284       if ( propertyCount < properties.size() )
15285       {
15286         properties.resize( propertyCount );
15287       }
15288       return properties;
15289     }
15290 
15291     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
15292       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>>::Type
getDisplayPlaneSupportedDisplaysKHR(uint32_t planeIndex) const15293       PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
15294     {
15295       std::vector<VULKAN_HPP_NAMESPACE::DisplayKHR> displays;
15296       uint32_t                                      displayCount;
15297       VULKAN_HPP_NAMESPACE::Result                  result;
15298       do
15299       {
15300         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15301           getDispatcher()->vkGetDisplayPlaneSupportedDisplaysKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), planeIndex, &displayCount, nullptr ) );
15302         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && displayCount )
15303         {
15304           displays.resize( displayCount );
15305           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayPlaneSupportedDisplaysKHR(
15306             static_cast<VkPhysicalDevice>( m_physicalDevice ), planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR *>( displays.data() ) ) );
15307         }
15308       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15309       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::eIncomplete ) )
15310       {
15311 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15312         return VULKAN_HPP_UNEXPECTED( result );
15313 #  else
15314         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
15315 #  endif
15316       }
15317 
15318       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR> displaysRAII;
15319       displaysRAII.reserve( displays.size() );
15320       for ( auto & display : displays )
15321       {
15322         displaysRAII.emplace_back( *this, *reinterpret_cast<VkDisplayKHR *>( &display ) );
15323       }
15324       return displaysRAII;
15325     }
15326 
getModeProperties() const15327     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR> DisplayKHR::getModeProperties() const
15328     {
15329       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModePropertiesKHR && "Function <vkGetDisplayModePropertiesKHR> requires <VK_KHR_display>" );
15330 
15331       std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR> properties;
15332       uint32_t                                                    propertyCount;
15333       VULKAN_HPP_NAMESPACE::Result                                result;
15334       do
15335       {
15336         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayModePropertiesKHR(
15337           static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_display ), &propertyCount, nullptr ) );
15338         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
15339         {
15340           properties.resize( propertyCount );
15341           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15342             getDispatcher()->vkGetDisplayModePropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15343                                                             static_cast<VkDisplayKHR>( m_display ),
15344                                                             &propertyCount,
15345                                                             reinterpret_cast<VkDisplayModePropertiesKHR *>( properties.data() ) ) );
15346         }
15347       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15348       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::getModeProperties" );
15349       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
15350       if ( propertyCount < properties.size() )
15351       {
15352         properties.resize( propertyCount );
15353       }
15354       return properties;
15355     }
15356 
15357     VULKAN_HPP_NODISCARD
15358       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayModeKHR>::Type
createMode(VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15359                         DisplayKHR::createMode( VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const &                          createInfo,
15360                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
15361     {
15362       VULKAN_HPP_NAMESPACE::DisplayModeKHR mode;
15363       VULKAN_HPP_NAMESPACE::Result         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDisplayModeKHR(
15364         static_cast<VkPhysicalDevice>( m_physicalDevice ),
15365         static_cast<VkDisplayKHR>( m_display ),
15366         reinterpret_cast<const VkDisplayModeCreateInfoKHR *>( &createInfo ),
15367         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15368         reinterpret_cast<VkDisplayModeKHR *>( &mode ) ) );
15369       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15370       {
15371 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15372         return VULKAN_HPP_UNEXPECTED( result );
15373 #  else
15374         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "DisplayKHR::createMode" );
15375 #  endif
15376       }
15377 
15378       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayModeKHR( *this, *reinterpret_cast<VkDisplayModeKHR *>( &mode ) );
15379     }
15380 
15381     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR
getDisplayPlaneCapabilities(uint32_t planeIndex) const15382                                            DisplayModeKHR::getDisplayPlaneCapabilities( uint32_t planeIndex ) const
15383     {
15384       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR && "Function <vkGetDisplayPlaneCapabilitiesKHR> requires <VK_KHR_display>" );
15385 
15386       VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities;
15387       VULKAN_HPP_NAMESPACE::Result                      result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15388         getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15389                                                            static_cast<VkDisplayModeKHR>( m_displayModeKHR ),
15390                                                            planeIndex,
15391                                                            reinterpret_cast<VkDisplayPlaneCapabilitiesKHR *>( &capabilities ) ) );
15392       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayModeKHR::getDisplayPlaneCapabilities" );
15393 
15394       return capabilities;
15395     }
15396 
15397     VULKAN_HPP_NODISCARD
15398       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createDisplayPlaneSurfaceKHR(VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15399                         Instance::createDisplayPlaneSurfaceKHR( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const &                       createInfo,
15400                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15401       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15402     {
15403       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
15404       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDisplayPlaneSurfaceKHR(
15405         static_cast<VkInstance>( m_instance ),
15406         reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR *>( &createInfo ),
15407         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15408         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
15409       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15410       {
15411 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15412         return VULKAN_HPP_UNEXPECTED( result );
15413 #  else
15414         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createDisplayPlaneSurfaceKHR" );
15415 #  endif
15416       }
15417 
15418       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
15419     }
15420 
15421     //=== VK_KHR_display_swapchain ===
15422 
15423     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
15424       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>>::Type
createSharedSwapchainsKHR(VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15425       Device::createSharedSwapchainsKHR( VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR> const & createInfos,
15426                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>        allocator ) const
15427     {
15428       std::vector<VULKAN_HPP_NAMESPACE::SwapchainKHR> swapchains( createInfos.size() );
15429       VULKAN_HPP_NAMESPACE::Result                    result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSharedSwapchainsKHR(
15430         static_cast<VkDevice>( m_device ),
15431         createInfos.size(),
15432         reinterpret_cast<const VkSwapchainCreateInfoKHR *>( createInfos.data() ),
15433         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15434         reinterpret_cast<VkSwapchainKHR *>( swapchains.data() ) ) );
15435       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15436       {
15437 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15438         return VULKAN_HPP_UNEXPECTED( result );
15439 #  else
15440         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createSharedSwapchainsKHR" );
15441 #  endif
15442       }
15443 
15444       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR> swapchainsRAII;
15445       swapchainsRAII.reserve( swapchains.size() );
15446       for ( auto & swapchain : swapchains )
15447       {
15448         swapchainsRAII.emplace_back( *this, *reinterpret_cast<VkSwapchainKHR *>( &swapchain ), allocator );
15449       }
15450       return swapchainsRAII;
15451     }
15452 
15453     VULKAN_HPP_NODISCARD
15454       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>::Type
createSharedSwapchainKHR(VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15455                         Device::createSharedSwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const &                            createInfo,
15456                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15457       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15458     {
15459       VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain;
15460       VULKAN_HPP_NAMESPACE::Result       result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSharedSwapchainsKHR(
15461         static_cast<VkDevice>( m_device ),
15462         1,
15463         reinterpret_cast<const VkSwapchainCreateInfoKHR *>( &createInfo ),
15464         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15465         reinterpret_cast<VkSwapchainKHR *>( &swapchain ) ) );
15466       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15467       {
15468 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15469         return VULKAN_HPP_UNEXPECTED( result );
15470 #  else
15471         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createSharedSwapchainKHR" );
15472 #  endif
15473       }
15474 
15475       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR( *this, *reinterpret_cast<VkSwapchainKHR *>( &swapchain ), allocator );
15476     }
15477 
15478 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
15479     //=== VK_KHR_xlib_surface ===
15480 
15481     VULKAN_HPP_NODISCARD
15482       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createXlibSurfaceKHR(VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15483                         Instance::createXlibSurfaceKHR( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const &                          createInfo,
15484                                       VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15485       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15486     {
15487       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
15488       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateXlibSurfaceKHR(
15489         static_cast<VkInstance>( m_instance ),
15490         reinterpret_cast<const VkXlibSurfaceCreateInfoKHR *>( &createInfo ),
15491         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15492         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
15493       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15494       {
15495 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15496         return VULKAN_HPP_UNEXPECTED( result );
15497 #    else
15498         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createXlibSurfaceKHR" );
15499 #    endif
15500       }
15501 
15502       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
15503     }
15504 
15505     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getXlibPresentationSupportKHR(uint32_t queueFamilyIndex,Display & dpy,VisualID visualID) const15506       PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT
15507     {
15508       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR &&
15509                          "Function <vkGetPhysicalDeviceXlibPresentationSupportKHR> requires <VK_KHR_xlib_surface>" );
15510 
15511       VkBool32 result =
15512         getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &dpy, visualID );
15513 
15514       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( result );
15515     }
15516 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
15517 
15518 #  if defined( VK_USE_PLATFORM_XCB_KHR )
15519     //=== VK_KHR_xcb_surface ===
15520 
15521     VULKAN_HPP_NODISCARD
15522       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createXcbSurfaceKHR(VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15523                         Instance::createXcbSurfaceKHR( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const &                           createInfo,
15524                                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15525       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15526     {
15527       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
15528       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateXcbSurfaceKHR(
15529         static_cast<VkInstance>( m_instance ),
15530         reinterpret_cast<const VkXcbSurfaceCreateInfoKHR *>( &createInfo ),
15531         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15532         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
15533       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15534       {
15535 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15536         return VULKAN_HPP_UNEXPECTED( result );
15537 #    else
15538         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createXcbSurfaceKHR" );
15539 #    endif
15540       }
15541 
15542       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
15543     }
15544 
getXcbPresentationSupportKHR(uint32_t queueFamilyIndex,xcb_connection_t & connection,xcb_visualid_t visual_id) const15545     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 PhysicalDevice::getXcbPresentationSupportKHR(
15546       uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT
15547     {
15548       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR &&
15549                          "Function <vkGetPhysicalDeviceXcbPresentationSupportKHR> requires <VK_KHR_xcb_surface>" );
15550 
15551       VkBool32 result = getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR(
15552         static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &connection, visual_id );
15553 
15554       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( result );
15555     }
15556 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
15557 
15558 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
15559     //=== VK_KHR_wayland_surface ===
15560 
15561     VULKAN_HPP_NODISCARD
15562       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createWaylandSurfaceKHR(VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15563                         Instance::createWaylandSurfaceKHR( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const &                       createInfo,
15564                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15565       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15566     {
15567       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
15568       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateWaylandSurfaceKHR(
15569         static_cast<VkInstance>( m_instance ),
15570         reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR *>( &createInfo ),
15571         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15572         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
15573       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15574       {
15575 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15576         return VULKAN_HPP_UNEXPECTED( result );
15577 #    else
15578         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createWaylandSurfaceKHR" );
15579 #    endif
15580       }
15581 
15582       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
15583     }
15584 
15585     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getWaylandPresentationSupportKHR(uint32_t queueFamilyIndex,struct wl_display & display) const15586       PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const VULKAN_HPP_NOEXCEPT
15587     {
15588       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR &&
15589                          "Function <vkGetPhysicalDeviceWaylandPresentationSupportKHR> requires <VK_KHR_wayland_surface>" );
15590 
15591       VkBool32 result =
15592         getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &display );
15593 
15594       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( result );
15595     }
15596 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
15597 
15598 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
15599     //=== VK_KHR_android_surface ===
15600 
15601     VULKAN_HPP_NODISCARD
15602       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createAndroidSurfaceKHR(VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15603                         Instance::createAndroidSurfaceKHR( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const &                       createInfo,
15604                                          VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15605       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15606     {
15607       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
15608       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAndroidSurfaceKHR(
15609         static_cast<VkInstance>( m_instance ),
15610         reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR *>( &createInfo ),
15611         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15612         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
15613       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15614       {
15615 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15616         return VULKAN_HPP_UNEXPECTED( result );
15617 #    else
15618         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createAndroidSurfaceKHR" );
15619 #    endif
15620       }
15621 
15622       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
15623     }
15624 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
15625 
15626 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
15627     //=== VK_KHR_win32_surface ===
15628 
15629     VULKAN_HPP_NODISCARD
15630       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createWin32SurfaceKHR(VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15631                         Instance::createWin32SurfaceKHR( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const &                         createInfo,
15632                                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15633       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15634     {
15635       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
15636       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateWin32SurfaceKHR(
15637         static_cast<VkInstance>( m_instance ),
15638         reinterpret_cast<const VkWin32SurfaceCreateInfoKHR *>( &createInfo ),
15639         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15640         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
15641       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15642       {
15643 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15644         return VULKAN_HPP_UNEXPECTED( result );
15645 #    else
15646         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createWin32SurfaceKHR" );
15647 #    endif
15648       }
15649 
15650       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
15651     }
15652 
15653     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getWin32PresentationSupportKHR(uint32_t queueFamilyIndex) const15654                                            PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT
15655     {
15656       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR &&
15657                          "Function <vkGetPhysicalDeviceWin32PresentationSupportKHR> requires <VK_KHR_win32_surface>" );
15658 
15659       VkBool32 result = getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex );
15660 
15661       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( result );
15662     }
15663 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
15664 
15665     //=== VK_EXT_debug_report ===
15666 
15667     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
15668       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT>::Type
createDebugReportCallbackEXT(VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15669       Instance::createDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const &                  createInfo,
15670                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15671       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15672     {
15673       VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback;
15674       VULKAN_HPP_NAMESPACE::Result                 result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDebugReportCallbackEXT(
15675         static_cast<VkInstance>( m_instance ),
15676         reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>( &createInfo ),
15677         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15678         reinterpret_cast<VkDebugReportCallbackEXT *>( &callback ) ) );
15679       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15680       {
15681 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15682         return VULKAN_HPP_UNEXPECTED( result );
15683 #  else
15684         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createDebugReportCallbackEXT" );
15685 #  endif
15686       }
15687 
15688       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugReportCallbackEXT(
15689         *this, *reinterpret_cast<VkDebugReportCallbackEXT *>( &callback ), allocator );
15690     }
15691 
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) const15692     VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT      flags,
15693                                                             VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_,
15694                                                             uint64_t                                       object,
15695                                                             size_t                                         location,
15696                                                             int32_t                                        messageCode,
15697                                                             const std::string &                            layerPrefix,
15698                                                             const std::string &                            message ) const VULKAN_HPP_NOEXCEPT
15699     {
15700       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugReportMessageEXT && "Function <vkDebugReportMessageEXT> requires <VK_EXT_debug_report>" );
15701 
15702       getDispatcher()->vkDebugReportMessageEXT( static_cast<VkInstance>( m_instance ),
15703                                                 static_cast<VkDebugReportFlagsEXT>( flags ),
15704                                                 static_cast<VkDebugReportObjectTypeEXT>( objectType_ ),
15705                                                 object,
15706                                                 location,
15707                                                 messageCode,
15708                                                 layerPrefix.c_str(),
15709                                                 message.c_str() );
15710     }
15711 
15712     //=== VK_EXT_debug_marker ===
15713 
debugMarkerSetObjectTagEXT(const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo) const15714     VULKAN_HPP_INLINE void Device::debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT & tagInfo ) const
15715     {
15716       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectTagEXT && "Function <vkDebugMarkerSetObjectTagEXT> requires <VK_EXT_debug_marker>" );
15717 
15718       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDebugMarkerSetObjectTagEXT(
15719         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT *>( &tagInfo ) ) );
15720       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" );
15721     }
15722 
debugMarkerSetObjectNameEXT(const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo) const15723     VULKAN_HPP_INLINE void Device::debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT & nameInfo ) const
15724     {
15725       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectNameEXT && "Function <vkDebugMarkerSetObjectNameEXT> requires <VK_EXT_debug_marker>" );
15726 
15727       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDebugMarkerSetObjectNameEXT(
15728         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT *>( &nameInfo ) ) );
15729       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" );
15730     }
15731 
debugMarkerBeginEXT(const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo) const15732     VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT
15733     {
15734       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerBeginEXT && "Function <vkCmdDebugMarkerBeginEXT> requires <VK_EXT_debug_marker>" );
15735 
15736       getDispatcher()->vkCmdDebugMarkerBeginEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15737                                                  reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( &markerInfo ) );
15738     }
15739 
debugMarkerEndEXT() const15740     VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT
15741     {
15742       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerEndEXT && "Function <vkCmdDebugMarkerEndEXT> requires <VK_EXT_debug_marker>" );
15743 
15744       getDispatcher()->vkCmdDebugMarkerEndEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
15745     }
15746 
debugMarkerInsertEXT(const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo) const15747     VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT
15748     {
15749       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerInsertEXT && "Function <vkCmdDebugMarkerInsertEXT> requires <VK_EXT_debug_marker>" );
15750 
15751       getDispatcher()->vkCmdDebugMarkerInsertEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15752                                                   reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( &markerInfo ) );
15753     }
15754 
15755     //=== VK_KHR_video_queue ===
15756 
15757     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR
getVideoCapabilitiesKHR(const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR & videoProfile) const15758                                            PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR & videoProfile ) const
15759     {
15760       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR &&
15761                          "Function <vkGetPhysicalDeviceVideoCapabilitiesKHR> requires <VK_KHR_video_queue>" );
15762 
15763       VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR capabilities;
15764       VULKAN_HPP_NAMESPACE::Result               result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15765         getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15766                                                                   reinterpret_cast<const VkVideoProfileInfoKHR *>( &videoProfile ),
15767                                                                   reinterpret_cast<VkVideoCapabilitiesKHR *>( &capabilities ) ) );
15768       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" );
15769 
15770       return capabilities;
15771     }
15772 
15773     template <typename X, typename Y, typename... Z>
15774     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getVideoCapabilitiesKHR(const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR & videoProfile) const15775                                            PhysicalDevice::getVideoCapabilitiesKHR( const VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR & videoProfile ) const
15776     {
15777       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR &&
15778                          "Function <vkGetPhysicalDeviceVideoCapabilitiesKHR> requires <VK_KHR_video_queue>" );
15779 
15780       StructureChain<X, Y, Z...>                   structureChain;
15781       VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR & capabilities = structureChain.template get<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR>();
15782       VULKAN_HPP_NAMESPACE::Result                 result       = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15783         getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15784                                                                   reinterpret_cast<const VkVideoProfileInfoKHR *>( &videoProfile ),
15785                                                                   reinterpret_cast<VkVideoCapabilitiesKHR *>( &capabilities ) ) );
15786       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" );
15787 
15788       return structureChain;
15789     }
15790 
15791     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR>
getVideoFormatPropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo) const15792       PhysicalDevice::getVideoFormatPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const
15793     {
15794       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR &&
15795                          "Function <vkGetPhysicalDeviceVideoFormatPropertiesKHR> requires <VK_KHR_video_queue>" );
15796 
15797       std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR> videoFormatProperties;
15798       uint32_t                                                    videoFormatPropertyCount;
15799       VULKAN_HPP_NAMESPACE::Result                                result;
15800       do
15801       {
15802         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15803           getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15804                                                                         reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
15805                                                                         &videoFormatPropertyCount,
15806                                                                         nullptr ) );
15807         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && videoFormatPropertyCount )
15808         {
15809           videoFormatProperties.resize( videoFormatPropertyCount );
15810           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15811             getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
15812                                                                           reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
15813                                                                           &videoFormatPropertyCount,
15814                                                                           reinterpret_cast<VkVideoFormatPropertiesKHR *>( videoFormatProperties.data() ) ) );
15815         }
15816       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15817       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" );
15818       VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() );
15819       if ( videoFormatPropertyCount < videoFormatProperties.size() )
15820       {
15821         videoFormatProperties.resize( videoFormatPropertyCount );
15822       }
15823       return videoFormatProperties;
15824     }
15825 
15826     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
15827       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionKHR>::Type
createVideoSessionKHR(VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15828       Device::createVideoSessionKHR( VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const &                         createInfo,
15829                                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15830       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15831     {
15832       VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession;
15833       VULKAN_HPP_NAMESPACE::Result          result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateVideoSessionKHR(
15834         static_cast<VkDevice>( m_device ),
15835         reinterpret_cast<const VkVideoSessionCreateInfoKHR *>( &createInfo ),
15836         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15837         reinterpret_cast<VkVideoSessionKHR *>( &videoSession ) ) );
15838       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15839       {
15840 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15841         return VULKAN_HPP_UNEXPECTED( result );
15842 #  else
15843         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createVideoSessionKHR" );
15844 #  endif
15845       }
15846 
15847       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionKHR( *this, *reinterpret_cast<VkVideoSessionKHR *>( &videoSession ), allocator );
15848     }
15849 
getMemoryRequirements() const15850     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR> VideoSessionKHR::getMemoryRequirements() const
15851     {
15852       VULKAN_HPP_ASSERT( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR &&
15853                          "Function <vkGetVideoSessionMemoryRequirementsKHR> requires <VK_KHR_video_queue>" );
15854 
15855       std::vector<VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR> memoryRequirements;
15856       uint32_t                                                             memoryRequirementsCount;
15857       VULKAN_HPP_NAMESPACE::Result                                         result;
15858       do
15859       {
15860         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR(
15861           static_cast<VkDevice>( m_device ), static_cast<VkVideoSessionKHR>( m_videoSession ), &memoryRequirementsCount, nullptr ) );
15862         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && memoryRequirementsCount )
15863         {
15864           memoryRequirements.resize( memoryRequirementsCount );
15865           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15866             getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
15867                                                                      static_cast<VkVideoSessionKHR>( m_videoSession ),
15868                                                                      &memoryRequirementsCount,
15869                                                                      reinterpret_cast<VkVideoSessionMemoryRequirementsKHR *>( memoryRequirements.data() ) ) );
15870         }
15871       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15872 
15873       VULKAN_HPP_ASSERT( memoryRequirementsCount <= memoryRequirements.size() );
15874       if ( memoryRequirementsCount < memoryRequirements.size() )
15875       {
15876         memoryRequirements.resize( memoryRequirementsCount );
15877       }
15878       return memoryRequirements;
15879     }
15880 
bindMemory(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR> const & bindSessionMemoryInfos) const15881     VULKAN_HPP_INLINE void VideoSessionKHR::bindMemory(
15882       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR> const & bindSessionMemoryInfos ) const
15883     {
15884       VULKAN_HPP_ASSERT( getDispatcher()->vkBindVideoSessionMemoryKHR && "Function <vkBindVideoSessionMemoryKHR> requires <VK_KHR_video_queue>" );
15885 
15886       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15887         getDispatcher()->vkBindVideoSessionMemoryKHR( static_cast<VkDevice>( m_device ),
15888                                                       static_cast<VkVideoSessionKHR>( m_videoSession ),
15889                                                       bindSessionMemoryInfos.size(),
15890                                                       reinterpret_cast<const VkBindVideoSessionMemoryInfoKHR *>( bindSessionMemoryInfos.data() ) ) );
15891       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionKHR::bindMemory" );
15892     }
15893 
15894     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
15895       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionParametersKHR>::Type
createVideoSessionParametersKHR(VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const15896       Device::createVideoSessionParametersKHR( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const &               createInfo,
15897                                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
15898       VULKAN_HPP_RAII_CREATE_NOEXCEPT
15899     {
15900       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters;
15901       VULKAN_HPP_NAMESPACE::Result                    result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateVideoSessionParametersKHR(
15902         static_cast<VkDevice>( m_device ),
15903         reinterpret_cast<const VkVideoSessionParametersCreateInfoKHR *>( &createInfo ),
15904         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
15905         reinterpret_cast<VkVideoSessionParametersKHR *>( &videoSessionParameters ) ) );
15906       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15907       {
15908 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
15909         return VULKAN_HPP_UNEXPECTED( result );
15910 #  else
15911         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createVideoSessionParametersKHR" );
15912 #  endif
15913       }
15914 
15915       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::VideoSessionParametersKHR(
15916         *this, *reinterpret_cast<VkVideoSessionParametersKHR *>( &videoSessionParameters ), allocator );
15917     }
15918 
update(const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo) const15919     VULKAN_HPP_INLINE void VideoSessionParametersKHR::update( const VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR & updateInfo ) const
15920     {
15921       VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateVideoSessionParametersKHR && "Function <vkUpdateVideoSessionParametersKHR> requires <VK_KHR_video_queue>" );
15922 
15923       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15924         getDispatcher()->vkUpdateVideoSessionParametersKHR( static_cast<VkDevice>( m_device ),
15925                                                             static_cast<VkVideoSessionParametersKHR>( m_videoSessionParameters ),
15926                                                             reinterpret_cast<const VkVideoSessionParametersUpdateInfoKHR *>( &updateInfo ) ) );
15927       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionParametersKHR::update" );
15928     }
15929 
beginVideoCodingKHR(const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo) const15930     VULKAN_HPP_INLINE void CommandBuffer::beginVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR & beginInfo ) const VULKAN_HPP_NOEXCEPT
15931     {
15932       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginVideoCodingKHR && "Function <vkCmdBeginVideoCodingKHR> requires <VK_KHR_video_queue>" );
15933 
15934       getDispatcher()->vkCmdBeginVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15935                                                  reinterpret_cast<const VkVideoBeginCodingInfoKHR *>( &beginInfo ) );
15936     }
15937 
endVideoCodingKHR(const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo) const15938     VULKAN_HPP_INLINE void CommandBuffer::endVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR & endCodingInfo ) const VULKAN_HPP_NOEXCEPT
15939     {
15940       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndVideoCodingKHR && "Function <vkCmdEndVideoCodingKHR> requires <VK_KHR_video_queue>" );
15941 
15942       getDispatcher()->vkCmdEndVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15943                                                reinterpret_cast<const VkVideoEndCodingInfoKHR *>( &endCodingInfo ) );
15944     }
15945 
15946     VULKAN_HPP_INLINE void
controlVideoCodingKHR(const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo) const15947       CommandBuffer::controlVideoCodingKHR( const VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR & codingControlInfo ) const VULKAN_HPP_NOEXCEPT
15948     {
15949       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdControlVideoCodingKHR && "Function <vkCmdControlVideoCodingKHR> requires <VK_KHR_video_queue>" );
15950 
15951       getDispatcher()->vkCmdControlVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15952                                                    reinterpret_cast<const VkVideoCodingControlInfoKHR *>( &codingControlInfo ) );
15953     }
15954 
15955     //=== VK_KHR_video_decode_queue ===
15956 
decodeVideoKHR(const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & decodeInfo) const15957     VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR & decodeInfo ) const VULKAN_HPP_NOEXCEPT
15958     {
15959       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecodeVideoKHR && "Function <vkCmdDecodeVideoKHR> requires <VK_KHR_video_decode_queue>" );
15960 
15961       getDispatcher()->vkCmdDecodeVideoKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkVideoDecodeInfoKHR *>( &decodeInfo ) );
15962     }
15963 
15964     //=== VK_EXT_transform_feedback ===
15965 
15966     VULKAN_HPP_INLINE void
bindTransformFeedbackBuffersEXT(uint32_t firstBinding,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes) const15967       CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t                                                                         firstBinding,
15968                                                       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
15969                                                       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
15970                                                       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes ) const
15971     {
15972       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT &&
15973                          "Function <vkCmdBindTransformFeedbackBuffersEXT> requires <VK_EXT_transform_feedback>" );
15974 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
15975       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
15976       VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
15977 #  else
15978       if ( buffers.size() != offsets.size() )
15979       {
15980         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" );
15981       }
15982       if ( !sizes.empty() && buffers.size() != sizes.size() )
15983       {
15984         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" );
15985       }
15986 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
15987 
15988       getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15989                                                              firstBinding,
15990                                                              buffers.size(),
15991                                                              reinterpret_cast<const VkBuffer *>( buffers.data() ),
15992                                                              reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
15993                                                              reinterpret_cast<const VkDeviceSize *>( sizes.data() ) );
15994     }
15995 
15996     VULKAN_HPP_INLINE void
beginTransformFeedbackEXT(uint32_t firstCounterBuffer,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets) const15997       CommandBuffer::beginTransformFeedbackEXT( uint32_t                                                                         firstCounterBuffer,
15998                                                 VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     counterBuffers,
15999                                                 VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets ) const
16000     {
16001       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginTransformFeedbackEXT && "Function <vkCmdBeginTransformFeedbackEXT> requires <VK_EXT_transform_feedback>" );
16002 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
16003       VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() );
16004 #  else
16005       if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() )
16006       {
16007         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
16008       }
16009 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
16010 
16011       getDispatcher()->vkCmdBeginTransformFeedbackEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16012                                                        firstCounterBuffer,
16013                                                        counterBuffers.size(),
16014                                                        reinterpret_cast<const VkBuffer *>( counterBuffers.data() ),
16015                                                        reinterpret_cast<const VkDeviceSize *>( counterBufferOffsets.data() ) );
16016     }
16017 
16018     VULKAN_HPP_INLINE void
endTransformFeedbackEXT(uint32_t firstCounterBuffer,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets) const16019       CommandBuffer::endTransformFeedbackEXT( uint32_t                                                                         firstCounterBuffer,
16020                                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     counterBuffers,
16021                                               VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets ) const
16022     {
16023       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndTransformFeedbackEXT && "Function <vkCmdEndTransformFeedbackEXT> requires <VK_EXT_transform_feedback>" );
16024 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
16025       VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() );
16026 #  else
16027       if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() )
16028       {
16029         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
16030       }
16031 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
16032 
16033       getDispatcher()->vkCmdEndTransformFeedbackEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16034                                                      firstCounterBuffer,
16035                                                      counterBuffers.size(),
16036                                                      reinterpret_cast<const VkBuffer *>( counterBuffers.data() ),
16037                                                      reinterpret_cast<const VkDeviceSize *>( counterBufferOffsets.data() ) );
16038     }
16039 
beginQueryIndexedEXT(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,VULKAN_HPP_NAMESPACE::QueryControlFlags flags,uint32_t index) const16040     VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
16041                                                                 uint32_t                                query,
16042                                                                 VULKAN_HPP_NAMESPACE::QueryControlFlags flags,
16043                                                                 uint32_t                                index ) const VULKAN_HPP_NOEXCEPT
16044     {
16045       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQueryIndexedEXT && "Function <vkCmdBeginQueryIndexedEXT> requires <VK_EXT_transform_feedback>" );
16046 
16047       getDispatcher()->vkCmdBeginQueryIndexedEXT(
16048         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ), index );
16049     }
16050 
16051     VULKAN_HPP_INLINE void
endQueryIndexedEXT(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,uint32_t index) const16052       CommandBuffer::endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, uint32_t index ) const VULKAN_HPP_NOEXCEPT
16053     {
16054       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQueryIndexedEXT && "Function <vkCmdEndQueryIndexedEXT> requires <VK_EXT_transform_feedback>" );
16055 
16056       getDispatcher()->vkCmdEndQueryIndexedEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query, index );
16057     }
16058 
drawIndirectByteCountEXT(uint32_t instanceCount,uint32_t firstInstance,VULKAN_HPP_NAMESPACE::Buffer counterBuffer,VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride) const16059     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t                         instanceCount,
16060                                                                     uint32_t                         firstInstance,
16061                                                                     VULKAN_HPP_NAMESPACE::Buffer     counterBuffer,
16062                                                                     VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,
16063                                                                     uint32_t                         counterOffset,
16064                                                                     uint32_t                         vertexStride ) const VULKAN_HPP_NOEXCEPT
16065     {
16066       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectByteCountEXT && "Function <vkCmdDrawIndirectByteCountEXT> requires <VK_EXT_transform_feedback>" );
16067 
16068       getDispatcher()->vkCmdDrawIndirectByteCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16069                                                       instanceCount,
16070                                                       firstInstance,
16071                                                       static_cast<VkBuffer>( counterBuffer ),
16072                                                       static_cast<VkDeviceSize>( counterBufferOffset ),
16073                                                       counterOffset,
16074                                                       vertexStride );
16075     }
16076 
16077     //=== VK_NVX_binary_import ===
16078 
16079     VULKAN_HPP_NODISCARD
16080       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuModuleNVX>::Type
createCuModuleNVX(VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const16081                         Device::createCuModuleNVX( VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const &                             createInfo,
16082                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
16083       VULKAN_HPP_RAII_CREATE_NOEXCEPT
16084     {
16085       VULKAN_HPP_NAMESPACE::CuModuleNVX module;
16086       VULKAN_HPP_NAMESPACE::Result      result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateCuModuleNVX(
16087         static_cast<VkDevice>( m_device ),
16088         reinterpret_cast<const VkCuModuleCreateInfoNVX *>( &createInfo ),
16089         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
16090         reinterpret_cast<VkCuModuleNVX *>( &module ) ) );
16091       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16092       {
16093 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
16094         return VULKAN_HPP_UNEXPECTED( result );
16095 #  else
16096         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createCuModuleNVX" );
16097 #  endif
16098       }
16099 
16100       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuModuleNVX( *this, *reinterpret_cast<VkCuModuleNVX *>( &module ), allocator );
16101     }
16102 
16103     VULKAN_HPP_NODISCARD
16104       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuFunctionNVX>::Type
createCuFunctionNVX(VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const16105                         Device::createCuFunctionNVX( VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const &                           createInfo,
16106                                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
16107       VULKAN_HPP_RAII_CREATE_NOEXCEPT
16108     {
16109       VULKAN_HPP_NAMESPACE::CuFunctionNVX function;
16110       VULKAN_HPP_NAMESPACE::Result        result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateCuFunctionNVX(
16111         static_cast<VkDevice>( m_device ),
16112         reinterpret_cast<const VkCuFunctionCreateInfoNVX *>( &createInfo ),
16113         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
16114         reinterpret_cast<VkCuFunctionNVX *>( &function ) ) );
16115       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16116       {
16117 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
16118         return VULKAN_HPP_UNEXPECTED( result );
16119 #  else
16120         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createCuFunctionNVX" );
16121 #  endif
16122       }
16123 
16124       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CuFunctionNVX( *this, *reinterpret_cast<VkCuFunctionNVX *>( &function ), allocator );
16125     }
16126 
cuLaunchKernelNVX(const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo) const16127     VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX( const VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT
16128     {
16129       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCuLaunchKernelNVX && "Function <vkCmdCuLaunchKernelNVX> requires <VK_NVX_binary_import>" );
16130 
16131       getDispatcher()->vkCmdCuLaunchKernelNVX( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCuLaunchInfoNVX *>( &launchInfo ) );
16132     }
16133 
16134     //=== VK_NVX_image_view_handle ===
16135 
16136     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t
getImageViewHandleNVX(const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info) const16137       Device::getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT
16138     {
16139       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewHandleNVX && "Function <vkGetImageViewHandleNVX> requires <VK_NVX_image_view_handle>" );
16140 
16141       uint32_t result =
16142         getDispatcher()->vkGetImageViewHandleNVX( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageViewHandleInfoNVX *>( &info ) );
16143 
16144       return result;
16145     }
16146 
getAddressNVX() const16147     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX ImageView::getAddressNVX() const
16148     {
16149       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewAddressNVX && "Function <vkGetImageViewAddressNVX> requires <VK_NVX_image_view_handle>" );
16150 
16151       VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX properties;
16152       VULKAN_HPP_NAMESPACE::Result                        result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetImageViewAddressNVX(
16153         static_cast<VkDevice>( m_device ), static_cast<VkImageView>( m_imageView ), reinterpret_cast<VkImageViewAddressPropertiesNVX *>( &properties ) ) );
16154       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::ImageView::getAddressNVX" );
16155 
16156       return properties;
16157     }
16158 
16159     //=== VK_AMD_draw_indirect_count ===
16160 
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) const16161     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
16162                                                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
16163                                                                 VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
16164                                                                 VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
16165                                                                 uint32_t                         maxDrawCount,
16166                                                                 uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
16167     {
16168       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountAMD &&
16169                          "Function <vkCmdDrawIndirectCountAMD> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
16170 
16171       getDispatcher()->vkCmdDrawIndirectCountAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
16172                                                   static_cast<VkBuffer>( buffer ),
16173                                                   static_cast<VkDeviceSize>( offset ),
16174                                                   static_cast<VkBuffer>( countBuffer ),
16175                                                   static_cast<VkDeviceSize>( countBufferOffset ),
16176                                                   maxDrawCount,
16177                                                   stride );
16178     }
16179 
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) const16180     VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
16181                                                                        VULKAN_HPP_NAMESPACE::DeviceSize offset,
16182                                                                        VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
16183                                                                        VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
16184                                                                        uint32_t                         maxDrawCount,
16185                                                                        uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
16186     {
16187       VULKAN_HPP_ASSERT(
16188         getDispatcher()->vkCmdDrawIndexedIndirectCountAMD &&
16189         "Function <vkCmdDrawIndexedIndirectCountAMD> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
16190 
16191       getDispatcher()->vkCmdDrawIndexedIndirectCountAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
16192                                                          static_cast<VkBuffer>( buffer ),
16193                                                          static_cast<VkDeviceSize>( offset ),
16194                                                          static_cast<VkBuffer>( countBuffer ),
16195                                                          static_cast<VkDeviceSize>( countBufferOffset ),
16196                                                          maxDrawCount,
16197                                                          stride );
16198     }
16199 
16200     //=== VK_AMD_shader_info ===
16201 
getShaderInfoAMD(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType) const16202     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> Pipeline::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,
16203                                                                                             VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD   infoType ) const
16204     {
16205       VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderInfoAMD && "Function <vkGetShaderInfoAMD> requires <VK_AMD_shader_info>" );
16206 
16207       std::vector<uint8_t>         info;
16208       size_t                       infoSize;
16209       VULKAN_HPP_NAMESPACE::Result result;
16210       do
16211       {
16212         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetShaderInfoAMD( static_cast<VkDevice>( m_device ),
16213                                                                                                  static_cast<VkPipeline>( m_pipeline ),
16214                                                                                                  static_cast<VkShaderStageFlagBits>( shaderStage ),
16215                                                                                                  static_cast<VkShaderInfoTypeAMD>( infoType ),
16216                                                                                                  &infoSize,
16217                                                                                                  nullptr ) );
16218         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && infoSize )
16219         {
16220           info.resize( infoSize );
16221           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetShaderInfoAMD( static_cast<VkDevice>( m_device ),
16222                                                                                                    static_cast<VkPipeline>( m_pipeline ),
16223                                                                                                    static_cast<VkShaderStageFlagBits>( shaderStage ),
16224                                                                                                    static_cast<VkShaderInfoTypeAMD>( infoType ),
16225                                                                                                    &infoSize,
16226                                                                                                    reinterpret_cast<void *>( info.data() ) ) );
16227         }
16228       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
16229       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getShaderInfoAMD" );
16230       VULKAN_HPP_ASSERT( infoSize <= info.size() );
16231       if ( infoSize < info.size() )
16232       {
16233         info.resize( infoSize );
16234       }
16235       return info;
16236     }
16237 
16238     //=== VK_KHR_dynamic_rendering ===
16239 
beginRenderingKHR(const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo) const16240     VULKAN_HPP_INLINE void CommandBuffer::beginRenderingKHR( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT
16241     {
16242       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderingKHR &&
16243                          "Function <vkCmdBeginRenderingKHR> requires <VK_KHR_dynamic_rendering> or <VK_VERSION_1_3>" );
16244 
16245       getDispatcher()->vkCmdBeginRenderingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkRenderingInfo *>( &renderingInfo ) );
16246     }
16247 
endRenderingKHR() const16248     VULKAN_HPP_INLINE void CommandBuffer::endRenderingKHR() const VULKAN_HPP_NOEXCEPT
16249     {
16250       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderingKHR && "Function <vkCmdEndRenderingKHR> requires <VK_KHR_dynamic_rendering> or <VK_VERSION_1_3>" );
16251 
16252       getDispatcher()->vkCmdEndRenderingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ) );
16253     }
16254 
16255 #  if defined( VK_USE_PLATFORM_GGP )
16256     //=== VK_GGP_stream_descriptor_surface ===
16257 
16258     VULKAN_HPP_NODISCARD
16259       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createStreamDescriptorSurfaceGGP(VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const16260                         Instance::createStreamDescriptorSurfaceGGP( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const &              createInfo,
16261                                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
16262       VULKAN_HPP_RAII_CREATE_NOEXCEPT
16263     {
16264       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
16265       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateStreamDescriptorSurfaceGGP(
16266         static_cast<VkInstance>( m_instance ),
16267         reinterpret_cast<const VkStreamDescriptorSurfaceCreateInfoGGP *>( &createInfo ),
16268         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
16269         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
16270       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16271       {
16272 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
16273         return VULKAN_HPP_UNEXPECTED( result );
16274 #    else
16275         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createStreamDescriptorSurfaceGGP" );
16276 #    endif
16277       }
16278 
16279       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
16280     }
16281 #  endif /*VK_USE_PLATFORM_GGP*/
16282 
16283     //=== VK_NV_external_memory_capabilities ===
16284 
16285     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) const16286                                            PhysicalDevice::getExternalImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::Format                          format,
16287                                                           VULKAN_HPP_NAMESPACE::ImageType                       type,
16288                                                           VULKAN_HPP_NAMESPACE::ImageTiling                     tiling,
16289                                                           VULKAN_HPP_NAMESPACE::ImageUsageFlags                 usage,
16290                                                           VULKAN_HPP_NAMESPACE::ImageCreateFlags                flags,
16291                                                           VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
16292     {
16293       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV &&
16294                          "Function <vkGetPhysicalDeviceExternalImageFormatPropertiesNV> requires <VK_NV_external_memory_capabilities>" );
16295 
16296       VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV externalImageFormatProperties;
16297       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
16298         static_cast<VkPhysicalDevice>( m_physicalDevice ),
16299         static_cast<VkFormat>( format ),
16300         static_cast<VkImageType>( type ),
16301         static_cast<VkImageTiling>( tiling ),
16302         static_cast<VkImageUsageFlags>( usage ),
16303         static_cast<VkImageCreateFlags>( flags ),
16304         static_cast<VkExternalMemoryHandleTypeFlagsNV>( externalHandleType ),
16305         reinterpret_cast<VkExternalImageFormatPropertiesNV *>( &externalImageFormatProperties ) ) );
16306       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" );
16307 
16308       return externalImageFormatProperties;
16309     }
16310 
16311 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
16312     //=== VK_NV_external_memory_win32 ===
16313 
getMemoryWin32HandleNV(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType) const16314     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE DeviceMemory::getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType ) const
16315     {
16316       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleNV && "Function <vkGetMemoryWin32HandleNV> requires <VK_NV_external_memory_win32>" );
16317 
16318       HANDLE                       handle;
16319       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryWin32HandleNV(
16320         static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
16321       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::DeviceMemory::getMemoryWin32HandleNV" );
16322 
16323       return handle;
16324     }
16325 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
16326 
16327     //=== VK_KHR_get_physical_device_properties2 ===
16328 
getFeatures2KHR() const16329     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT
16330     {
16331       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2KHR &&
16332                          "Function <vkGetPhysicalDeviceFeatures2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16333 
16334       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features;
16335       getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16336                                                         reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
16337 
16338       return features;
16339     }
16340 
16341     template <typename X, typename Y, typename... Z>
getFeatures2KHR() const16342     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT
16343     {
16344       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2KHR &&
16345                          "Function <vkGetPhysicalDeviceFeatures2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16346 
16347       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
16348       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 &  features = structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>();
16349       getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16350                                                         reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
16351 
16352       return structureChain;
16353     }
16354 
getProperties2KHR() const16355     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT
16356     {
16357       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2KHR &&
16358                          "Function <vkGetPhysicalDeviceProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16359 
16360       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties;
16361       getDispatcher()->vkGetPhysicalDeviceProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16362                                                           reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
16363 
16364       return properties;
16365     }
16366 
16367     template <typename X, typename Y, typename... Z>
getProperties2KHR() const16368     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT
16369     {
16370       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2KHR &&
16371                          "Function <vkGetPhysicalDeviceProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16372 
16373       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>  structureChain;
16374       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties = structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>();
16375       getDispatcher()->vkGetPhysicalDeviceProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16376                                                           reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
16377 
16378       return structureChain;
16379     }
16380 
16381     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2
getFormatProperties2KHR(VULKAN_HPP_NAMESPACE::Format format) const16382                                            PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
16383     {
16384       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR &&
16385                          "Function <vkGetPhysicalDeviceFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16386 
16387       VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties;
16388       getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR(
16389         static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
16390 
16391       return formatProperties;
16392     }
16393 
16394     template <typename X, typename Y, typename... Z>
16395     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getFormatProperties2KHR(VULKAN_HPP_NAMESPACE::Format format) const16396                                            PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
16397     {
16398       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR &&
16399                          "Function <vkGetPhysicalDeviceFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16400 
16401       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
16402       VULKAN_HPP_NAMESPACE::FormatProperties2 &        formatProperties = structureChain.template get<VULKAN_HPP_NAMESPACE::FormatProperties2>();
16403       getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR(
16404         static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
16405 
16406       return structureChain;
16407     }
16408 
16409     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties2
getImageFormatProperties2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const16410       PhysicalDevice::getImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
16411     {
16412       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR &&
16413                          "Function <vkGetPhysicalDeviceImageFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16414 
16415       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties;
16416       VULKAN_HPP_NAMESPACE::Result                 result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16417         getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16418                                                                        reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
16419                                                                        reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
16420       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" );
16421 
16422       return imageFormatProperties;
16423     }
16424 
16425     template <typename X, typename Y, typename... Z>
16426     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getImageFormatProperties2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const16427       PhysicalDevice::getImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
16428     {
16429       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR &&
16430                          "Function <vkGetPhysicalDeviceImageFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16431 
16432       StructureChain<X, Y, Z...>                     structureChain;
16433       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties = structureChain.template get<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>();
16434       VULKAN_HPP_NAMESPACE::Result                   result                = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16435         getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16436                                                                        reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
16437                                                                        reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
16438       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" );
16439 
16440       return structureChain;
16441     }
16442 
getQueueFamilyProperties2KHR() const16443     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> PhysicalDevice::getQueueFamilyProperties2KHR() const
16444     {
16445       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR &&
16446                          "Function <vkGetPhysicalDeviceQueueFamilyProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16447 
16448       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties;
16449       uint32_t                                                  queueFamilyPropertyCount;
16450       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
16451       queueFamilyProperties.resize( queueFamilyPropertyCount );
16452       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16453                                                                      &queueFamilyPropertyCount,
16454                                                                      reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
16455 
16456       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
16457       if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
16458       {
16459         queueFamilyProperties.resize( queueFamilyPropertyCount );
16460       }
16461       return queueFamilyProperties;
16462     }
16463 
16464     template <typename StructureChain>
getQueueFamilyProperties2KHR() const16465     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain> PhysicalDevice::getQueueFamilyProperties2KHR() const
16466     {
16467       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR &&
16468                          "Function <vkGetPhysicalDeviceQueueFamilyProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16469 
16470       std::vector<StructureChain>                               structureChains;
16471       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties;
16472       uint32_t                                                  queueFamilyPropertyCount;
16473       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
16474       structureChains.resize( queueFamilyPropertyCount );
16475       queueFamilyProperties.resize( queueFamilyPropertyCount );
16476       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
16477       {
16478         queueFamilyProperties[i].pNext = structureChains[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>().pNext;
16479       }
16480       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16481                                                                      &queueFamilyPropertyCount,
16482                                                                      reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
16483 
16484       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
16485       if ( queueFamilyPropertyCount < queueFamilyProperties.size() )
16486       {
16487         structureChains.resize( queueFamilyPropertyCount );
16488       }
16489       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
16490       {
16491         structureChains[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>() = queueFamilyProperties[i];
16492       }
16493       return structureChains;
16494     }
16495 
16496     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
getMemoryProperties2KHR() const16497                                            PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT
16498     {
16499       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR &&
16500                          "Function <vkGetPhysicalDeviceMemoryProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16501 
16502       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties;
16503       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16504                                                                 reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
16505 
16506       return memoryProperties;
16507     }
16508 
16509     template <typename X, typename Y, typename... Z>
getMemoryProperties2KHR() const16510     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT
16511     {
16512       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR &&
16513                          "Function <vkGetPhysicalDeviceMemoryProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16514 
16515       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>        structureChain;
16516       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties =
16517         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>();
16518       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16519                                                                 reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
16520 
16521       return structureChain;
16522     }
16523 
16524     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
getSparseImageFormatProperties2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo) const16525       PhysicalDevice::getSparseImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const
16526     {
16527       VULKAN_HPP_ASSERT(
16528         getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR &&
16529         "Function <vkGetPhysicalDeviceSparseImageFormatProperties2KHR> requires <VK_KHR_get_physical_device_properties2> or <VK_VERSION_1_1>" );
16530 
16531       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2> properties;
16532       uint32_t                                                        propertyCount;
16533       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16534                                                                            reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
16535                                                                            &propertyCount,
16536                                                                            nullptr );
16537       properties.resize( propertyCount );
16538       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16539                                                                            reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
16540                                                                            &propertyCount,
16541                                                                            reinterpret_cast<VkSparseImageFormatProperties2 *>( properties.data() ) );
16542 
16543       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
16544       if ( propertyCount < properties.size() )
16545       {
16546         properties.resize( propertyCount );
16547       }
16548       return properties;
16549     }
16550 
16551     //=== VK_KHR_device_group ===
16552 
16553     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags
getGroupPeerMemoryFeaturesKHR(uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex) const16554       Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT
16555     {
16556       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR &&
16557                          "Function <vkGetDeviceGroupPeerMemoryFeaturesKHR> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
16558 
16559       VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures;
16560       getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR( static_cast<VkDevice>( m_device ),
16561                                                               heapIndex,
16562                                                               localDeviceIndex,
16563                                                               remoteDeviceIndex,
16564                                                               reinterpret_cast<VkPeerMemoryFeatureFlags *>( &peerMemoryFeatures ) );
16565 
16566       return peerMemoryFeatures;
16567     }
16568 
setDeviceMaskKHR(uint32_t deviceMask) const16569     VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT
16570     {
16571       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMaskKHR && "Function <vkCmdSetDeviceMaskKHR> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
16572 
16573       getDispatcher()->vkCmdSetDeviceMaskKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), deviceMask );
16574     }
16575 
dispatchBaseKHR(uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const16576     VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX,
16577                                                            uint32_t baseGroupY,
16578                                                            uint32_t baseGroupZ,
16579                                                            uint32_t groupCountX,
16580                                                            uint32_t groupCountY,
16581                                                            uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
16582     {
16583       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBaseKHR && "Function <vkCmdDispatchBaseKHR> requires <VK_KHR_device_group> or <VK_VERSION_1_1>" );
16584 
16585       getDispatcher()->vkCmdDispatchBaseKHR(
16586         static_cast<VkCommandBuffer>( m_commandBuffer ), baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
16587     }
16588 
16589 #  if defined( VK_USE_PLATFORM_VI_NN )
16590     //=== VK_NN_vi_surface ===
16591 
16592     VULKAN_HPP_NODISCARD
16593       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createViSurfaceNN(VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const16594                         Instance::createViSurfaceNN( VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const &                             createInfo,
16595                                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
16596       VULKAN_HPP_RAII_CREATE_NOEXCEPT
16597     {
16598       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
16599       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateViSurfaceNN(
16600         static_cast<VkInstance>( m_instance ),
16601         reinterpret_cast<const VkViSurfaceCreateInfoNN *>( &createInfo ),
16602         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
16603         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
16604       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16605       {
16606 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
16607         return VULKAN_HPP_UNEXPECTED( result );
16608 #    else
16609         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createViSurfaceNN" );
16610 #    endif
16611       }
16612 
16613       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
16614     }
16615 #  endif /*VK_USE_PLATFORM_VI_NN*/
16616 
16617     //=== VK_KHR_maintenance1 ===
16618 
trimKHR(VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags) const16619     VULKAN_HPP_INLINE void CommandPool::trimKHR( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT
16620     {
16621       VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPoolKHR && "Function <vkTrimCommandPoolKHR> requires <VK_KHR_maintenance1> or <VK_VERSION_1_1>" );
16622 
16623       getDispatcher()->vkTrimCommandPoolKHR(
16624         static_cast<VkDevice>( m_device ), static_cast<VkCommandPool>( m_commandPool ), static_cast<VkCommandPoolTrimFlags>( flags ) );
16625     }
16626 
16627     //=== VK_KHR_device_group_creation ===
16628 
enumeratePhysicalDeviceGroupsKHR() const16629     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> Instance::enumeratePhysicalDeviceGroupsKHR() const
16630     {
16631       VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR &&
16632                          "Function <vkEnumeratePhysicalDeviceGroupsKHR> requires <VK_KHR_device_group_creation> or <VK_VERSION_1_1>" );
16633 
16634       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> physicalDeviceGroupProperties;
16635       uint32_t                                                         physicalDeviceGroupCount;
16636       VULKAN_HPP_NAMESPACE::Result                                     result;
16637       do
16638       {
16639         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16640           getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR( static_cast<VkInstance>( m_instance ), &physicalDeviceGroupCount, nullptr ) );
16641         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceGroupCount )
16642         {
16643           physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
16644           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR(
16645             static_cast<VkInstance>( m_instance ),
16646             &physicalDeviceGroupCount,
16647             reinterpret_cast<VkPhysicalDeviceGroupProperties *>( physicalDeviceGroupProperties.data() ) ) );
16648         }
16649       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
16650       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" );
16651       VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
16652       if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() )
16653       {
16654         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
16655       }
16656       return physicalDeviceGroupProperties;
16657     }
16658 
16659     //=== VK_KHR_external_memory_capabilities ===
16660 
getExternalBufferPropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo) const16661     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties PhysicalDevice::getExternalBufferPropertiesKHR(
16662       const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT
16663     {
16664       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR &&
16665                          "Function <vkGetPhysicalDeviceExternalBufferPropertiesKHR> requires <VK_KHR_external_memory_capabilities> or <VK_VERSION_1_1>" );
16666 
16667       VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties;
16668       getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16669                                                                        reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( &externalBufferInfo ),
16670                                                                        reinterpret_cast<VkExternalBufferProperties *>( &externalBufferProperties ) );
16671 
16672       return externalBufferProperties;
16673     }
16674 
16675 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
16676     //=== VK_KHR_external_memory_win32 ===
16677 
16678     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE
getMemoryWin32HandleKHR(const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo) const16679       Device::getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
16680     {
16681       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleKHR && "Function <vkGetMemoryWin32HandleKHR> requires <VK_KHR_external_memory_win32>" );
16682 
16683       HANDLE                       handle;
16684       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryWin32HandleKHR(
16685         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR *>( &getWin32HandleInfo ), &handle ) );
16686       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" );
16687 
16688       return handle;
16689     }
16690 
16691     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR
getMemoryWin32HandlePropertiesKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,HANDLE handle) const16692       Device::getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle ) const
16693     {
16694       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR &&
16695                          "Function <vkGetMemoryWin32HandlePropertiesKHR> requires <VK_KHR_external_memory_win32>" );
16696 
16697       VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
16698       VULKAN_HPP_NAMESPACE::Result                         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16699         getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR( static_cast<VkDevice>( m_device ),
16700                                                               static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
16701                                                               handle,
16702                                                               reinterpret_cast<VkMemoryWin32HandlePropertiesKHR *>( &memoryWin32HandleProperties ) ) );
16703       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" );
16704 
16705       return memoryWin32HandleProperties;
16706     }
16707 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
16708 
16709     //=== VK_KHR_external_memory_fd ===
16710 
getMemoryFdKHR(const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo) const16711     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int Device::getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR & getFdInfo ) const
16712     {
16713       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdKHR && "Function <vkGetMemoryFdKHR> requires <VK_KHR_external_memory_fd>" );
16714 
16715       int                          fd;
16716       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16717         getDispatcher()->vkGetMemoryFdKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetFdInfoKHR *>( &getFdInfo ), &fd ) );
16718       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdKHR" );
16719 
16720       return fd;
16721     }
16722 
16723     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR
getMemoryFdPropertiesKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,int fd) const16724                                            Device::getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd ) const
16725     {
16726       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdPropertiesKHR && "Function <vkGetMemoryFdPropertiesKHR> requires <VK_KHR_external_memory_fd>" );
16727 
16728       VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR memoryFdProperties;
16729       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16730         getDispatcher()->vkGetMemoryFdPropertiesKHR( static_cast<VkDevice>( m_device ),
16731                                                      static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
16732                                                      fd,
16733                                                      reinterpret_cast<VkMemoryFdPropertiesKHR *>( &memoryFdProperties ) ) );
16734       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" );
16735 
16736       return memoryFdProperties;
16737     }
16738 
16739     //=== VK_KHR_external_semaphore_capabilities ===
16740 
getExternalSemaphorePropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo) const16741     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphorePropertiesKHR(
16742       const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT
16743     {
16744       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR &&
16745                          "Function <vkGetPhysicalDeviceExternalSemaphorePropertiesKHR> requires <VK_KHR_external_semaphore_capabilities> or <VK_VERSION_1_1>" );
16746 
16747       VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties;
16748       getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
16749         static_cast<VkPhysicalDevice>( m_physicalDevice ),
16750         reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( &externalSemaphoreInfo ),
16751         reinterpret_cast<VkExternalSemaphoreProperties *>( &externalSemaphoreProperties ) );
16752 
16753       return externalSemaphoreProperties;
16754     }
16755 
16756 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
16757     //=== VK_KHR_external_semaphore_win32 ===
16758 
16759     VULKAN_HPP_INLINE void
importSemaphoreWin32HandleKHR(const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo) const16760       Device::importSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
16761     {
16762       VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreWin32HandleKHR &&
16763                          "Function <vkImportSemaphoreWin32HandleKHR> requires <VK_KHR_external_semaphore_win32>" );
16764 
16765       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreWin32HandleKHR(
16766         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR *>( &importSemaphoreWin32HandleInfo ) ) );
16767       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" );
16768     }
16769 
16770     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE
getSemaphoreWin32HandleKHR(const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo) const16771       Device::getSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
16772     {
16773       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreWin32HandleKHR &&
16774                          "Function <vkGetSemaphoreWin32HandleKHR> requires <VK_KHR_external_semaphore_win32>" );
16775 
16776       HANDLE                       handle;
16777       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreWin32HandleKHR(
16778         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR *>( &getWin32HandleInfo ), &handle ) );
16779       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" );
16780 
16781       return handle;
16782     }
16783 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
16784 
16785     //=== VK_KHR_external_semaphore_fd ===
16786 
importSemaphoreFdKHR(const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo) const16787     VULKAN_HPP_INLINE void Device::importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
16788     {
16789       VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreFdKHR && "Function <vkImportSemaphoreFdKHR> requires <VK_KHR_external_semaphore_fd>" );
16790 
16791       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreFdKHR(
16792         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportSemaphoreFdInfoKHR *>( &importSemaphoreFdInfo ) ) );
16793       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" );
16794     }
16795 
getSemaphoreFdKHR(const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo) const16796     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int Device::getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR & getFdInfo ) const
16797     {
16798       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreFdKHR && "Function <vkGetSemaphoreFdKHR> requires <VK_KHR_external_semaphore_fd>" );
16799 
16800       int                          fd;
16801       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16802         getDispatcher()->vkGetSemaphoreFdKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreGetFdInfoKHR *>( &getFdInfo ), &fd ) );
16803       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" );
16804 
16805       return fd;
16806     }
16807 
16808     //=== VK_KHR_push_descriptor ===
16809 
pushDescriptorSetKHR(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t set,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites) const16810     VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR(
16811       VULKAN_HPP_NAMESPACE::PipelineBindPoint                                                  pipelineBindPoint,
16812       VULKAN_HPP_NAMESPACE::PipelineLayout                                                     layout,
16813       uint32_t                                                                                 set,
16814       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT
16815     {
16816       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetKHR && "Function <vkCmdPushDescriptorSetKHR> requires <VK_KHR_push_descriptor>" );
16817 
16818       getDispatcher()->vkCmdPushDescriptorSetKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
16819                                                   static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
16820                                                   static_cast<VkPipelineLayout>( layout ),
16821                                                   set,
16822                                                   descriptorWrites.size(),
16823                                                   reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ) );
16824     }
16825 
16826     template <typename DataType>
pushDescriptorSetWithTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t set,DataType const & data) const16827     VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
16828                                                                             VULKAN_HPP_NAMESPACE::PipelineLayout           layout,
16829                                                                             uint32_t                                       set,
16830                                                                             DataType const &                               data ) const VULKAN_HPP_NOEXCEPT
16831     {
16832       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR &&
16833                          "Function <vkCmdPushDescriptorSetWithTemplateKHR> requires <VK_KHR_descriptor_update_template> or <VK_KHR_push_descriptor>" );
16834 
16835       getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
16836                                                               static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
16837                                                               static_cast<VkPipelineLayout>( layout ),
16838                                                               set,
16839                                                               reinterpret_cast<const void *>( &data ) );
16840     }
16841 
16842     //=== VK_EXT_conditional_rendering ===
16843 
beginConditionalRenderingEXT(const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin) const16844     VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT(
16845       const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT
16846     {
16847       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginConditionalRenderingEXT &&
16848                          "Function <vkCmdBeginConditionalRenderingEXT> requires <VK_EXT_conditional_rendering>" );
16849 
16850       getDispatcher()->vkCmdBeginConditionalRenderingEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16851                                                           reinterpret_cast<const VkConditionalRenderingBeginInfoEXT *>( &conditionalRenderingBegin ) );
16852     }
16853 
endConditionalRenderingEXT() const16854     VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT
16855     {
16856       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndConditionalRenderingEXT &&
16857                          "Function <vkCmdEndConditionalRenderingEXT> requires <VK_EXT_conditional_rendering>" );
16858 
16859       getDispatcher()->vkCmdEndConditionalRenderingEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
16860     }
16861 
16862     //=== VK_KHR_descriptor_update_template ===
16863 
16864     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
16865       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate>::Type
createDescriptorUpdateTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const16866       Device::createDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const &                createInfo,
16867                                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
16868       VULKAN_HPP_RAII_CREATE_NOEXCEPT
16869     {
16870       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate;
16871       VULKAN_HPP_NAMESPACE::Result                   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDescriptorUpdateTemplateKHR(
16872         static_cast<VkDevice>( m_device ),
16873         reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( &createInfo ),
16874         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
16875         reinterpret_cast<VkDescriptorUpdateTemplate *>( &descriptorUpdateTemplate ) ) );
16876       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16877       {
16878 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
16879         return VULKAN_HPP_UNEXPECTED( result );
16880 #  else
16881         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createDescriptorUpdateTemplateKHR" );
16882 #  endif
16883       }
16884 
16885       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorUpdateTemplate(
16886         *this, *reinterpret_cast<VkDescriptorUpdateTemplate *>( &descriptorUpdateTemplate ), allocator );
16887     }
16888 
16889     VULKAN_HPP_INLINE void
destroyDescriptorUpdateTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const16890       Device::destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate            descriptorUpdateTemplate,
16891                                                   Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT
16892     {
16893       VULKAN_HPP_ASSERT( getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR &&
16894                          "Function <vkDestroyDescriptorUpdateTemplateKHR> requires <VK_KHR_descriptor_update_template> or <VK_VERSION_1_1>" );
16895 
16896       getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR(
16897         static_cast<VkDevice>( m_device ),
16898         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
16899         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) );
16900     }
16901 
16902     template <typename DataType>
updateWithTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,DataType const & data) const16903     VULKAN_HPP_INLINE void DescriptorSet::updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
16904                                                                  DataType const &                               data ) const VULKAN_HPP_NOEXCEPT
16905     {
16906       VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR &&
16907                          "Function <vkUpdateDescriptorSetWithTemplateKHR> requires <VK_KHR_descriptor_update_template> or <VK_VERSION_1_1>" );
16908 
16909       getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR( static_cast<VkDevice>( m_device ),
16910                                                              static_cast<VkDescriptorSet>( m_descriptorSet ),
16911                                                              static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
16912                                                              reinterpret_cast<const void *>( &data ) );
16913     }
16914 
16915     //=== VK_NV_clip_space_w_scaling ===
16916 
setViewportWScalingNV(uint32_t firstViewport,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings) const16917     VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV(
16918       uint32_t                                                                                 firstViewport,
16919       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings ) const VULKAN_HPP_NOEXCEPT
16920     {
16921       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWScalingNV && "Function <vkCmdSetViewportWScalingNV> requires <VK_NV_clip_space_w_scaling>" );
16922 
16923       getDispatcher()->vkCmdSetViewportWScalingNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
16924                                                    firstViewport,
16925                                                    viewportWScalings.size(),
16926                                                    reinterpret_cast<const VkViewportWScalingNV *>( viewportWScalings.data() ) );
16927     }
16928 
16929 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
16930     //=== VK_EXT_acquire_xlib_display ===
16931 
acquireXlibDisplayEXT(Display & dpy,VULKAN_HPP_NAMESPACE::DisplayKHR display) const16932     VULKAN_HPP_INLINE void PhysicalDevice::acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const
16933     {
16934       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireXlibDisplayEXT && "Function <vkAcquireXlibDisplayEXT> requires <VK_EXT_acquire_xlib_display>" );
16935 
16936       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16937         getDispatcher()->vkAcquireXlibDisplayEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), &dpy, static_cast<VkDisplayKHR>( display ) ) );
16938       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" );
16939     }
16940 
16941     VULKAN_HPP_NODISCARD
16942       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>::Type
getRandROutputDisplayEXT(Display & dpy,RROutput rrOutput) const16943                         PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
16944     {
16945       VULKAN_HPP_NAMESPACE::DisplayKHR display;
16946       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetRandROutputDisplayEXT(
16947         static_cast<VkPhysicalDevice>( m_physicalDevice ), &dpy, rrOutput, reinterpret_cast<VkDisplayKHR *>( &display ) ) );
16948       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16949       {
16950 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
16951         return VULKAN_HPP_UNEXPECTED( result );
16952 #    else
16953         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "PhysicalDevice::getRandROutputDisplayEXT" );
16954 #    endif
16955       }
16956 
16957       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR( *this, *reinterpret_cast<VkDisplayKHR *>( &display ) );
16958     }
16959 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
16960 
16961     //=== VK_EXT_display_surface_counter ===
16962 
16963     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT
getSurfaceCapabilities2EXT(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const16964                                            PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
16965     {
16966       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT &&
16967                          "Function <vkGetPhysicalDeviceSurfaceCapabilities2EXT> requires <VK_EXT_display_surface_counter>" );
16968 
16969       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT surfaceCapabilities;
16970       VULKAN_HPP_NAMESPACE::Result                  result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
16971         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT( static_cast<VkPhysicalDevice>( m_physicalDevice ),
16972                                                                      static_cast<VkSurfaceKHR>( surface ),
16973                                                                      reinterpret_cast<VkSurfaceCapabilities2EXT *>( &surfaceCapabilities ) ) );
16974       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" );
16975 
16976       return surfaceCapabilities;
16977     }
16978 
16979     //=== VK_EXT_display_control ===
16980 
displayPowerControlEXT(VULKAN_HPP_NAMESPACE::DisplayKHR display,const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo) const16981     VULKAN_HPP_INLINE void Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR                  display,
16982                                                            const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT & displayPowerInfo ) const
16983     {
16984       VULKAN_HPP_ASSERT( getDispatcher()->vkDisplayPowerControlEXT && "Function <vkDisplayPowerControlEXT> requires <VK_EXT_display_control>" );
16985 
16986       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDisplayPowerControlEXT(
16987         static_cast<VkDevice>( m_device ), static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT *>( &displayPowerInfo ) ) );
16988       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::displayPowerControlEXT" );
16989     }
16990 
16991     VULKAN_HPP_NODISCARD
16992       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence>::Type
registerEventEXT(VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const & deviceEventInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const16993                         Device::registerEventEXT( VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const &                                deviceEventInfo,
16994                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
16995       VULKAN_HPP_RAII_CREATE_NOEXCEPT
16996     {
16997       VULKAN_HPP_NAMESPACE::Fence  fence;
16998       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkRegisterDeviceEventEXT(
16999         static_cast<VkDevice>( m_device ),
17000         reinterpret_cast<const VkDeviceEventInfoEXT *>( &deviceEventInfo ),
17001         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
17002         reinterpret_cast<VkFence *>( &fence ) ) );
17003       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
17004       {
17005 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
17006         return VULKAN_HPP_UNEXPECTED( result );
17007 #  else
17008         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::registerEventEXT" );
17009 #  endif
17010       }
17011 
17012       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence( *this, *reinterpret_cast<VkFence *>( &fence ), allocator );
17013     }
17014 
17015     VULKAN_HPP_NODISCARD
17016       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence>::Type
registerDisplayEventEXT(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) const17017                         Device::registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const &             display,
17018                                        VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const &                               displayEventInfo,
17019                                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
17020       VULKAN_HPP_RAII_CREATE_NOEXCEPT
17021     {
17022       VULKAN_HPP_NAMESPACE::Fence  fence;
17023       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkRegisterDisplayEventEXT(
17024         static_cast<VkDevice>( m_device ),
17025         static_cast<VkDisplayKHR>( *display ),
17026         reinterpret_cast<const VkDisplayEventInfoEXT *>( &displayEventInfo ),
17027         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
17028         reinterpret_cast<VkFence *>( &fence ) ) );
17029       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
17030       {
17031 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
17032         return VULKAN_HPP_UNEXPECTED( result );
17033 #  else
17034         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::registerDisplayEventEXT" );
17035 #  endif
17036       }
17037 
17038       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Fence( *this, *reinterpret_cast<VkFence *>( &fence ), allocator );
17039     }
17040 
getCounterEXT(VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter) const17041     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t SwapchainKHR::getCounterEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter ) const
17042     {
17043       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainCounterEXT && "Function <vkGetSwapchainCounterEXT> requires <VK_EXT_display_control>" );
17044 
17045       uint64_t                     counterValue;
17046       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSwapchainCounterEXT(
17047         static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
17048       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getCounterEXT" );
17049 
17050       return counterValue;
17051     }
17052 
17053     //=== VK_GOOGLE_display_timing ===
17054 
getRefreshCycleDurationGOOGLE() const17055     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE SwapchainKHR::getRefreshCycleDurationGOOGLE() const
17056     {
17057       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRefreshCycleDurationGOOGLE && "Function <vkGetRefreshCycleDurationGOOGLE> requires <VK_GOOGLE_display_timing>" );
17058 
17059       VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE displayTimingProperties;
17060       VULKAN_HPP_NAMESPACE::Result                     result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17061         getDispatcher()->vkGetRefreshCycleDurationGOOGLE( static_cast<VkDevice>( m_device ),
17062                                                           static_cast<VkSwapchainKHR>( m_swapchain ),
17063                                                           reinterpret_cast<VkRefreshCycleDurationGOOGLE *>( &displayTimingProperties ) ) );
17064       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getRefreshCycleDurationGOOGLE" );
17065 
17066       return displayTimingProperties;
17067     }
17068 
getPastPresentationTimingGOOGLE() const17069     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE> SwapchainKHR::getPastPresentationTimingGOOGLE() const
17070     {
17071       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPastPresentationTimingGOOGLE &&
17072                          "Function <vkGetPastPresentationTimingGOOGLE> requires <VK_GOOGLE_display_timing>" );
17073 
17074       std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE> presentationTimings;
17075       uint32_t                                                        presentationTimingCount;
17076       VULKAN_HPP_NAMESPACE::Result                                    result;
17077       do
17078       {
17079         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPastPresentationTimingGOOGLE(
17080           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), &presentationTimingCount, nullptr ) );
17081         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentationTimingCount )
17082         {
17083           presentationTimings.resize( presentationTimingCount );
17084           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17085             getDispatcher()->vkGetPastPresentationTimingGOOGLE( static_cast<VkDevice>( m_device ),
17086                                                                 static_cast<VkSwapchainKHR>( m_swapchain ),
17087                                                                 &presentationTimingCount,
17088                                                                 reinterpret_cast<VkPastPresentationTimingGOOGLE *>( presentationTimings.data() ) ) );
17089         }
17090       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
17091       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getPastPresentationTimingGOOGLE" );
17092       VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() );
17093       if ( presentationTimingCount < presentationTimings.size() )
17094       {
17095         presentationTimings.resize( presentationTimingCount );
17096       }
17097       return presentationTimings;
17098     }
17099 
17100     //=== VK_EXT_discard_rectangles ===
17101 
setDiscardRectangleEXT(uint32_t firstDiscardRectangle,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles) const17102     VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT(
17103       uint32_t firstDiscardRectangle, VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles ) const VULKAN_HPP_NOEXCEPT
17104     {
17105       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleEXT && "Function <vkCmdSetDiscardRectangleEXT> requires <VK_EXT_discard_rectangles>" );
17106 
17107       getDispatcher()->vkCmdSetDiscardRectangleEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
17108                                                     firstDiscardRectangle,
17109                                                     discardRectangles.size(),
17110                                                     reinterpret_cast<const VkRect2D *>( discardRectangles.data() ) );
17111     }
17112 
setDiscardRectangleEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 discardRectangleEnable) const17113     VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 discardRectangleEnable ) const VULKAN_HPP_NOEXCEPT
17114     {
17115       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleEnableEXT &&
17116                          "Function <vkCmdSetDiscardRectangleEnableEXT> requires <VK_EXT_discard_rectangles>" );
17117 
17118       getDispatcher()->vkCmdSetDiscardRectangleEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( discardRectangleEnable ) );
17119     }
17120 
17121     VULKAN_HPP_INLINE void
setDiscardRectangleModeEXT(VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode) const17122       CommandBuffer::setDiscardRectangleModeEXT( VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode ) const VULKAN_HPP_NOEXCEPT
17123     {
17124       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleModeEXT &&
17125                          "Function <vkCmdSetDiscardRectangleModeEXT> requires <VK_EXT_discard_rectangles>" );
17126 
17127       getDispatcher()->vkCmdSetDiscardRectangleModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
17128                                                         static_cast<VkDiscardRectangleModeEXT>( discardRectangleMode ) );
17129     }
17130 
17131     //=== VK_EXT_hdr_metadata ===
17132 
setHdrMetadataEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata) const17133     VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const &   swapchains,
17134                                                       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata ) const
17135     {
17136       VULKAN_HPP_ASSERT( getDispatcher()->vkSetHdrMetadataEXT && "Function <vkSetHdrMetadataEXT> requires <VK_EXT_hdr_metadata>" );
17137 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
17138       VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() );
17139 #  else
17140       if ( swapchains.size() != metadata.size() )
17141       {
17142         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
17143       }
17144 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
17145 
17146       getDispatcher()->vkSetHdrMetadataEXT( static_cast<VkDevice>( m_device ),
17147                                             swapchains.size(),
17148                                             reinterpret_cast<const VkSwapchainKHR *>( swapchains.data() ),
17149                                             reinterpret_cast<const VkHdrMetadataEXT *>( metadata.data() ) );
17150     }
17151 
17152     //=== VK_KHR_create_renderpass2 ===
17153 
17154     VULKAN_HPP_NODISCARD
17155       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass>::Type
createRenderPass2KHR(VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const17156                         Device::createRenderPass2KHR( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const &                             createInfo,
17157                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
17158       VULKAN_HPP_RAII_CREATE_NOEXCEPT
17159     {
17160       VULKAN_HPP_NAMESPACE::RenderPass renderPass;
17161       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRenderPass2KHR(
17162         static_cast<VkDevice>( m_device ),
17163         reinterpret_cast<const VkRenderPassCreateInfo2 *>( &createInfo ),
17164         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
17165         reinterpret_cast<VkRenderPass *>( &renderPass ) ) );
17166       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
17167       {
17168 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
17169         return VULKAN_HPP_UNEXPECTED( result );
17170 #  else
17171         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createRenderPass2KHR" );
17172 #  endif
17173       }
17174 
17175       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::RenderPass( *this, *reinterpret_cast<VkRenderPass *>( &renderPass ), allocator );
17176     }
17177 
beginRenderPass2KHR(const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo) const17178     VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo & renderPassBegin,
17179                                                                const VULKAN_HPP_NAMESPACE::SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT
17180     {
17181       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2KHR &&
17182                          "Function <vkCmdBeginRenderPass2KHR> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
17183 
17184       getDispatcher()->vkCmdBeginRenderPass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
17185                                                  reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
17186                                                  reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ) );
17187     }
17188 
nextSubpass2KHR(const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo) const17189     VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo & subpassBeginInfo,
17190                                                            const VULKAN_HPP_NAMESPACE::SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
17191     {
17192       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2KHR && "Function <vkCmdNextSubpass2KHR> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
17193 
17194       getDispatcher()->vkCmdNextSubpass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
17195                                              reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ),
17196                                              reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
17197     }
17198 
endRenderPass2KHR(const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo) const17199     VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
17200     {
17201       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2KHR &&
17202                          "Function <vkCmdEndRenderPass2KHR> requires <VK_KHR_create_renderpass2> or <VK_VERSION_1_2>" );
17203 
17204       getDispatcher()->vkCmdEndRenderPass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
17205     }
17206 
17207     //=== VK_KHR_shared_presentable_image ===
17208 
getStatus() const17209     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result SwapchainKHR::getStatus() const
17210     {
17211       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainStatusKHR && "Function <vkGetSwapchainStatusKHR> requires <VK_KHR_shared_presentable_image>" );
17212 
17213       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17214         getDispatcher()->vkGetSwapchainStatusKHR( static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ) ) );
17215       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
17216                                                  VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getStatus",
17217                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } );
17218 
17219       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
17220     }
17221 
17222     //=== VK_KHR_external_fence_capabilities ===
17223 
17224     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties
getExternalFencePropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo) const17225       PhysicalDevice::getExternalFencePropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT
17226     {
17227       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR &&
17228                          "Function <vkGetPhysicalDeviceExternalFencePropertiesKHR> requires <VK_KHR_external_fence_capabilities> or <VK_VERSION_1_1>" );
17229 
17230       VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties;
17231       getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17232                                                                       reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( &externalFenceInfo ),
17233                                                                       reinterpret_cast<VkExternalFenceProperties *>( &externalFenceProperties ) );
17234 
17235       return externalFenceProperties;
17236     }
17237 
17238 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
17239     //=== VK_KHR_external_fence_win32 ===
17240 
importFenceWin32HandleKHR(const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo) const17241     VULKAN_HPP_INLINE void Device::importFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
17242     {
17243       VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceWin32HandleKHR && "Function <vkImportFenceWin32HandleKHR> requires <VK_KHR_external_fence_win32>" );
17244 
17245       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportFenceWin32HandleKHR(
17246         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportFenceWin32HandleInfoKHR *>( &importFenceWin32HandleInfo ) ) );
17247       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" );
17248     }
17249 
17250     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE
getFenceWin32HandleKHR(const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo) const17251       Device::getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
17252     {
17253       VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceWin32HandleKHR && "Function <vkGetFenceWin32HandleKHR> requires <VK_KHR_external_fence_win32>" );
17254 
17255       HANDLE                       handle;
17256       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetFenceWin32HandleKHR(
17257         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkFenceGetWin32HandleInfoKHR *>( &getWin32HandleInfo ), &handle ) );
17258       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" );
17259 
17260       return handle;
17261     }
17262 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
17263 
17264     //=== VK_KHR_external_fence_fd ===
17265 
importFenceFdKHR(const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo) const17266     VULKAN_HPP_INLINE void Device::importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR & importFenceFdInfo ) const
17267     {
17268       VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceFdKHR && "Function <vkImportFenceFdKHR> requires <VK_KHR_external_fence_fd>" );
17269 
17270       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17271         getDispatcher()->vkImportFenceFdKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportFenceFdInfoKHR *>( &importFenceFdInfo ) ) );
17272       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceFdKHR" );
17273     }
17274 
getFenceFdKHR(const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo) const17275     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int Device::getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR & getFdInfo ) const
17276     {
17277       VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceFdKHR && "Function <vkGetFenceFdKHR> requires <VK_KHR_external_fence_fd>" );
17278 
17279       int                          fd;
17280       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17281         getDispatcher()->vkGetFenceFdKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkFenceGetFdInfoKHR *>( &getFdInfo ), &fd ) );
17282       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceFdKHR" );
17283 
17284       return fd;
17285     }
17286 
17287     //=== VK_KHR_performance_query ===
17288 
17289     VULKAN_HPP_NODISCARD
17290       VULKAN_HPP_INLINE std::pair<std::vector<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR>, std::vector<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR>>
enumerateQueueFamilyPerformanceQueryCountersKHR(uint32_t queueFamilyIndex) const17291                         PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const
17292     {
17293       VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR &&
17294                          "Function <vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR> requires <VK_KHR_performance_query>" );
17295 
17296       std::pair<std::vector<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR>, std::vector<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR>> data_;
17297       std::vector<VULKAN_HPP_NAMESPACE::PerformanceCounterKHR> &            counters            = data_.first;
17298       std::vector<VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR> & counterDescriptions = data_.second;
17299       uint32_t                                                              counterCount;
17300       VULKAN_HPP_NAMESPACE::Result                                          result;
17301       do
17302       {
17303         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
17304           static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &counterCount, nullptr, nullptr ) );
17305         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && counterCount )
17306         {
17307           counters.resize( counterCount );
17308           counterDescriptions.resize( counterCount );
17309           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
17310             static_cast<VkPhysicalDevice>( m_physicalDevice ),
17311             queueFamilyIndex,
17312             &counterCount,
17313             reinterpret_cast<VkPerformanceCounterKHR *>( counters.data() ),
17314             reinterpret_cast<VkPerformanceCounterDescriptionKHR *>( counterDescriptions.data() ) ) );
17315         }
17316       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
17317       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" );
17318       VULKAN_HPP_ASSERT( counterCount <= counters.size() );
17319       if ( counterCount < counters.size() )
17320       {
17321         counters.resize( counterCount );
17322         counterDescriptions.resize( counterCount );
17323       }
17324       return data_;
17325     }
17326 
getQueueFamilyPerformanceQueryPassesKHR(const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo) const17327     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR(
17328       const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const VULKAN_HPP_NOEXCEPT
17329     {
17330       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR &&
17331                          "Function <vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR> requires <VK_KHR_performance_query>" );
17332 
17333       uint32_t numPasses;
17334       getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
17335         static_cast<VkPhysicalDevice>( m_physicalDevice ),
17336         reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR *>( &performanceQueryCreateInfo ),
17337         &numPasses );
17338 
17339       return numPasses;
17340     }
17341 
acquireProfilingLockKHR(const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info) const17342     VULKAN_HPP_INLINE void Device::acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR & info ) const
17343     {
17344       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireProfilingLockKHR && "Function <vkAcquireProfilingLockKHR> requires <VK_KHR_performance_query>" );
17345 
17346       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17347         getDispatcher()->vkAcquireProfilingLockKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAcquireProfilingLockInfoKHR *>( &info ) ) );
17348       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" );
17349     }
17350 
releaseProfilingLockKHR() const17351     VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT
17352     {
17353       VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseProfilingLockKHR && "Function <vkReleaseProfilingLockKHR> requires <VK_KHR_performance_query>" );
17354 
17355       getDispatcher()->vkReleaseProfilingLockKHR( static_cast<VkDevice>( m_device ) );
17356     }
17357 
17358     //=== VK_KHR_get_surface_capabilities2 ===
17359 
17360     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR
getSurfaceCapabilities2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const17361       PhysicalDevice::getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
17362     {
17363       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR &&
17364                          "Function <vkGetPhysicalDeviceSurfaceCapabilities2KHR> requires <VK_KHR_get_surface_capabilities2>" );
17365 
17366       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR surfaceCapabilities;
17367       VULKAN_HPP_NAMESPACE::Result                  result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17368         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17369                                                                      reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
17370                                                                      reinterpret_cast<VkSurfaceCapabilities2KHR *>( &surfaceCapabilities ) ) );
17371       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" );
17372 
17373       return surfaceCapabilities;
17374     }
17375 
17376     template <typename X, typename Y, typename... Z>
17377     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getSurfaceCapabilities2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const17378       PhysicalDevice::getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
17379     {
17380       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR &&
17381                          "Function <vkGetPhysicalDeviceSurfaceCapabilities2KHR> requires <VK_KHR_get_surface_capabilities2>" );
17382 
17383       StructureChain<X, Y, Z...>                      structureChain;
17384       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR & surfaceCapabilities = structureChain.template get<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR>();
17385       VULKAN_HPP_NAMESPACE::Result                    result              = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17386         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17387                                                                      reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
17388                                                                      reinterpret_cast<VkSurfaceCapabilities2KHR *>( &surfaceCapabilities ) ) );
17389       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" );
17390 
17391       return structureChain;
17392     }
17393 
17394     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>
getSurfaceFormats2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const17395       PhysicalDevice::getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
17396     {
17397       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR &&
17398                          "Function <vkGetPhysicalDeviceSurfaceFormats2KHR> requires <VK_KHR_get_surface_capabilities2>" );
17399 
17400       std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR> surfaceFormats;
17401       uint32_t                                             surfaceFormatCount;
17402       VULKAN_HPP_NAMESPACE::Result                         result;
17403       do
17404       {
17405         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17406           getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17407                                                                   reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
17408                                                                   &surfaceFormatCount,
17409                                                                   nullptr ) );
17410         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount )
17411         {
17412           surfaceFormats.resize( surfaceFormatCount );
17413           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17414             getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17415                                                                     reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
17416                                                                     &surfaceFormatCount,
17417                                                                     reinterpret_cast<VkSurfaceFormat2KHR *>( surfaceFormats.data() ) ) );
17418         }
17419       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
17420       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" );
17421       VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
17422       if ( surfaceFormatCount < surfaceFormats.size() )
17423       {
17424         surfaceFormats.resize( surfaceFormatCount );
17425       }
17426       return surfaceFormats;
17427     }
17428 
17429     template <typename StructureChain>
17430     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain>
getSurfaceFormats2KHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const17431       PhysicalDevice::getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
17432     {
17433       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR &&
17434                          "Function <vkGetPhysicalDeviceSurfaceFormats2KHR> requires <VK_KHR_get_surface_capabilities2>" );
17435 
17436       std::vector<StructureChain>                          structureChains;
17437       std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR> surfaceFormats;
17438       uint32_t                                             surfaceFormatCount;
17439       VULKAN_HPP_NAMESPACE::Result                         result;
17440       do
17441       {
17442         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17443           getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17444                                                                   reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
17445                                                                   &surfaceFormatCount,
17446                                                                   nullptr ) );
17447         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount )
17448         {
17449           structureChains.resize( surfaceFormatCount );
17450           surfaceFormats.resize( surfaceFormatCount );
17451           for ( uint32_t i = 0; i < surfaceFormatCount; i++ )
17452           {
17453             surfaceFormats[i].pNext = structureChains[i].template get<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>().pNext;
17454           }
17455           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17456             getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17457                                                                     reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
17458                                                                     &surfaceFormatCount,
17459                                                                     reinterpret_cast<VkSurfaceFormat2KHR *>( surfaceFormats.data() ) ) );
17460         }
17461       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
17462       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" );
17463       VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
17464       if ( surfaceFormatCount < surfaceFormats.size() )
17465       {
17466         structureChains.resize( surfaceFormatCount );
17467       }
17468       for ( uint32_t i = 0; i < surfaceFormatCount; i++ )
17469       {
17470         structureChains[i].template get<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>() = surfaceFormats[i];
17471       }
17472       return structureChains;
17473     }
17474 
17475     //=== VK_KHR_get_display_properties2 ===
17476 
getDisplayProperties2KHR() const17477     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR> PhysicalDevice::getDisplayProperties2KHR() const
17478     {
17479       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR &&
17480                          "Function <vkGetPhysicalDeviceDisplayProperties2KHR> requires <VK_KHR_get_display_properties2>" );
17481 
17482       std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR> properties;
17483       uint32_t                                                 propertyCount;
17484       VULKAN_HPP_NAMESPACE::Result                             result;
17485       do
17486       {
17487         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17488           getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
17489         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
17490         {
17491           properties.resize( propertyCount );
17492           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR(
17493             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkDisplayProperties2KHR *>( properties.data() ) ) );
17494         }
17495       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
17496       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" );
17497       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
17498       if ( propertyCount < properties.size() )
17499       {
17500         properties.resize( propertyCount );
17501       }
17502       return properties;
17503     }
17504 
getDisplayPlaneProperties2KHR() const17505     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR> PhysicalDevice::getDisplayPlaneProperties2KHR() const
17506     {
17507       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR &&
17508                          "Function <vkGetPhysicalDeviceDisplayPlaneProperties2KHR> requires <VK_KHR_get_display_properties2>" );
17509 
17510       std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR> properties;
17511       uint32_t                                                      propertyCount;
17512       VULKAN_HPP_NAMESPACE::Result                                  result;
17513       do
17514       {
17515         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17516           getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
17517         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
17518         {
17519           properties.resize( propertyCount );
17520           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
17521             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkDisplayPlaneProperties2KHR *>( properties.data() ) ) );
17522         }
17523       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
17524       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" );
17525       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
17526       if ( propertyCount < properties.size() )
17527       {
17528         properties.resize( propertyCount );
17529       }
17530       return properties;
17531     }
17532 
getModeProperties2() const17533     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR> DisplayKHR::getModeProperties2() const
17534     {
17535       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModeProperties2KHR &&
17536                          "Function <vkGetDisplayModeProperties2KHR> requires <VK_KHR_get_display_properties2>" );
17537 
17538       std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR> properties;
17539       uint32_t                                                     propertyCount;
17540       VULKAN_HPP_NAMESPACE::Result                                 result;
17541       do
17542       {
17543         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayModeProperties2KHR(
17544           static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_display ), &propertyCount, nullptr ) );
17545         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
17546         {
17547           properties.resize( propertyCount );
17548           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17549             getDispatcher()->vkGetDisplayModeProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17550                                                              static_cast<VkDisplayKHR>( m_display ),
17551                                                              &propertyCount,
17552                                                              reinterpret_cast<VkDisplayModeProperties2KHR *>( properties.data() ) ) );
17553         }
17554       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
17555       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::getModeProperties2" );
17556       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
17557       if ( propertyCount < properties.size() )
17558       {
17559         properties.resize( propertyCount );
17560       }
17561       return properties;
17562     }
17563 
17564     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR
getDisplayPlaneCapabilities2KHR(const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo) const17565       PhysicalDevice::getDisplayPlaneCapabilities2KHR( const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR & displayPlaneInfo ) const
17566     {
17567       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilities2KHR &&
17568                          "Function <vkGetDisplayPlaneCapabilities2KHR> requires <VK_KHR_get_display_properties2>" );
17569 
17570       VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR capabilities;
17571       VULKAN_HPP_NAMESPACE::Result                       result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17572         getDispatcher()->vkGetDisplayPlaneCapabilities2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17573                                                             reinterpret_cast<const VkDisplayPlaneInfo2KHR *>( &displayPlaneInfo ),
17574                                                             reinterpret_cast<VkDisplayPlaneCapabilities2KHR *>( &capabilities ) ) );
17575       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" );
17576 
17577       return capabilities;
17578     }
17579 
17580 #  if defined( VK_USE_PLATFORM_IOS_MVK )
17581     //=== VK_MVK_ios_surface ===
17582 
17583     VULKAN_HPP_NODISCARD
17584       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createIOSSurfaceMVK(VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const17585                         Instance::createIOSSurfaceMVK( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const &                           createInfo,
17586                                      VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
17587       VULKAN_HPP_RAII_CREATE_NOEXCEPT
17588     {
17589       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
17590       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateIOSSurfaceMVK(
17591         static_cast<VkInstance>( m_instance ),
17592         reinterpret_cast<const VkIOSSurfaceCreateInfoMVK *>( &createInfo ),
17593         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
17594         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
17595       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
17596       {
17597 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
17598         return VULKAN_HPP_UNEXPECTED( result );
17599 #    else
17600         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createIOSSurfaceMVK" );
17601 #    endif
17602       }
17603 
17604       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
17605     }
17606 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
17607 
17608 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
17609     //=== VK_MVK_macos_surface ===
17610 
17611     VULKAN_HPP_NODISCARD
17612       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createMacOSSurfaceMVK(VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const17613                         Instance::createMacOSSurfaceMVK( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const &                         createInfo,
17614                                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
17615       VULKAN_HPP_RAII_CREATE_NOEXCEPT
17616     {
17617       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
17618       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateMacOSSurfaceMVK(
17619         static_cast<VkInstance>( m_instance ),
17620         reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK *>( &createInfo ),
17621         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
17622         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
17623       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
17624       {
17625 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
17626         return VULKAN_HPP_UNEXPECTED( result );
17627 #    else
17628         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createMacOSSurfaceMVK" );
17629 #    endif
17630       }
17631 
17632       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
17633     }
17634 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
17635 
17636     //=== VK_EXT_debug_utils ===
17637 
setDebugUtilsObjectNameEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo) const17638     VULKAN_HPP_INLINE void Device::setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT & nameInfo ) const
17639     {
17640       VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectNameEXT && "Function <vkSetDebugUtilsObjectNameEXT> requires <VK_EXT_debug_utils>" );
17641 
17642       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetDebugUtilsObjectNameEXT(
17643         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>( &nameInfo ) ) );
17644       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" );
17645     }
17646 
setDebugUtilsObjectTagEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo) const17647     VULKAN_HPP_INLINE void Device::setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT & tagInfo ) const
17648     {
17649       VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectTagEXT && "Function <vkSetDebugUtilsObjectTagEXT> requires <VK_EXT_debug_utils>" );
17650 
17651       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17652         getDispatcher()->vkSetDebugUtilsObjectTagEXT( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>( &tagInfo ) ) );
17653       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" );
17654     }
17655 
beginDebugUtilsLabelEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo) const17656     VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
17657     {
17658       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBeginDebugUtilsLabelEXT && "Function <vkQueueBeginDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
17659 
17660       getDispatcher()->vkQueueBeginDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
17661     }
17662 
endDebugUtilsLabelEXT() const17663     VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT
17664     {
17665       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueEndDebugUtilsLabelEXT && "Function <vkQueueEndDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
17666 
17667       getDispatcher()->vkQueueEndDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ) );
17668     }
17669 
insertDebugUtilsLabelEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo) const17670     VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
17671     {
17672       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueInsertDebugUtilsLabelEXT && "Function <vkQueueInsertDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
17673 
17674       getDispatcher()->vkQueueInsertDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
17675     }
17676 
beginDebugUtilsLabelEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo) const17677     VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
17678     {
17679       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginDebugUtilsLabelEXT && "Function <vkCmdBeginDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
17680 
17681       getDispatcher()->vkCmdBeginDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
17682                                                      reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
17683     }
17684 
endDebugUtilsLabelEXT() const17685     VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT
17686     {
17687       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndDebugUtilsLabelEXT && "Function <vkCmdEndDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
17688 
17689       getDispatcher()->vkCmdEndDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
17690     }
17691 
insertDebugUtilsLabelEXT(const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo) const17692     VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
17693     {
17694       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInsertDebugUtilsLabelEXT && "Function <vkCmdInsertDebugUtilsLabelEXT> requires <VK_EXT_debug_utils>" );
17695 
17696       getDispatcher()->vkCmdInsertDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
17697                                                       reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
17698     }
17699 
17700     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
17701       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugUtilsMessengerEXT>::Type
createDebugUtilsMessengerEXT(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const17702       Instance::createDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const &                  createInfo,
17703                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
17704       VULKAN_HPP_RAII_CREATE_NOEXCEPT
17705     {
17706       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger;
17707       VULKAN_HPP_NAMESPACE::Result                 result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDebugUtilsMessengerEXT(
17708         static_cast<VkInstance>( m_instance ),
17709         reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>( &createInfo ),
17710         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
17711         reinterpret_cast<VkDebugUtilsMessengerEXT *>( &messenger ) ) );
17712       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
17713       {
17714 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
17715         return VULKAN_HPP_UNEXPECTED( result );
17716 #  else
17717         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createDebugUtilsMessengerEXT" );
17718 #  endif
17719       }
17720 
17721       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DebugUtilsMessengerEXT(
17722         *this, *reinterpret_cast<VkDebugUtilsMessengerEXT *>( &messenger ), allocator );
17723     }
17724 
17725     VULKAN_HPP_INLINE void
submitDebugUtilsMessageEXT(VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes,const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData) const17726       Instance::submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT       messageSeverity,
17727                                             VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT              messageTypes,
17728                                             const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT
17729     {
17730       VULKAN_HPP_ASSERT( getDispatcher()->vkSubmitDebugUtilsMessageEXT && "Function <vkSubmitDebugUtilsMessageEXT> requires <VK_EXT_debug_utils>" );
17731 
17732       getDispatcher()->vkSubmitDebugUtilsMessageEXT( static_cast<VkInstance>( m_instance ),
17733                                                      static_cast<VkDebugUtilsMessageSeverityFlagBitsEXT>( messageSeverity ),
17734                                                      static_cast<VkDebugUtilsMessageTypeFlagsEXT>( messageTypes ),
17735                                                      reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT *>( &callbackData ) );
17736     }
17737 
17738 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
17739     //=== VK_ANDROID_external_memory_android_hardware_buffer ===
17740 
17741     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID
getAndroidHardwareBufferPropertiesANDROID(const struct AHardwareBuffer & buffer) const17742                                            Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const
17743     {
17744       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID &&
17745                          "Function <vkGetAndroidHardwareBufferPropertiesANDROID> requires <VK_ANDROID_external_memory_android_hardware_buffer>" );
17746 
17747       VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID properties;
17748       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
17749         static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( &properties ) ) );
17750       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" );
17751 
17752       return properties;
17753     }
17754 
17755     template <typename X, typename Y, typename... Z>
17756     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getAndroidHardwareBufferPropertiesANDROID(const struct AHardwareBuffer & buffer) const17757                                            Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const
17758     {
17759       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID &&
17760                          "Function <vkGetAndroidHardwareBufferPropertiesANDROID> requires <VK_ANDROID_external_memory_android_hardware_buffer>" );
17761 
17762       StructureChain<X, Y, Z...>                                     structureChain;
17763       VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID & properties =
17764         structureChain.template get<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID>();
17765       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
17766         static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( &properties ) ) );
17767       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" );
17768 
17769       return structureChain;
17770     }
17771 
17772     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE struct AHardwareBuffer *
getMemoryAndroidHardwareBufferANDROID(const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info) const17773       Device::getMemoryAndroidHardwareBufferANDROID( const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID & info ) const
17774     {
17775       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID &&
17776                          "Function <vkGetMemoryAndroidHardwareBufferANDROID> requires <VK_ANDROID_external_memory_android_hardware_buffer>" );
17777 
17778       struct AHardwareBuffer *     buffer;
17779       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID(
17780         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID *>( &info ), &buffer ) );
17781       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" );
17782 
17783       return buffer;
17784     }
17785 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
17786 
17787 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
17788     //=== VK_AMDX_shader_enqueue ===
17789 
17790     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
17791       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
createExecutionGraphPipelinesAMDX(VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const17792       Device::createExecutionGraphPipelinesAMDX(
17793         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
17794         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX> const &         createInfos,
17795         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator ) const
17796     {
17797       std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
17798       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateExecutionGraphPipelinesAMDX(
17799         static_cast<VkDevice>( m_device ),
17800         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
17801         createInfos.size(),
17802         reinterpret_cast<const VkExecutionGraphPipelineCreateInfoAMDX *>( createInfos.data() ),
17803         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
17804         reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
17805       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
17806       {
17807 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
17808         return VULKAN_HPP_UNEXPECTED( result );
17809 #    else
17810         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createExecutionGraphPipelinesAMDX" );
17811 #    endif
17812       }
17813 
17814       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline> pipelinesRAII;
17815       pipelinesRAII.reserve( pipelines.size() );
17816       for ( auto & pipeline : pipelines )
17817       {
17818         pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
17819       }
17820       return pipelinesRAII;
17821     }
17822 
17823     VULKAN_HPP_NODISCARD
17824       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
createExecutionGraphPipelineAMDX(VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const17825                         Device::createExecutionGraphPipelineAMDX(
17826         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
17827         VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX const &                                           createInfo,
17828         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
17829     {
17830       VULKAN_HPP_NAMESPACE::Pipeline pipeline;
17831       VULKAN_HPP_NAMESPACE::Result   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateExecutionGraphPipelinesAMDX(
17832         static_cast<VkDevice>( m_device ),
17833         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
17834         1,
17835         reinterpret_cast<const VkExecutionGraphPipelineCreateInfoAMDX *>( &createInfo ),
17836         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
17837         reinterpret_cast<VkPipeline *>( &pipeline ) ) );
17838       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
17839       {
17840 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
17841         return VULKAN_HPP_UNEXPECTED( result );
17842 #    else
17843         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createExecutionGraphPipelineAMDX" );
17844 #    endif
17845       }
17846 
17847       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
17848     }
17849 
getExecutionGraphScratchSizeAMDX() const17850     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX Pipeline::getExecutionGraphScratchSizeAMDX() const
17851     {
17852       VULKAN_HPP_ASSERT( getDispatcher()->vkGetExecutionGraphPipelineScratchSizeAMDX &&
17853                          "Function <vkGetExecutionGraphPipelineScratchSizeAMDX> requires <VK_AMDX_shader_enqueue>" );
17854 
17855       VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX sizeInfo;
17856       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetExecutionGraphPipelineScratchSizeAMDX(
17857         static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), reinterpret_cast<VkExecutionGraphPipelineScratchSizeAMDX *>( &sizeInfo ) ) );
17858       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getExecutionGraphScratchSizeAMDX" );
17859 
17860       return sizeInfo;
17861     }
17862 
17863     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t
getExecutionGraphNodeIndexAMDX(const VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX & nodeInfo) const17864       Pipeline::getExecutionGraphNodeIndexAMDX( const VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX & nodeInfo ) const
17865     {
17866       VULKAN_HPP_ASSERT( getDispatcher()->vkGetExecutionGraphPipelineNodeIndexAMDX &&
17867                          "Function <vkGetExecutionGraphPipelineNodeIndexAMDX> requires <VK_AMDX_shader_enqueue>" );
17868 
17869       uint32_t                     nodeIndex;
17870       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
17871         getDispatcher()->vkGetExecutionGraphPipelineNodeIndexAMDX( static_cast<VkDevice>( m_device ),
17872                                                                    static_cast<VkPipeline>( m_pipeline ),
17873                                                                    reinterpret_cast<const VkPipelineShaderStageNodeCreateInfoAMDX *>( &nodeInfo ),
17874                                                                    &nodeIndex ) );
17875       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getExecutionGraphNodeIndexAMDX" );
17876 
17877       return nodeIndex;
17878     }
17879 
initializeGraphScratchMemoryAMDX(VULKAN_HPP_NAMESPACE::DeviceAddress scratch) const17880     VULKAN_HPP_INLINE void CommandBuffer::initializeGraphScratchMemoryAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress scratch ) const VULKAN_HPP_NOEXCEPT
17881     {
17882       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInitializeGraphScratchMemoryAMDX &&
17883                          "Function <vkCmdInitializeGraphScratchMemoryAMDX> requires <VK_AMDX_shader_enqueue>" );
17884 
17885       getDispatcher()->vkCmdInitializeGraphScratchMemoryAMDX( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkDeviceAddress>( scratch ) );
17886     }
17887 
dispatchGraphAMDX(VULKAN_HPP_NAMESPACE::DeviceAddress scratch,const VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX & countInfo) const17888     VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress                      scratch,
17889                                                              const VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX & countInfo ) const VULKAN_HPP_NOEXCEPT
17890     {
17891       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphAMDX && "Function <vkCmdDispatchGraphAMDX> requires <VK_AMDX_shader_enqueue>" );
17892 
17893       getDispatcher()->vkCmdDispatchGraphAMDX( static_cast<VkCommandBuffer>( m_commandBuffer ),
17894                                                static_cast<VkDeviceAddress>( scratch ),
17895                                                reinterpret_cast<const VkDispatchGraphCountInfoAMDX *>( &countInfo ) );
17896     }
17897 
17898     VULKAN_HPP_INLINE void
dispatchGraphIndirectAMDX(VULKAN_HPP_NAMESPACE::DeviceAddress scratch,const VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX & countInfo) const17899       CommandBuffer::dispatchGraphIndirectAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress                      scratch,
17900                                                 const VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX & countInfo ) const VULKAN_HPP_NOEXCEPT
17901     {
17902       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphIndirectAMDX && "Function <vkCmdDispatchGraphIndirectAMDX> requires <VK_AMDX_shader_enqueue>" );
17903 
17904       getDispatcher()->vkCmdDispatchGraphIndirectAMDX( static_cast<VkCommandBuffer>( m_commandBuffer ),
17905                                                        static_cast<VkDeviceAddress>( scratch ),
17906                                                        reinterpret_cast<const VkDispatchGraphCountInfoAMDX *>( &countInfo ) );
17907     }
17908 
dispatchGraphIndirectCountAMDX(VULKAN_HPP_NAMESPACE::DeviceAddress scratch,VULKAN_HPP_NAMESPACE::DeviceAddress countInfo) const17909     VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphIndirectCountAMDX( VULKAN_HPP_NAMESPACE::DeviceAddress scratch,
17910                                                                           VULKAN_HPP_NAMESPACE::DeviceAddress countInfo ) const VULKAN_HPP_NOEXCEPT
17911     {
17912       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphIndirectCountAMDX &&
17913                          "Function <vkCmdDispatchGraphIndirectCountAMDX> requires <VK_AMDX_shader_enqueue>" );
17914 
17915       getDispatcher()->vkCmdDispatchGraphIndirectCountAMDX(
17916         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkDeviceAddress>( scratch ), static_cast<VkDeviceAddress>( countInfo ) );
17917     }
17918 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
17919 
17920     //=== VK_EXT_sample_locations ===
17921 
17922     VULKAN_HPP_INLINE void
setSampleLocationsEXT(const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo) const17923       CommandBuffer::setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT
17924     {
17925       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEXT && "Function <vkCmdSetSampleLocationsEXT> requires <VK_EXT_sample_locations>" );
17926 
17927       getDispatcher()->vkCmdSetSampleLocationsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
17928                                                    reinterpret_cast<const VkSampleLocationsInfoEXT *>( &sampleLocationsInfo ) );
17929     }
17930 
17931     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT
getMultisamplePropertiesEXT(VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples) const17932       PhysicalDevice::getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT
17933     {
17934       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT &&
17935                          "Function <vkGetPhysicalDeviceMultisamplePropertiesEXT> requires <VK_EXT_sample_locations>" );
17936 
17937       VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT multisampleProperties;
17938       getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ),
17939                                                                     static_cast<VkSampleCountFlagBits>( samples ),
17940                                                                     reinterpret_cast<VkMultisamplePropertiesEXT *>( &multisampleProperties ) );
17941 
17942       return multisampleProperties;
17943     }
17944 
17945     //=== VK_KHR_get_memory_requirements2 ===
17946 
17947     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info) const17948       Device::getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
17949     {
17950       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2KHR &&
17951                          "Function <vkGetImageMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
17952 
17953       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
17954       getDispatcher()->vkGetImageMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
17955                                                          reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
17956                                                          reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
17957 
17958       return memoryRequirements;
17959     }
17960 
17961     template <typename X, typename Y, typename... Z>
17962     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getImageMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info) const17963       Device::getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
17964     {
17965       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2KHR &&
17966                          "Function <vkGetImageMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
17967 
17968       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
17969       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
17970       getDispatcher()->vkGetImageMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
17971                                                          reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
17972                                                          reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
17973 
17974       return structureChain;
17975     }
17976 
17977     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info) const17978       Device::getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
17979     {
17980       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2KHR &&
17981                          "Function <vkGetBufferMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
17982 
17983       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
17984       getDispatcher()->vkGetBufferMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
17985                                                           reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
17986                                                           reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
17987 
17988       return memoryRequirements;
17989     }
17990 
17991     template <typename X, typename Y, typename... Z>
17992     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getBufferMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info) const17993       Device::getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
17994     {
17995       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2KHR &&
17996                          "Function <vkGetBufferMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
17997 
17998       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
17999       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
18000       getDispatcher()->vkGetBufferMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
18001                                                           reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
18002                                                           reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
18003 
18004       return structureChain;
18005     }
18006 
18007     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirements2KHR(const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info) const18008       Device::getImageSparseMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 & info ) const
18009     {
18010       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements2KHR &&
18011                          "Function <vkGetImageSparseMemoryRequirements2KHR> requires <VK_KHR_get_memory_requirements2> or <VK_VERSION_1_1>" );
18012 
18013       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements;
18014       uint32_t                                                          sparseMemoryRequirementCount;
18015       getDispatcher()->vkGetImageSparseMemoryRequirements2KHR(
18016         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ), &sparseMemoryRequirementCount, nullptr );
18017       sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
18018       getDispatcher()->vkGetImageSparseMemoryRequirements2KHR( static_cast<VkDevice>( m_device ),
18019                                                                reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
18020                                                                &sparseMemoryRequirementCount,
18021                                                                reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
18022 
18023       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
18024       if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
18025       {
18026         sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
18027       }
18028       return sparseMemoryRequirements;
18029     }
18030 
18031     //=== VK_KHR_acceleration_structure ===
18032 
18033     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
18034       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureKHR>::Type
createAccelerationStructureKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const18035       Device::createAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const &                createInfo,
18036                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
18037       VULKAN_HPP_RAII_CREATE_NOEXCEPT
18038     {
18039       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure;
18040       VULKAN_HPP_NAMESPACE::Result                   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAccelerationStructureKHR(
18041         static_cast<VkDevice>( m_device ),
18042         reinterpret_cast<const VkAccelerationStructureCreateInfoKHR *>( &createInfo ),
18043         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
18044         reinterpret_cast<VkAccelerationStructureKHR *>( &accelerationStructure ) ) );
18045       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
18046       {
18047 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
18048         return VULKAN_HPP_UNEXPECTED( result );
18049 #  else
18050         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createAccelerationStructureKHR" );
18051 #  endif
18052       }
18053 
18054       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureKHR(
18055         *this, *reinterpret_cast<VkAccelerationStructureKHR *>( &accelerationStructure ), allocator );
18056     }
18057 
buildAccelerationStructuresKHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos) const18058     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR(
18059       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const &      infos,
18060       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos ) const
18061     {
18062       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructuresKHR &&
18063                          "Function <vkCmdBuildAccelerationStructuresKHR> requires <VK_KHR_acceleration_structure>" );
18064 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
18065       VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() );
18066 #  else
18067       if ( infos.size() != pBuildRangeInfos.size() )
18068       {
18069         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" );
18070       }
18071 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
18072 
18073       getDispatcher()->vkCmdBuildAccelerationStructuresKHR(
18074         static_cast<VkCommandBuffer>( m_commandBuffer ),
18075         infos.size(),
18076         reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
18077         reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR * const *>( pBuildRangeInfos.data() ) );
18078     }
18079 
buildAccelerationStructuresIndirectKHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const & indirectDeviceAddresses,VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const & indirectStrides,VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts) const18080     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR(
18081       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
18082       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const &                             indirectDeviceAddresses,
18083       VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const &                                                        indirectStrides,
18084       VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t * const> const &                                                pMaxPrimitiveCounts ) const
18085     {
18086       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR &&
18087                          "Function <vkCmdBuildAccelerationStructuresIndirectKHR> requires <VK_KHR_acceleration_structure>" );
18088 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
18089       VULKAN_HPP_ASSERT( infos.size() == indirectDeviceAddresses.size() );
18090       VULKAN_HPP_ASSERT( infos.size() == indirectStrides.size() );
18091       VULKAN_HPP_ASSERT( infos.size() == pMaxPrimitiveCounts.size() );
18092 #  else
18093       if ( infos.size() != indirectDeviceAddresses.size() )
18094       {
18095         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
18096                           "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectDeviceAddresses.size()" );
18097       }
18098       if ( infos.size() != indirectStrides.size() )
18099       {
18100         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectStrides.size()" );
18101       }
18102       if ( infos.size() != pMaxPrimitiveCounts.size() )
18103       {
18104         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != pMaxPrimitiveCounts.size()" );
18105       }
18106 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
18107 
18108       getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
18109                                                                     infos.size(),
18110                                                                     reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
18111                                                                     reinterpret_cast<const VkDeviceAddress *>( indirectDeviceAddresses.data() ),
18112                                                                     indirectStrides.data(),
18113                                                                     pMaxPrimitiveCounts.data() );
18114     }
18115 
buildAccelerationStructuresKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos) const18116     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::buildAccelerationStructuresKHR(
18117       VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                                                           deferredOperation,
18118       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const &      infos,
18119       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos ) const
18120     {
18121       VULKAN_HPP_ASSERT( getDispatcher()->vkBuildAccelerationStructuresKHR &&
18122                          "Function <vkBuildAccelerationStructuresKHR> requires <VK_KHR_acceleration_structure>" );
18123 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
18124       VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() );
18125 #  else
18126       if ( infos.size() != pBuildRangeInfos.size() )
18127       {
18128         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" );
18129       }
18130 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
18131 
18132       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBuildAccelerationStructuresKHR(
18133         static_cast<VkDevice>( m_device ),
18134         static_cast<VkDeferredOperationKHR>( deferredOperation ),
18135         infos.size(),
18136         reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
18137         reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR * const *>( pBuildRangeInfos.data() ) ) );
18138       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
18139                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR",
18140                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
18141                                                    VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR,
18142                                                    VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } );
18143 
18144       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
18145     }
18146 
18147     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyAccelerationStructureKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info) const18148                                            Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                     deferredOperation,
18149                                             const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const
18150     {
18151       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyAccelerationStructureKHR &&
18152                          "Function <vkCopyAccelerationStructureKHR> requires <VK_KHR_acceleration_structure>" );
18153 
18154       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18155         getDispatcher()->vkCopyAccelerationStructureKHR( static_cast<VkDevice>( m_device ),
18156                                                          static_cast<VkDeferredOperationKHR>( deferredOperation ),
18157                                                          reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( &info ) ) );
18158       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
18159                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR",
18160                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
18161                                                    VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR,
18162                                                    VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } );
18163 
18164       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
18165     }
18166 
18167     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyAccelerationStructureToMemoryKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info) const18168                                            Device::copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                             deferredOperation,
18169                                                     const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const
18170     {
18171       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyAccelerationStructureToMemoryKHR &&
18172                          "Function <vkCopyAccelerationStructureToMemoryKHR> requires <VK_KHR_acceleration_structure>" );
18173 
18174       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18175         getDispatcher()->vkCopyAccelerationStructureToMemoryKHR( static_cast<VkDevice>( m_device ),
18176                                                                  static_cast<VkDeferredOperationKHR>( deferredOperation ),
18177                                                                  reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( &info ) ) );
18178       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
18179                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR",
18180                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
18181                                                    VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR,
18182                                                    VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } );
18183 
18184       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
18185     }
18186 
18187     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyMemoryToAccelerationStructureKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info) const18188                                            Device::copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                             deferredOperation,
18189                                                     const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const
18190     {
18191       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToAccelerationStructureKHR &&
18192                          "Function <vkCopyMemoryToAccelerationStructureKHR> requires <VK_KHR_acceleration_structure>" );
18193 
18194       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18195         getDispatcher()->vkCopyMemoryToAccelerationStructureKHR( static_cast<VkDevice>( m_device ),
18196                                                                  static_cast<VkDeferredOperationKHR>( deferredOperation ),
18197                                                                  reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( &info ) ) );
18198       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
18199                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR",
18200                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
18201                                                    VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR,
18202                                                    VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } );
18203 
18204       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
18205     }
18206 
18207     template <typename DataType>
writeAccelerationStructuresPropertiesKHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,size_t dataSize,size_t stride) const18208     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<DataType> Device::writeAccelerationStructuresPropertiesKHR(
18209       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
18210       VULKAN_HPP_NAMESPACE::QueryType                                                                queryType,
18211       size_t                                                                                         dataSize,
18212       size_t                                                                                         stride ) const
18213     {
18214       VULKAN_HPP_ASSERT( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR &&
18215                          "Function <vkWriteAccelerationStructuresPropertiesKHR> requires <VK_KHR_acceleration_structure>" );
18216 
18217       VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
18218       std::vector<DataType>        data( dataSize / sizeof( DataType ) );
18219       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18220         getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( static_cast<VkDevice>( m_device ),
18221                                                                      accelerationStructures.size(),
18222                                                                      reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
18223                                                                      static_cast<VkQueryType>( queryType ),
18224                                                                      data.size() * sizeof( DataType ),
18225                                                                      reinterpret_cast<void *>( data.data() ),
18226                                                                      stride ) );
18227       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" );
18228 
18229       return data;
18230     }
18231 
18232     template <typename DataType>
writeAccelerationStructuresPropertyKHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,size_t stride) const18233     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType Device::writeAccelerationStructuresPropertyKHR(
18234       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
18235       VULKAN_HPP_NAMESPACE::QueryType                                                                queryType,
18236       size_t                                                                                         stride ) const
18237     {
18238       VULKAN_HPP_ASSERT( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR &&
18239                          "Function <vkWriteAccelerationStructuresPropertiesKHR> requires <VK_KHR_acceleration_structure>" );
18240 
18241       DataType                     data;
18242       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18243         getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( static_cast<VkDevice>( m_device ),
18244                                                                      accelerationStructures.size(),
18245                                                                      reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
18246                                                                      static_cast<VkQueryType>( queryType ),
18247                                                                      sizeof( DataType ),
18248                                                                      reinterpret_cast<void *>( &data ),
18249                                                                      stride ) );
18250       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" );
18251 
18252       return data;
18253     }
18254 
18255     VULKAN_HPP_INLINE void
copyAccelerationStructureKHR(const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info) const18256       CommandBuffer::copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
18257     {
18258       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureKHR &&
18259                          "Function <vkCmdCopyAccelerationStructureKHR> requires <VK_KHR_acceleration_structure>" );
18260 
18261       getDispatcher()->vkCmdCopyAccelerationStructureKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
18262                                                           reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( &info ) );
18263     }
18264 
copyAccelerationStructureToMemoryKHR(const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info) const18265     VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR(
18266       const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
18267     {
18268       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR &&
18269                          "Function <vkCmdCopyAccelerationStructureToMemoryKHR> requires <VK_KHR_acceleration_structure>" );
18270 
18271       getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
18272                                                                   reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( &info ) );
18273     }
18274 
copyMemoryToAccelerationStructureKHR(const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info) const18275     VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR(
18276       const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
18277     {
18278       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR &&
18279                          "Function <vkCmdCopyMemoryToAccelerationStructureKHR> requires <VK_KHR_acceleration_structure>" );
18280 
18281       getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
18282                                                                   reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( &info ) );
18283     }
18284 
18285     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getAccelerationStructureAddressKHR(const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info) const18286       Device::getAccelerationStructureAddressKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
18287     {
18288       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR &&
18289                          "Function <vkGetAccelerationStructureDeviceAddressKHR> requires <VK_KHR_acceleration_structure>" );
18290 
18291       VkDeviceAddress result = getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR(
18292         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAccelerationStructureDeviceAddressInfoKHR *>( &info ) );
18293 
18294       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( result );
18295     }
18296 
writeAccelerationStructuresPropertiesKHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery) const18297     VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR(
18298       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
18299       VULKAN_HPP_NAMESPACE::QueryType                                                                queryType,
18300       VULKAN_HPP_NAMESPACE::QueryPool                                                                queryPool,
18301       uint32_t                                                                                       firstQuery ) const VULKAN_HPP_NOEXCEPT
18302     {
18303       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR &&
18304                          "Function <vkCmdWriteAccelerationStructuresPropertiesKHR> requires <VK_KHR_acceleration_structure>" );
18305 
18306       getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
18307                                                                       accelerationStructures.size(),
18308                                                                       reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
18309                                                                       static_cast<VkQueryType>( queryType ),
18310                                                                       static_cast<VkQueryPool>( queryPool ),
18311                                                                       firstQuery );
18312     }
18313 
getAccelerationStructureCompatibilityKHR(const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo) const18314     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR Device::getAccelerationStructureCompatibilityKHR(
18315       const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR & versionInfo ) const VULKAN_HPP_NOEXCEPT
18316     {
18317       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR &&
18318                          "Function <vkGetDeviceAccelerationStructureCompatibilityKHR> requires <VK_KHR_acceleration_structure>" );
18319 
18320       VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR compatibility;
18321       getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR( static_cast<VkDevice>( m_device ),
18322                                                                          reinterpret_cast<const VkAccelerationStructureVersionInfoKHR *>( &versionInfo ),
18323                                                                          reinterpret_cast<VkAccelerationStructureCompatibilityKHR *>( &compatibility ) );
18324 
18325       return compatibility;
18326     }
18327 
18328     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR
getAccelerationStructureBuildSizesKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType,const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo,VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const & maxPrimitiveCounts) const18329                                            Device::getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR                 buildType,
18330                                                      const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR & buildInfo,
18331                                                      VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const &                maxPrimitiveCounts ) const
18332     {
18333       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureBuildSizesKHR &&
18334                          "Function <vkGetAccelerationStructureBuildSizesKHR> requires <VK_KHR_acceleration_structure>" );
18335 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
18336       VULKAN_HPP_ASSERT( maxPrimitiveCounts.size() == buildInfo.geometryCount );
18337 #  else
18338       if ( maxPrimitiveCounts.size() != buildInfo.geometryCount )
18339       {
18340         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureBuildSizesKHR: maxPrimitiveCounts.size() != buildInfo.geometryCount" );
18341       }
18342 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
18343 
18344       VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR sizeInfo;
18345       getDispatcher()->vkGetAccelerationStructureBuildSizesKHR( static_cast<VkDevice>( m_device ),
18346                                                                 static_cast<VkAccelerationStructureBuildTypeKHR>( buildType ),
18347                                                                 reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( &buildInfo ),
18348                                                                 maxPrimitiveCounts.data(),
18349                                                                 reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( &sizeInfo ) );
18350 
18351       return sizeInfo;
18352     }
18353 
18354     //=== VK_KHR_ray_tracing_pipeline ===
18355 
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) const18356     VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
18357                                                         const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,
18358                                                         const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,
18359                                                         const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,
18360                                                         uint32_t                                                    width,
18361                                                         uint32_t                                                    height,
18362                                                         uint32_t                                                    depth ) const VULKAN_HPP_NOEXCEPT
18363     {
18364       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysKHR && "Function <vkCmdTraceRaysKHR> requires <VK_KHR_ray_tracing_pipeline>" );
18365 
18366       getDispatcher()->vkCmdTraceRaysKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
18367                                           reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &raygenShaderBindingTable ),
18368                                           reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &missShaderBindingTable ),
18369                                           reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &hitShaderBindingTable ),
18370                                           reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &callableShaderBindingTable ),
18371                                           width,
18372                                           height,
18373                                           depth );
18374     }
18375 
18376     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
18377       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
createRayTracingPipelinesKHR(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) const18378       Device::createRayTracingPipelinesKHR(
18379         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
18380         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &        pipelineCache,
18381         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR> const &                     createInfos,
18382         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                                     allocator ) const
18383     {
18384       std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
18385       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRayTracingPipelinesKHR(
18386         static_cast<VkDevice>( m_device ),
18387         deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
18388         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
18389         createInfos.size(),
18390         reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( createInfos.data() ),
18391         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
18392         reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
18393       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
18394            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
18395       {
18396 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
18397         return VULKAN_HPP_UNEXPECTED( result );
18398 #  else
18399         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createRayTracingPipelinesKHR" );
18400 #  endif
18401       }
18402 
18403       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline> pipelinesRAII;
18404       pipelinesRAII.reserve( pipelines.size() );
18405       for ( auto & pipeline : pipelines )
18406       {
18407         pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
18408       }
18409       return pipelinesRAII;
18410     }
18411 
18412     VULKAN_HPP_NODISCARD
18413       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
createRayTracingPipelineKHR(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) const18414                         Device::createRayTracingPipelineKHR(
18415         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
18416         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &        pipelineCache,
18417         VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const &                                                       createInfo,
18418         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
18419     {
18420       VULKAN_HPP_NAMESPACE::Pipeline pipeline;
18421       VULKAN_HPP_NAMESPACE::Result   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRayTracingPipelinesKHR(
18422         static_cast<VkDevice>( m_device ),
18423         deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
18424         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
18425         1,
18426         reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( &createInfo ),
18427         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
18428         reinterpret_cast<VkPipeline *>( &pipeline ) ) );
18429       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
18430            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
18431       {
18432 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
18433         return VULKAN_HPP_UNEXPECTED( result );
18434 #  else
18435         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createRayTracingPipelineKHR" );
18436 #  endif
18437       }
18438 
18439       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
18440     }
18441 
18442     template <typename DataType>
18443     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<DataType>
getRayTracingShaderGroupHandlesKHR(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const18444                                            Pipeline::getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
18445     {
18446       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR &&
18447                          "Function <vkGetRayTracingShaderGroupHandlesKHR> requires <VK_KHR_ray_tracing_pipeline> or <VK_NV_ray_tracing>" );
18448 
18449       VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
18450       std::vector<DataType>        data( dataSize / sizeof( DataType ) );
18451       VULKAN_HPP_NAMESPACE::Result result =
18452         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
18453                                                                                                           static_cast<VkPipeline>( m_pipeline ),
18454                                                                                                           firstGroup,
18455                                                                                                           groupCount,
18456                                                                                                           data.size() * sizeof( DataType ),
18457                                                                                                           reinterpret_cast<void *>( data.data() ) ) );
18458       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesKHR" );
18459 
18460       return data;
18461     }
18462 
18463     template <typename DataType>
getRayTracingShaderGroupHandleKHR(uint32_t firstGroup,uint32_t groupCount) const18464     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType Pipeline::getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const
18465     {
18466       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR &&
18467                          "Function <vkGetRayTracingShaderGroupHandlesKHR> requires <VK_KHR_ray_tracing_pipeline> or <VK_NV_ray_tracing>" );
18468 
18469       DataType                     data;
18470       VULKAN_HPP_NAMESPACE::Result result =
18471         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
18472                                                                                                           static_cast<VkPipeline>( m_pipeline ),
18473                                                                                                           firstGroup,
18474                                                                                                           groupCount,
18475                                                                                                           sizeof( DataType ),
18476                                                                                                           reinterpret_cast<void *>( &data ) ) );
18477       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleKHR" );
18478 
18479       return data;
18480     }
18481 
18482     template <typename DataType>
18483     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<DataType>
getRayTracingCaptureReplayShaderGroupHandlesKHR(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const18484       Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
18485     {
18486       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR &&
18487                          "Function <vkGetRayTracingCaptureReplayShaderGroupHandlesKHR> requires <VK_KHR_ray_tracing_pipeline>" );
18488 
18489       VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
18490       std::vector<DataType>        data( dataSize / sizeof( DataType ) );
18491       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18492         getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
18493                                                                             static_cast<VkPipeline>( m_pipeline ),
18494                                                                             firstGroup,
18495                                                                             groupCount,
18496                                                                             data.size() * sizeof( DataType ),
18497                                                                             reinterpret_cast<void *>( data.data() ) ) );
18498       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR" );
18499 
18500       return data;
18501     }
18502 
18503     template <typename DataType>
getRayTracingCaptureReplayShaderGroupHandleKHR(uint32_t firstGroup,uint32_t groupCount) const18504     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const
18505     {
18506       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR &&
18507                          "Function <vkGetRayTracingCaptureReplayShaderGroupHandlesKHR> requires <VK_KHR_ray_tracing_pipeline>" );
18508 
18509       DataType                     data;
18510       VULKAN_HPP_NAMESPACE::Result result =
18511         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
18512                                                                                                                        static_cast<VkPipeline>( m_pipeline ),
18513                                                                                                                        firstGroup,
18514                                                                                                                        groupCount,
18515                                                                                                                        sizeof( DataType ),
18516                                                                                                                        reinterpret_cast<void *>( &data ) ) );
18517       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR" );
18518 
18519       return data;
18520     }
18521 
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) const18522     VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
18523                                                                 const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & missShaderBindingTable,
18524                                                                 const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & hitShaderBindingTable,
18525                                                                 const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR & callableShaderBindingTable,
18526                                                                 VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT
18527     {
18528       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysIndirectKHR && "Function <vkCmdTraceRaysIndirectKHR> requires <VK_KHR_ray_tracing_pipeline>" );
18529 
18530       getDispatcher()->vkCmdTraceRaysIndirectKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
18531                                                   reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &raygenShaderBindingTable ),
18532                                                   reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &missShaderBindingTable ),
18533                                                   reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &hitShaderBindingTable ),
18534                                                   reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &callableShaderBindingTable ),
18535                                                   static_cast<VkDeviceAddress>( indirectDeviceAddress ) );
18536     }
18537 
18538     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize
getRayTracingShaderGroupStackSizeKHR(uint32_t group,VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader) const18539       Pipeline::getRayTracingShaderGroupStackSizeKHR( uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT
18540     {
18541       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR &&
18542                          "Function <vkGetRayTracingShaderGroupStackSizeKHR> requires <VK_KHR_ray_tracing_pipeline>" );
18543 
18544       VkDeviceSize result = getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR(
18545         static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), group, static_cast<VkShaderGroupShaderKHR>( groupShader ) );
18546 
18547       return static_cast<VULKAN_HPP_NAMESPACE::DeviceSize>( result );
18548     }
18549 
setRayTracingPipelineStackSizeKHR(uint32_t pipelineStackSize) const18550     VULKAN_HPP_INLINE void CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT
18551     {
18552       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR &&
18553                          "Function <vkCmdSetRayTracingPipelineStackSizeKHR> requires <VK_KHR_ray_tracing_pipeline>" );
18554 
18555       getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), pipelineStackSize );
18556     }
18557 
18558     //=== VK_KHR_sampler_ycbcr_conversion ===
18559 
18560     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
18561       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion>::Type
createSamplerYcbcrConversionKHR(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const18562       Device::createSamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const &                  createInfo,
18563                                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
18564       VULKAN_HPP_RAII_CREATE_NOEXCEPT
18565     {
18566       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion;
18567       VULKAN_HPP_NAMESPACE::Result                 result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSamplerYcbcrConversionKHR(
18568         static_cast<VkDevice>( m_device ),
18569         reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( &createInfo ),
18570         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
18571         reinterpret_cast<VkSamplerYcbcrConversion *>( &ycbcrConversion ) ) );
18572       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
18573       {
18574 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
18575         return VULKAN_HPP_UNEXPECTED( result );
18576 #  else
18577         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createSamplerYcbcrConversionKHR" );
18578 #  endif
18579       }
18580 
18581       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SamplerYcbcrConversion(
18582         *this, *reinterpret_cast<VkSamplerYcbcrConversion *>( &ycbcrConversion ), allocator );
18583     }
18584 
18585     VULKAN_HPP_INLINE void
destroySamplerYcbcrConversionKHR(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion,Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const18586       Device::destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion              ycbcrConversion,
18587                                                 Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT
18588     {
18589       VULKAN_HPP_ASSERT( getDispatcher()->vkDestroySamplerYcbcrConversionKHR &&
18590                          "Function <vkDestroySamplerYcbcrConversionKHR> requires <VK_KHR_sampler_ycbcr_conversion> or <VK_VERSION_1_1>" );
18591 
18592       getDispatcher()->vkDestroySamplerYcbcrConversionKHR(
18593         static_cast<VkDevice>( m_device ),
18594         static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ),
18595         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) );
18596     }
18597 
18598     //=== VK_KHR_bind_memory2 ===
18599 
18600     VULKAN_HPP_INLINE void
bindBufferMemory2KHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos) const18601       Device::bindBufferMemory2KHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const
18602     {
18603       VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2KHR && "Function <vkBindBufferMemory2KHR> requires <VK_KHR_bind_memory2> or <VK_VERSION_1_1>" );
18604 
18605       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindBufferMemory2KHR(
18606         static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindBufferMemoryInfo *>( bindInfos.data() ) ) );
18607       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" );
18608     }
18609 
18610     VULKAN_HPP_INLINE void
bindImageMemory2KHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos) const18611       Device::bindImageMemory2KHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const
18612     {
18613       VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2KHR && "Function <vkBindImageMemory2KHR> requires <VK_KHR_bind_memory2> or <VK_VERSION_1_1>" );
18614 
18615       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindImageMemory2KHR(
18616         static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindImageMemoryInfo *>( bindInfos.data() ) ) );
18617       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2KHR" );
18618     }
18619 
18620     //=== VK_EXT_image_drm_format_modifier ===
18621 
getDrmFormatModifierPropertiesEXT() const18622     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT Image::getDrmFormatModifierPropertiesEXT() const
18623     {
18624       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT &&
18625                          "Function <vkGetImageDrmFormatModifierPropertiesEXT> requires <VK_EXT_image_drm_format_modifier>" );
18626 
18627       VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT properties;
18628       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT(
18629         static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT *>( &properties ) ) );
18630       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Image::getDrmFormatModifierPropertiesEXT" );
18631 
18632       return properties;
18633     }
18634 
18635     //=== VK_EXT_validation_cache ===
18636 
18637     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
18638       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ValidationCacheEXT>::Type
createValidationCacheEXT(VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const18639       Device::createValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const &                      createInfo,
18640                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
18641       VULKAN_HPP_RAII_CREATE_NOEXCEPT
18642     {
18643       VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache;
18644       VULKAN_HPP_NAMESPACE::Result             result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateValidationCacheEXT(
18645         static_cast<VkDevice>( m_device ),
18646         reinterpret_cast<const VkValidationCacheCreateInfoEXT *>( &createInfo ),
18647         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
18648         reinterpret_cast<VkValidationCacheEXT *>( &validationCache ) ) );
18649       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
18650       {
18651 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
18652         return VULKAN_HPP_UNEXPECTED( result );
18653 #  else
18654         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createValidationCacheEXT" );
18655 #  endif
18656       }
18657 
18658       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ValidationCacheEXT(
18659         *this, *reinterpret_cast<VkValidationCacheEXT *>( &validationCache ), allocator );
18660     }
18661 
merge(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches) const18662     VULKAN_HPP_INLINE void ValidationCacheEXT::merge( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches ) const
18663     {
18664       VULKAN_HPP_ASSERT( getDispatcher()->vkMergeValidationCachesEXT && "Function <vkMergeValidationCachesEXT> requires <VK_EXT_validation_cache>" );
18665 
18666       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18667         getDispatcher()->vkMergeValidationCachesEXT( static_cast<VkDevice>( m_device ),
18668                                                      static_cast<VkValidationCacheEXT>( m_validationCache ),
18669                                                      srcCaches.size(),
18670                                                      reinterpret_cast<const VkValidationCacheEXT *>( srcCaches.data() ) ) );
18671       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::ValidationCacheEXT::merge" );
18672     }
18673 
getData() const18674     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> ValidationCacheEXT::getData() const
18675     {
18676       VULKAN_HPP_ASSERT( getDispatcher()->vkGetValidationCacheDataEXT && "Function <vkGetValidationCacheDataEXT> requires <VK_EXT_validation_cache>" );
18677 
18678       std::vector<uint8_t>         data;
18679       size_t                       dataSize;
18680       VULKAN_HPP_NAMESPACE::Result result;
18681       do
18682       {
18683         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetValidationCacheDataEXT(
18684           static_cast<VkDevice>( m_device ), static_cast<VkValidationCacheEXT>( m_validationCache ), &dataSize, nullptr ) );
18685         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
18686         {
18687           data.resize( dataSize );
18688           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetValidationCacheDataEXT(
18689             static_cast<VkDevice>( m_device ), static_cast<VkValidationCacheEXT>( m_validationCache ), &dataSize, reinterpret_cast<void *>( data.data() ) ) );
18690         }
18691       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
18692       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::ValidationCacheEXT::getData" );
18693       VULKAN_HPP_ASSERT( dataSize <= data.size() );
18694       if ( dataSize < data.size() )
18695       {
18696         data.resize( dataSize );
18697       }
18698       return data;
18699     }
18700 
18701     //=== VK_NV_shading_rate_image ===
18702 
bindShadingRateImageNV(VULKAN_HPP_NAMESPACE::ImageView imageView,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout) const18703     VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView   imageView,
18704                                                                   VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT
18705     {
18706       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadingRateImageNV && "Function <vkCmdBindShadingRateImageNV> requires <VK_NV_shading_rate_image>" );
18707 
18708       getDispatcher()->vkCmdBindShadingRateImageNV(
18709         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkImageView>( imageView ), static_cast<VkImageLayout>( imageLayout ) );
18710     }
18711 
setViewportShadingRatePaletteNV(uint32_t firstViewport,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes) const18712     VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV(
18713       uint32_t                                                                                   firstViewport,
18714       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT
18715     {
18716       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportShadingRatePaletteNV &&
18717                          "Function <vkCmdSetViewportShadingRatePaletteNV> requires <VK_NV_shading_rate_image>" );
18718 
18719       getDispatcher()->vkCmdSetViewportShadingRatePaletteNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
18720                                                              firstViewport,
18721                                                              shadingRatePalettes.size(),
18722                                                              reinterpret_cast<const VkShadingRatePaletteNV *>( shadingRatePalettes.data() ) );
18723     }
18724 
setCoarseSampleOrderNV(VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders) const18725     VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV(
18726       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV                                                   sampleOrderType,
18727       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders ) const VULKAN_HPP_NOEXCEPT
18728     {
18729       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoarseSampleOrderNV && "Function <vkCmdSetCoarseSampleOrderNV> requires <VK_NV_shading_rate_image>" );
18730 
18731       getDispatcher()->vkCmdSetCoarseSampleOrderNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
18732                                                     static_cast<VkCoarseSampleOrderTypeNV>( sampleOrderType ),
18733                                                     customSampleOrders.size(),
18734                                                     reinterpret_cast<const VkCoarseSampleOrderCustomNV *>( customSampleOrders.data() ) );
18735     }
18736 
18737     //=== VK_NV_ray_tracing ===
18738 
18739     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
18740       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureNV>::Type
createAccelerationStructureNV(VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const18741       Device::createAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const &                 createInfo,
18742                                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
18743       VULKAN_HPP_RAII_CREATE_NOEXCEPT
18744     {
18745       VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure;
18746       VULKAN_HPP_NAMESPACE::Result                  result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAccelerationStructureNV(
18747         static_cast<VkDevice>( m_device ),
18748         reinterpret_cast<const VkAccelerationStructureCreateInfoNV *>( &createInfo ),
18749         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
18750         reinterpret_cast<VkAccelerationStructureNV *>( &accelerationStructure ) ) );
18751       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
18752       {
18753 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
18754         return VULKAN_HPP_UNEXPECTED( result );
18755 #  else
18756         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createAccelerationStructureNV" );
18757 #  endif
18758       }
18759 
18760       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::AccelerationStructureNV(
18761         *this, *reinterpret_cast<VkAccelerationStructureNV *>( &accelerationStructure ), allocator );
18762     }
18763 
getAccelerationStructureMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info) const18764     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR Device::getAccelerationStructureMemoryRequirementsNV(
18765       const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
18766     {
18767       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV &&
18768                          "Function <vkGetAccelerationStructureMemoryRequirementsNV> requires <VK_NV_ray_tracing>" );
18769 
18770       VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR memoryRequirements;
18771       getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
18772                                                                        reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( &info ),
18773                                                                        reinterpret_cast<VkMemoryRequirements2KHR *>( &memoryRequirements ) );
18774 
18775       return memoryRequirements;
18776     }
18777 
18778     template <typename X, typename Y, typename... Z>
getAccelerationStructureMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info) const18779     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> Device::getAccelerationStructureMemoryRequirementsNV(
18780       const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
18781     {
18782       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV &&
18783                          "Function <vkGetAccelerationStructureMemoryRequirementsNV> requires <VK_NV_ray_tracing>" );
18784 
18785       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
18786       VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR &   memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR>();
18787       getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
18788                                                                        reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( &info ),
18789                                                                        reinterpret_cast<VkMemoryRequirements2KHR *>( &memoryRequirements ) );
18790 
18791       return structureChain;
18792     }
18793 
bindAccelerationStructureMemoryNV(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos) const18794     VULKAN_HPP_INLINE void Device::bindAccelerationStructureMemoryNV(
18795       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos ) const
18796     {
18797       VULKAN_HPP_ASSERT( getDispatcher()->vkBindAccelerationStructureMemoryNV &&
18798                          "Function <vkBindAccelerationStructureMemoryNV> requires <VK_NV_ray_tracing>" );
18799 
18800       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindAccelerationStructureMemoryNV(
18801         static_cast<VkDevice>( m_device ), bindInfos.size(), reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV *>( bindInfos.data() ) ) );
18802       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" );
18803     }
18804 
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) const18805     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV & info,
18806                                                                         VULKAN_HPP_NAMESPACE::Buffer                              instanceData,
18807                                                                         VULKAN_HPP_NAMESPACE::DeviceSize                          instanceOffset,
18808                                                                         VULKAN_HPP_NAMESPACE::Bool32                              update,
18809                                                                         VULKAN_HPP_NAMESPACE::AccelerationStructureNV             dst,
18810                                                                         VULKAN_HPP_NAMESPACE::AccelerationStructureNV             src,
18811                                                                         VULKAN_HPP_NAMESPACE::Buffer                              scratch,
18812                                                                         VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT
18813     {
18814       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructureNV && "Function <vkCmdBuildAccelerationStructureNV> requires <VK_NV_ray_tracing>" );
18815 
18816       getDispatcher()->vkCmdBuildAccelerationStructureNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
18817                                                           reinterpret_cast<const VkAccelerationStructureInfoNV *>( &info ),
18818                                                           static_cast<VkBuffer>( instanceData ),
18819                                                           static_cast<VkDeviceSize>( instanceOffset ),
18820                                                           static_cast<VkBool32>( update ),
18821                                                           static_cast<VkAccelerationStructureNV>( dst ),
18822                                                           static_cast<VkAccelerationStructureNV>( src ),
18823                                                           static_cast<VkBuffer>( scratch ),
18824                                                           static_cast<VkDeviceSize>( scratchOffset ) );
18825     }
18826 
copyAccelerationStructureNV(VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode) const18827     VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV          dst,
18828                                                                        VULKAN_HPP_NAMESPACE::AccelerationStructureNV          src,
18829                                                                        VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT
18830     {
18831       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureNV && "Function <vkCmdCopyAccelerationStructureNV> requires <VK_NV_ray_tracing>" );
18832 
18833       getDispatcher()->vkCmdCopyAccelerationStructureNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
18834                                                          static_cast<VkAccelerationStructureNV>( dst ),
18835                                                          static_cast<VkAccelerationStructureNV>( src ),
18836                                                          static_cast<VkCopyAccelerationStructureModeKHR>( mode ) );
18837     }
18838 
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) const18839     VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer     raygenShaderBindingTableBuffer,
18840                                                        VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset,
18841                                                        VULKAN_HPP_NAMESPACE::Buffer     missShaderBindingTableBuffer,
18842                                                        VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset,
18843                                                        VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride,
18844                                                        VULKAN_HPP_NAMESPACE::Buffer     hitShaderBindingTableBuffer,
18845                                                        VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset,
18846                                                        VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride,
18847                                                        VULKAN_HPP_NAMESPACE::Buffer     callableShaderBindingTableBuffer,
18848                                                        VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset,
18849                                                        VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride,
18850                                                        uint32_t                         width,
18851                                                        uint32_t                         height,
18852                                                        uint32_t                         depth ) const VULKAN_HPP_NOEXCEPT
18853     {
18854       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysNV && "Function <vkCmdTraceRaysNV> requires <VK_NV_ray_tracing>" );
18855 
18856       getDispatcher()->vkCmdTraceRaysNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
18857                                          static_cast<VkBuffer>( raygenShaderBindingTableBuffer ),
18858                                          static_cast<VkDeviceSize>( raygenShaderBindingOffset ),
18859                                          static_cast<VkBuffer>( missShaderBindingTableBuffer ),
18860                                          static_cast<VkDeviceSize>( missShaderBindingOffset ),
18861                                          static_cast<VkDeviceSize>( missShaderBindingStride ),
18862                                          static_cast<VkBuffer>( hitShaderBindingTableBuffer ),
18863                                          static_cast<VkDeviceSize>( hitShaderBindingOffset ),
18864                                          static_cast<VkDeviceSize>( hitShaderBindingStride ),
18865                                          static_cast<VkBuffer>( callableShaderBindingTableBuffer ),
18866                                          static_cast<VkDeviceSize>( callableShaderBindingOffset ),
18867                                          static_cast<VkDeviceSize>( callableShaderBindingStride ),
18868                                          width,
18869                                          height,
18870                                          depth );
18871     }
18872 
18873     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
18874       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>>::Type
createRayTracingPipelinesNV(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) const18875       Device::createRayTracingPipelinesNV(
18876         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
18877         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV> const &               createInfos,
18878         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>                              allocator ) const
18879     {
18880       std::vector<VULKAN_HPP_NAMESPACE::Pipeline> pipelines( createInfos.size() );
18881       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRayTracingPipelinesNV(
18882         static_cast<VkDevice>( m_device ),
18883         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
18884         createInfos.size(),
18885         reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( createInfos.data() ),
18886         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
18887         reinterpret_cast<VkPipeline *>( pipelines.data() ) ) );
18888       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
18889       {
18890 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
18891         return VULKAN_HPP_UNEXPECTED( result );
18892 #  else
18893         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createRayTracingPipelinesNV" );
18894 #  endif
18895       }
18896 
18897       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline> pipelinesRAII;
18898       pipelinesRAII.reserve( pipelines.size() );
18899       for ( auto & pipeline : pipelines )
18900       {
18901         pipelinesRAII.emplace_back( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
18902       }
18903       return pipelinesRAII;
18904     }
18905 
18906     VULKAN_HPP_NODISCARD
18907       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>::Type
createRayTracingPipelineNV(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) const18908                         Device::createRayTracingPipelineNV(
18909         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,
18910         VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const &                                                 createInfo,
18911         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
18912     {
18913       VULKAN_HPP_NAMESPACE::Pipeline pipeline;
18914       VULKAN_HPP_NAMESPACE::Result   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRayTracingPipelinesNV(
18915         static_cast<VkDevice>( m_device ),
18916         pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
18917         1,
18918         reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( &createInfo ),
18919         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
18920         reinterpret_cast<VkPipeline *>( &pipeline ) ) );
18921       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
18922       {
18923 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
18924         return VULKAN_HPP_UNEXPECTED( result );
18925 #  else
18926         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createRayTracingPipelineNV" );
18927 #  endif
18928       }
18929 
18930       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline( *this, *reinterpret_cast<VkPipeline *>( &pipeline ), allocator, result );
18931     }
18932 
18933     template <typename DataType>
18934     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<DataType>
getRayTracingShaderGroupHandlesNV(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const18935                                            Pipeline::getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
18936     {
18937       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV &&
18938                          "Function <vkGetRayTracingShaderGroupHandlesNV> requires <VK_KHR_ray_tracing_pipeline> or <VK_NV_ray_tracing>" );
18939 
18940       VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
18941       std::vector<DataType>        data( dataSize / sizeof( DataType ) );
18942       VULKAN_HPP_NAMESPACE::Result result =
18943         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast<VkDevice>( m_device ),
18944                                                                                                          static_cast<VkPipeline>( m_pipeline ),
18945                                                                                                          firstGroup,
18946                                                                                                          groupCount,
18947                                                                                                          data.size() * sizeof( DataType ),
18948                                                                                                          reinterpret_cast<void *>( data.data() ) ) );
18949       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesNV" );
18950 
18951       return data;
18952     }
18953 
18954     template <typename DataType>
getRayTracingShaderGroupHandleNV(uint32_t firstGroup,uint32_t groupCount) const18955     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType Pipeline::getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const
18956     {
18957       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV &&
18958                          "Function <vkGetRayTracingShaderGroupHandlesNV> requires <VK_KHR_ray_tracing_pipeline> or <VK_NV_ray_tracing>" );
18959 
18960       DataType                     data;
18961       VULKAN_HPP_NAMESPACE::Result result =
18962         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast<VkDevice>( m_device ),
18963                                                                                                          static_cast<VkPipeline>( m_pipeline ),
18964                                                                                                          firstGroup,
18965                                                                                                          groupCount,
18966                                                                                                          sizeof( DataType ),
18967                                                                                                          reinterpret_cast<void *>( &data ) ) );
18968       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleNV" );
18969 
18970       return data;
18971     }
18972 
18973     template <typename DataType>
getHandle(size_t dataSize) const18974     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<DataType> AccelerationStructureNV::getHandle( size_t dataSize ) const
18975     {
18976       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV && "Function <vkGetAccelerationStructureHandleNV> requires <VK_NV_ray_tracing>" );
18977 
18978       VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
18979       std::vector<DataType>        data( dataSize / sizeof( DataType ) );
18980       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18981         getDispatcher()->vkGetAccelerationStructureHandleNV( static_cast<VkDevice>( m_device ),
18982                                                              static_cast<VkAccelerationStructureNV>( m_accelerationStructure ),
18983                                                              data.size() * sizeof( DataType ),
18984                                                              reinterpret_cast<void *>( data.data() ) ) );
18985       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" );
18986 
18987       return data;
18988     }
18989 
18990     template <typename DataType>
getHandle() const18991     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType AccelerationStructureNV::getHandle() const
18992     {
18993       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV && "Function <vkGetAccelerationStructureHandleNV> requires <VK_NV_ray_tracing>" );
18994 
18995       DataType                     data;
18996       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
18997         getDispatcher()->vkGetAccelerationStructureHandleNV( static_cast<VkDevice>( m_device ),
18998                                                              static_cast<VkAccelerationStructureNV>( m_accelerationStructure ),
18999                                                              sizeof( DataType ),
19000                                                              reinterpret_cast<void *>( &data ) ) );
19001       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" );
19002 
19003       return data;
19004     }
19005 
writeAccelerationStructuresPropertiesNV(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery) const19006     VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV(
19007       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,
19008       VULKAN_HPP_NAMESPACE::QueryType                                                               queryType,
19009       VULKAN_HPP_NAMESPACE::QueryPool                                                               queryPool,
19010       uint32_t                                                                                      firstQuery ) const VULKAN_HPP_NOEXCEPT
19011     {
19012       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV &&
19013                          "Function <vkCmdWriteAccelerationStructuresPropertiesNV> requires <VK_NV_ray_tracing>" );
19014 
19015       getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
19016                                                                      accelerationStructures.size(),
19017                                                                      reinterpret_cast<const VkAccelerationStructureNV *>( accelerationStructures.data() ),
19018                                                                      static_cast<VkQueryType>( queryType ),
19019                                                                      static_cast<VkQueryPool>( queryPool ),
19020                                                                      firstQuery );
19021     }
19022 
compileDeferredNV(uint32_t shader) const19023     VULKAN_HPP_INLINE void Pipeline::compileDeferredNV( uint32_t shader ) const
19024     {
19025       VULKAN_HPP_ASSERT( getDispatcher()->vkCompileDeferredNV && "Function <vkCompileDeferredNV> requires <VK_NV_ray_tracing>" );
19026 
19027       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19028         getDispatcher()->vkCompileDeferredNV( static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), shader ) );
19029       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::compileDeferredNV" );
19030     }
19031 
19032     //=== VK_KHR_maintenance3 ===
19033 
19034     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
getDescriptorSetLayoutSupportKHR(const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo) const19035       Device::getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
19036     {
19037       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupportKHR &&
19038                          "Function <vkGetDescriptorSetLayoutSupportKHR> requires <VK_KHR_maintenance3> or <VK_VERSION_1_1>" );
19039 
19040       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support;
19041       getDispatcher()->vkGetDescriptorSetLayoutSupportKHR( static_cast<VkDevice>( m_device ),
19042                                                            reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
19043                                                            reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
19044 
19045       return support;
19046     }
19047 
19048     template <typename X, typename Y, typename... Z>
19049     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getDescriptorSetLayoutSupportKHR(const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo) const19050       Device::getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
19051     {
19052       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupportKHR &&
19053                          "Function <vkGetDescriptorSetLayoutSupportKHR> requires <VK_KHR_maintenance3> or <VK_VERSION_1_1>" );
19054 
19055       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>   structureChain;
19056       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support = structureChain.template get<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>();
19057       getDispatcher()->vkGetDescriptorSetLayoutSupportKHR( static_cast<VkDevice>( m_device ),
19058                                                            reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
19059                                                            reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
19060 
19061       return structureChain;
19062     }
19063 
19064     //=== VK_KHR_draw_indirect_count ===
19065 
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) const19066     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
19067                                                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
19068                                                                 VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
19069                                                                 VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
19070                                                                 uint32_t                         maxDrawCount,
19071                                                                 uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
19072     {
19073       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountKHR &&
19074                          "Function <vkCmdDrawIndirectCountKHR> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
19075 
19076       getDispatcher()->vkCmdDrawIndirectCountKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
19077                                                   static_cast<VkBuffer>( buffer ),
19078                                                   static_cast<VkDeviceSize>( offset ),
19079                                                   static_cast<VkBuffer>( countBuffer ),
19080                                                   static_cast<VkDeviceSize>( countBufferOffset ),
19081                                                   maxDrawCount,
19082                                                   stride );
19083     }
19084 
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) const19085     VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
19086                                                                        VULKAN_HPP_NAMESPACE::DeviceSize offset,
19087                                                                        VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
19088                                                                        VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
19089                                                                        uint32_t                         maxDrawCount,
19090                                                                        uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
19091     {
19092       VULKAN_HPP_ASSERT(
19093         getDispatcher()->vkCmdDrawIndexedIndirectCountKHR &&
19094         "Function <vkCmdDrawIndexedIndirectCountKHR> requires <VK_AMD_draw_indirect_count> or <VK_KHR_draw_indirect_count> or <VK_VERSION_1_2>" );
19095 
19096       getDispatcher()->vkCmdDrawIndexedIndirectCountKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
19097                                                          static_cast<VkBuffer>( buffer ),
19098                                                          static_cast<VkDeviceSize>( offset ),
19099                                                          static_cast<VkBuffer>( countBuffer ),
19100                                                          static_cast<VkDeviceSize>( countBufferOffset ),
19101                                                          maxDrawCount,
19102                                                          stride );
19103     }
19104 
19105     //=== VK_EXT_external_memory_host ===
19106 
19107     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT
getMemoryHostPointerPropertiesEXT(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer) const19108       Device::getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, const void * pHostPointer ) const
19109     {
19110       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryHostPointerPropertiesEXT &&
19111                          "Function <vkGetMemoryHostPointerPropertiesEXT> requires <VK_EXT_external_memory_host>" );
19112 
19113       VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT memoryHostPointerProperties;
19114       VULKAN_HPP_NAMESPACE::Result                         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19115         getDispatcher()->vkGetMemoryHostPointerPropertiesEXT( static_cast<VkDevice>( m_device ),
19116                                                               static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
19117                                                               pHostPointer,
19118                                                               reinterpret_cast<VkMemoryHostPointerPropertiesEXT *>( &memoryHostPointerProperties ) ) );
19119       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" );
19120 
19121       return memoryHostPointerProperties;
19122     }
19123 
19124     //=== VK_AMD_buffer_marker ===
19125 
writeBufferMarkerAMD(VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,uint32_t marker) const19126     VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
19127                                                                 VULKAN_HPP_NAMESPACE::Buffer                dstBuffer,
19128                                                                 VULKAN_HPP_NAMESPACE::DeviceSize            dstOffset,
19129                                                                 uint32_t                                    marker ) const VULKAN_HPP_NOEXCEPT
19130     {
19131       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarkerAMD && "Function <vkCmdWriteBufferMarkerAMD> requires <VK_AMD_buffer_marker>" );
19132 
19133       getDispatcher()->vkCmdWriteBufferMarkerAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
19134                                                   static_cast<VkPipelineStageFlagBits>( pipelineStage ),
19135                                                   static_cast<VkBuffer>( dstBuffer ),
19136                                                   static_cast<VkDeviceSize>( dstOffset ),
19137                                                   marker );
19138     }
19139 
19140     //=== VK_EXT_calibrated_timestamps ===
19141 
getCalibrateableTimeDomainsEXT() const19142     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::TimeDomainKHR> PhysicalDevice::getCalibrateableTimeDomainsEXT() const
19143     {
19144       VULKAN_HPP_ASSERT(
19145         getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT &&
19146         "Function <vkGetPhysicalDeviceCalibrateableTimeDomainsEXT> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
19147 
19148       std::vector<VULKAN_HPP_NAMESPACE::TimeDomainKHR> timeDomains;
19149       uint32_t                                         timeDomainCount;
19150       VULKAN_HPP_NAMESPACE::Result                     result;
19151       do
19152       {
19153         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19154           getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, nullptr ) );
19155         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && timeDomainCount )
19156         {
19157           timeDomains.resize( timeDomainCount );
19158           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
19159             static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, reinterpret_cast<VkTimeDomainKHR *>( timeDomains.data() ) ) );
19160         }
19161       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
19162       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" );
19163       VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() );
19164       if ( timeDomainCount < timeDomains.size() )
19165       {
19166         timeDomains.resize( timeDomainCount );
19167       }
19168       return timeDomains;
19169     }
19170 
getCalibratedTimestampsEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR> const & timestampInfos) const19171     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<std::vector<uint64_t>, uint64_t> Device::getCalibratedTimestampsEXT(
19172       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR> const & timestampInfos ) const
19173     {
19174       VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsEXT &&
19175                          "Function <vkGetCalibratedTimestampsEXT> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
19176 
19177       std::pair<std::vector<uint64_t>, uint64_t> data_( std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) );
19178       std::vector<uint64_t> &                    timestamps   = data_.first;
19179       uint64_t &                                 maxDeviation = data_.second;
19180       VULKAN_HPP_NAMESPACE::Result               result       = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19181         getDispatcher()->vkGetCalibratedTimestampsEXT( static_cast<VkDevice>( m_device ),
19182                                                        timestampInfos.size(),
19183                                                        reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( timestampInfos.data() ),
19184                                                        timestamps.data(),
19185                                                        &maxDeviation ) );
19186       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" );
19187 
19188       return data_;
19189     }
19190 
19191     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<uint64_t, uint64_t>
getCalibratedTimestampEXT(const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR & timestampInfo) const19192                                            Device::getCalibratedTimestampEXT( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR & timestampInfo ) const
19193     {
19194       VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsEXT &&
19195                          "Function <vkGetCalibratedTimestampsEXT> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
19196 
19197       std::pair<uint64_t, uint64_t> data_;
19198       uint64_t &                    timestamp    = data_.first;
19199       uint64_t &                    maxDeviation = data_.second;
19200       VULKAN_HPP_NAMESPACE::Result  result       = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetCalibratedTimestampsEXT(
19201         static_cast<VkDevice>( m_device ), 1, reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( &timestampInfo ), &timestamp, &maxDeviation ) );
19202       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampEXT" );
19203 
19204       return data_;
19205     }
19206 
19207     //=== VK_NV_mesh_shader ===
19208 
drawMeshTasksNV(uint32_t taskCount,uint32_t firstTask) const19209     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT
19210     {
19211       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksNV && "Function <vkCmdDrawMeshTasksNV> requires <VK_NV_mesh_shader>" );
19212 
19213       getDispatcher()->vkCmdDrawMeshTasksNV( static_cast<VkCommandBuffer>( m_commandBuffer ), taskCount, firstTask );
19214     }
19215 
drawMeshTasksIndirectNV(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const19216     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
19217                                                                    VULKAN_HPP_NAMESPACE::DeviceSize offset,
19218                                                                    uint32_t                         drawCount,
19219                                                                    uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
19220     {
19221       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectNV && "Function <vkCmdDrawMeshTasksIndirectNV> requires <VK_NV_mesh_shader>" );
19222 
19223       getDispatcher()->vkCmdDrawMeshTasksIndirectNV(
19224         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ), drawCount, stride );
19225     }
19226 
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) const19227     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
19228                                                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
19229                                                                         VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
19230                                                                         VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
19231                                                                         uint32_t                         maxDrawCount,
19232                                                                         uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
19233     {
19234       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV && "Function <vkCmdDrawMeshTasksIndirectCountNV> requires <VK_NV_mesh_shader>" );
19235 
19236       getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
19237                                                           static_cast<VkBuffer>( buffer ),
19238                                                           static_cast<VkDeviceSize>( offset ),
19239                                                           static_cast<VkBuffer>( countBuffer ),
19240                                                           static_cast<VkDeviceSize>( countBufferOffset ),
19241                                                           maxDrawCount,
19242                                                           stride );
19243     }
19244 
19245     //=== VK_NV_scissor_exclusive ===
19246 
setExclusiveScissorEnableNV(uint32_t firstExclusiveScissor,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & exclusiveScissorEnables) const19247     VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorEnableNV(
19248       uint32_t                                                                     firstExclusiveScissor,
19249       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & exclusiveScissorEnables ) const VULKAN_HPP_NOEXCEPT
19250     {
19251       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorEnableNV &&
19252                          "Function <vkCmdSetExclusiveScissorEnableNV> requires <VK_NV_scissor_exclusive>" );
19253 
19254       getDispatcher()->vkCmdSetExclusiveScissorEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
19255                                                          firstExclusiveScissor,
19256                                                          exclusiveScissorEnables.size(),
19257                                                          reinterpret_cast<const VkBool32 *>( exclusiveScissorEnables.data() ) );
19258     }
19259 
setExclusiveScissorNV(uint32_t firstExclusiveScissor,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors) const19260     VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV(
19261       uint32_t firstExclusiveScissor, VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT
19262     {
19263       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorNV && "Function <vkCmdSetExclusiveScissorNV> requires <VK_NV_scissor_exclusive>" );
19264 
19265       getDispatcher()->vkCmdSetExclusiveScissorNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
19266                                                    firstExclusiveScissor,
19267                                                    exclusiveScissors.size(),
19268                                                    reinterpret_cast<const VkRect2D *>( exclusiveScissors.data() ) );
19269     }
19270 
19271     //=== VK_NV_device_diagnostic_checkpoints ===
19272 
19273     template <typename CheckpointMarkerType>
setCheckpointNV(CheckpointMarkerType const & checkpointMarker) const19274     VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( CheckpointMarkerType const & checkpointMarker ) const VULKAN_HPP_NOEXCEPT
19275     {
19276       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCheckpointNV && "Function <vkCmdSetCheckpointNV> requires <VK_NV_device_diagnostic_checkpoints>" );
19277 
19278       getDispatcher()->vkCmdSetCheckpointNV( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const void *>( &checkpointMarker ) );
19279     }
19280 
getCheckpointDataNV() const19281     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV> Queue::getCheckpointDataNV() const
19282     {
19283       VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointDataNV &&
19284                          "Function <vkGetQueueCheckpointDataNV> requires <VK_NV_device_diagnostic_checkpoints>" );
19285 
19286       std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV> checkpointData;
19287       uint32_t                                            checkpointDataCount;
19288       getDispatcher()->vkGetQueueCheckpointDataNV( static_cast<VkQueue>( m_queue ), &checkpointDataCount, nullptr );
19289       checkpointData.resize( checkpointDataCount );
19290       getDispatcher()->vkGetQueueCheckpointDataNV(
19291         static_cast<VkQueue>( m_queue ), &checkpointDataCount, reinterpret_cast<VkCheckpointDataNV *>( checkpointData.data() ) );
19292 
19293       VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
19294       if ( checkpointDataCount < checkpointData.size() )
19295       {
19296         checkpointData.resize( checkpointDataCount );
19297       }
19298       return checkpointData;
19299     }
19300 
19301     //=== VK_KHR_timeline_semaphore ===
19302 
getCounterValueKHR() const19303     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Semaphore::getCounterValueKHR() const
19304     {
19305       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreCounterValueKHR &&
19306                          "Function <vkGetSemaphoreCounterValueKHR> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
19307 
19308       uint64_t                     value;
19309       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19310         getDispatcher()->vkGetSemaphoreCounterValueKHR( static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), &value ) );
19311       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Semaphore::getCounterValueKHR" );
19312 
19313       return value;
19314     }
19315 
waitSemaphoresKHR(const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo,uint64_t timeout) const19316     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo & waitInfo,
19317                                                                                                    uint64_t timeout ) const
19318     {
19319       VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphoresKHR && "Function <vkWaitSemaphoresKHR> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
19320 
19321       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19322         getDispatcher()->vkWaitSemaphoresKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreWaitInfo *>( &waitInfo ), timeout ) );
19323       VULKAN_HPP_NAMESPACE::detail::resultCheck(
19324         result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphoresKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } );
19325 
19326       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
19327     }
19328 
signalSemaphoreKHR(const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo) const19329     VULKAN_HPP_INLINE void Device::signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo & signalInfo ) const
19330     {
19331       VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphoreKHR && "Function <vkSignalSemaphoreKHR> requires <VK_KHR_timeline_semaphore> or <VK_VERSION_1_2>" );
19332 
19333       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19334         getDispatcher()->vkSignalSemaphoreKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreSignalInfo *>( &signalInfo ) ) );
19335       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphoreKHR" );
19336     }
19337 
19338     //=== VK_INTEL_performance_query ===
19339 
initializePerformanceApiINTEL(const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo) const19340     VULKAN_HPP_INLINE void Device::initializePerformanceApiINTEL( const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL & initializeInfo ) const
19341     {
19342       VULKAN_HPP_ASSERT( getDispatcher()->vkInitializePerformanceApiINTEL &&
19343                          "Function <vkInitializePerformanceApiINTEL> requires <VK_INTEL_performance_query>" );
19344 
19345       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkInitializePerformanceApiINTEL(
19346         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkInitializePerformanceApiInfoINTEL *>( &initializeInfo ) ) );
19347       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" );
19348     }
19349 
uninitializePerformanceApiINTEL() const19350     VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT
19351     {
19352       VULKAN_HPP_ASSERT( getDispatcher()->vkUninitializePerformanceApiINTEL &&
19353                          "Function <vkUninitializePerformanceApiINTEL> requires <VK_INTEL_performance_query>" );
19354 
19355       getDispatcher()->vkUninitializePerformanceApiINTEL( static_cast<VkDevice>( m_device ) );
19356     }
19357 
setPerformanceMarkerINTEL(const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo) const19358     VULKAN_HPP_INLINE void CommandBuffer::setPerformanceMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL & markerInfo ) const
19359     {
19360       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceMarkerINTEL && "Function <vkCmdSetPerformanceMarkerINTEL> requires <VK_INTEL_performance_query>" );
19361 
19362       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceMarkerINTEL(
19363         static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkPerformanceMarkerInfoINTEL *>( &markerInfo ) ) );
19364       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" );
19365     }
19366 
setPerformanceStreamMarkerINTEL(const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo) const19367     VULKAN_HPP_INLINE void CommandBuffer::setPerformanceStreamMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL & markerInfo ) const
19368     {
19369       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL &&
19370                          "Function <vkCmdSetPerformanceStreamMarkerINTEL> requires <VK_INTEL_performance_query>" );
19371 
19372       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL(
19373         static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkPerformanceStreamMarkerInfoINTEL *>( &markerInfo ) ) );
19374       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" );
19375     }
19376 
setPerformanceOverrideINTEL(const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo) const19377     VULKAN_HPP_INLINE void CommandBuffer::setPerformanceOverrideINTEL( const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL & overrideInfo ) const
19378     {
19379       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceOverrideINTEL &&
19380                          "Function <vkCmdSetPerformanceOverrideINTEL> requires <VK_INTEL_performance_query>" );
19381 
19382       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceOverrideINTEL(
19383         static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkPerformanceOverrideInfoINTEL *>( &overrideInfo ) ) );
19384       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" );
19385     }
19386 
19387     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
19388       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PerformanceConfigurationINTEL>::Type
acquirePerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo) const19389       Device::acquirePerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) const
19390       VULKAN_HPP_RAII_CREATE_NOEXCEPT
19391     {
19392       VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration;
19393       VULKAN_HPP_NAMESPACE::Result                        result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19394         getDispatcher()->vkAcquirePerformanceConfigurationINTEL( static_cast<VkDevice>( m_device ),
19395                                                                  reinterpret_cast<const VkPerformanceConfigurationAcquireInfoINTEL *>( &acquireInfo ),
19396                                                                  reinterpret_cast<VkPerformanceConfigurationINTEL *>( &configuration ) ) );
19397       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
19398       {
19399 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
19400         return VULKAN_HPP_UNEXPECTED( result );
19401 #  else
19402         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::acquirePerformanceConfigurationINTEL" );
19403 #  endif
19404       }
19405 
19406       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PerformanceConfigurationINTEL(
19407         *this, *reinterpret_cast<VkPerformanceConfigurationINTEL *>( &configuration ) );
19408     }
19409 
setPerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration) const19410     VULKAN_HPP_INLINE void Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const
19411     {
19412       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL &&
19413                          "Function <vkQueueSetPerformanceConfigurationINTEL> requires <VK_INTEL_performance_query>" );
19414 
19415       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL(
19416         static_cast<VkQueue>( m_queue ), static_cast<VkPerformanceConfigurationINTEL>( configuration ) ) );
19417       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" );
19418     }
19419 
19420     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PerformanceValueINTEL
getPerformanceParameterINTEL(VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter) const19421                                            Device::getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter ) const
19422     {
19423       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPerformanceParameterINTEL && "Function <vkGetPerformanceParameterINTEL> requires <VK_INTEL_performance_query>" );
19424 
19425       VULKAN_HPP_NAMESPACE::PerformanceValueINTEL value;
19426       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPerformanceParameterINTEL(
19427         static_cast<VkDevice>( m_device ), static_cast<VkPerformanceParameterTypeINTEL>( parameter ), reinterpret_cast<VkPerformanceValueINTEL *>( &value ) ) );
19428       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" );
19429 
19430       return value;
19431     }
19432 
19433     //=== VK_AMD_display_native_hdr ===
19434 
setLocalDimmingAMD(VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable) const19435     VULKAN_HPP_INLINE void SwapchainKHR::setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT
19436     {
19437       VULKAN_HPP_ASSERT( getDispatcher()->vkSetLocalDimmingAMD && "Function <vkSetLocalDimmingAMD> requires <VK_AMD_display_native_hdr>" );
19438 
19439       getDispatcher()->vkSetLocalDimmingAMD(
19440         static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), static_cast<VkBool32>( localDimmingEnable ) );
19441     }
19442 
19443 #  if defined( VK_USE_PLATFORM_FUCHSIA )
19444     //=== VK_FUCHSIA_imagepipe_surface ===
19445 
19446     VULKAN_HPP_NODISCARD
19447       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createImagePipeSurfaceFUCHSIA(VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const19448                         Instance::createImagePipeSurfaceFUCHSIA( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const &                 createInfo,
19449                                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
19450       VULKAN_HPP_RAII_CREATE_NOEXCEPT
19451     {
19452       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
19453       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateImagePipeSurfaceFUCHSIA(
19454         static_cast<VkInstance>( m_instance ),
19455         reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA *>( &createInfo ),
19456         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
19457         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
19458       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
19459       {
19460 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
19461         return VULKAN_HPP_UNEXPECTED( result );
19462 #    else
19463         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createImagePipeSurfaceFUCHSIA" );
19464 #    endif
19465       }
19466 
19467       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
19468     }
19469 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
19470 
19471 #  if defined( VK_USE_PLATFORM_METAL_EXT )
19472     //=== VK_EXT_metal_surface ===
19473 
19474     VULKAN_HPP_NODISCARD
19475       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createMetalSurfaceEXT(VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const19476                         Instance::createMetalSurfaceEXT( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const &                         createInfo,
19477                                        VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
19478       VULKAN_HPP_RAII_CREATE_NOEXCEPT
19479     {
19480       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
19481       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateMetalSurfaceEXT(
19482         static_cast<VkInstance>( m_instance ),
19483         reinterpret_cast<const VkMetalSurfaceCreateInfoEXT *>( &createInfo ),
19484         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
19485         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
19486       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
19487       {
19488 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
19489         return VULKAN_HPP_UNEXPECTED( result );
19490 #    else
19491         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createMetalSurfaceEXT" );
19492 #    endif
19493       }
19494 
19495       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
19496     }
19497 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
19498 
19499     //=== VK_KHR_fragment_shading_rate ===
19500 
19501     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR>
getFragmentShadingRatesKHR() const19502                                            PhysicalDevice::getFragmentShadingRatesKHR() const
19503     {
19504       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR &&
19505                          "Function <vkGetPhysicalDeviceFragmentShadingRatesKHR> requires <VK_KHR_fragment_shading_rate>" );
19506 
19507       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR> fragmentShadingRates;
19508       uint32_t                                                                fragmentShadingRateCount;
19509       VULKAN_HPP_NAMESPACE::Result                                            result;
19510       do
19511       {
19512         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR(
19513           static_cast<VkPhysicalDevice>( m_physicalDevice ), &fragmentShadingRateCount, nullptr ) );
19514         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && fragmentShadingRateCount )
19515         {
19516           fragmentShadingRates.resize( fragmentShadingRateCount );
19517           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR(
19518             static_cast<VkPhysicalDevice>( m_physicalDevice ),
19519             &fragmentShadingRateCount,
19520             reinterpret_cast<VkPhysicalDeviceFragmentShadingRateKHR *>( fragmentShadingRates.data() ) ) );
19521         }
19522       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
19523       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" );
19524       VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() );
19525       if ( fragmentShadingRateCount < fragmentShadingRates.size() )
19526       {
19527         fragmentShadingRates.resize( fragmentShadingRateCount );
19528       }
19529       return fragmentShadingRates;
19530     }
19531 
19532     VULKAN_HPP_INLINE void
setFragmentShadingRateKHR(const VULKAN_HPP_NAMESPACE::Extent2D & fragmentSize,const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2]) const19533       CommandBuffer::setFragmentShadingRateKHR( const VULKAN_HPP_NAMESPACE::Extent2D &                       fragmentSize,
19534                                                 const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT
19535     {
19536       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFragmentShadingRateKHR &&
19537                          "Function <vkCmdSetFragmentShadingRateKHR> requires <VK_KHR_fragment_shading_rate>" );
19538 
19539       getDispatcher()->vkCmdSetFragmentShadingRateKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
19540                                                        reinterpret_cast<const VkExtent2D *>( &fragmentSize ),
19541                                                        reinterpret_cast<const VkFragmentShadingRateCombinerOpKHR *>( combinerOps ) );
19542     }
19543 
19544     //=== VK_KHR_dynamic_rendering_local_read ===
19545 
setRenderingAttachmentLocationsKHR(const VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR & locationInfo) const19546     VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocationsKHR(
19547       const VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfoKHR & locationInfo ) const VULKAN_HPP_NOEXCEPT
19548     {
19549       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingAttachmentLocationsKHR &&
19550                          "Function <vkCmdSetRenderingAttachmentLocationsKHR> requires <VK_KHR_dynamic_rendering_local_read>" );
19551 
19552       getDispatcher()->vkCmdSetRenderingAttachmentLocationsKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
19553                                                                 reinterpret_cast<const VkRenderingAttachmentLocationInfoKHR *>( &locationInfo ) );
19554     }
19555 
setRenderingInputAttachmentIndicesKHR(const VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR & locationInfo) const19556     VULKAN_HPP_INLINE void CommandBuffer::setRenderingInputAttachmentIndicesKHR(
19557       const VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfoKHR & locationInfo ) const VULKAN_HPP_NOEXCEPT
19558     {
19559       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingInputAttachmentIndicesKHR &&
19560                          "Function <vkCmdSetRenderingInputAttachmentIndicesKHR> requires <VK_KHR_dynamic_rendering_local_read>" );
19561 
19562       getDispatcher()->vkCmdSetRenderingInputAttachmentIndicesKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
19563                                                                    reinterpret_cast<const VkRenderingInputAttachmentIndexInfoKHR *>( &locationInfo ) );
19564     }
19565 
19566     //=== VK_EXT_buffer_device_address ===
19567 
19568     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getBufferAddressEXT(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const19569                                            Device::getBufferAddressEXT( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
19570     {
19571       VULKAN_HPP_ASSERT(
19572         getDispatcher()->vkGetBufferDeviceAddressEXT &&
19573         "Function <vkGetBufferDeviceAddressEXT> requires <VK_EXT_buffer_device_address> or <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
19574 
19575       VkDeviceAddress result =
19576         getDispatcher()->vkGetBufferDeviceAddressEXT( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
19577 
19578       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( result );
19579     }
19580 
19581     //=== VK_EXT_tooling_info ===
19582 
getToolPropertiesEXT() const19583     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties> PhysicalDevice::getToolPropertiesEXT() const
19584     {
19585       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT &&
19586                          "Function <vkGetPhysicalDeviceToolPropertiesEXT> requires <VK_EXT_tooling_info> or <VK_VERSION_1_3>" );
19587 
19588       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties> toolProperties;
19589       uint32_t                                                        toolCount;
19590       VULKAN_HPP_NAMESPACE::Result                                    result;
19591       do
19592       {
19593         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19594           getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, nullptr ) );
19595         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && toolCount )
19596         {
19597           toolProperties.resize( toolCount );
19598           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT(
19599             static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, reinterpret_cast<VkPhysicalDeviceToolProperties *>( toolProperties.data() ) ) );
19600         }
19601       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
19602       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" );
19603       VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() );
19604       if ( toolCount < toolProperties.size() )
19605       {
19606         toolProperties.resize( toolCount );
19607       }
19608       return toolProperties;
19609     }
19610 
19611     //=== VK_KHR_present_wait ===
19612 
waitForPresent(uint64_t presentId,uint64_t timeout) const19613     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result SwapchainKHR::waitForPresent( uint64_t presentId, uint64_t timeout ) const
19614     {
19615       VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForPresentKHR && "Function <vkWaitForPresentKHR> requires <VK_KHR_present_wait>" );
19616 
19617       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19618         getDispatcher()->vkWaitForPresentKHR( static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), presentId, timeout ) );
19619       VULKAN_HPP_NAMESPACE::detail::resultCheck(
19620         result,
19621         VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::waitForPresent",
19622         { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } );
19623 
19624       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
19625     }
19626 
19627     //=== VK_NV_cooperative_matrix ===
19628 
19629     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV>
getCooperativeMatrixPropertiesNV() const19630                                            PhysicalDevice::getCooperativeMatrixPropertiesNV() const
19631     {
19632       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV &&
19633                          "Function <vkGetPhysicalDeviceCooperativeMatrixPropertiesNV> requires <VK_NV_cooperative_matrix>" );
19634 
19635       std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV> properties;
19636       uint32_t                                                         propertyCount;
19637       VULKAN_HPP_NAMESPACE::Result                                     result;
19638       do
19639       {
19640         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19641           getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
19642         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
19643         {
19644           properties.resize( propertyCount );
19645           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
19646             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkCooperativeMatrixPropertiesNV *>( properties.data() ) ) );
19647         }
19648       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
19649       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" );
19650       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
19651       if ( propertyCount < properties.size() )
19652       {
19653         properties.resize( propertyCount );
19654       }
19655       return properties;
19656     }
19657 
19658     //=== VK_NV_coverage_reduction_mode ===
19659 
19660     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV>
getSupportedFramebufferMixedSamplesCombinationsNV() const19661                                            PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV() const
19662     {
19663       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV &&
19664                          "Function <vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV> requires <VK_NV_coverage_reduction_mode>" );
19665 
19666       std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV> combinations;
19667       uint32_t                                                                combinationCount;
19668       VULKAN_HPP_NAMESPACE::Result                                            result;
19669       do
19670       {
19671         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
19672           static_cast<VkPhysicalDevice>( m_physicalDevice ), &combinationCount, nullptr ) );
19673         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && combinationCount )
19674         {
19675           combinations.resize( combinationCount );
19676           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
19677             static_cast<VkPhysicalDevice>( m_physicalDevice ),
19678             &combinationCount,
19679             reinterpret_cast<VkFramebufferMixedSamplesCombinationNV *>( combinations.data() ) ) );
19680         }
19681       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
19682       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" );
19683       VULKAN_HPP_ASSERT( combinationCount <= combinations.size() );
19684       if ( combinationCount < combinations.size() )
19685       {
19686         combinations.resize( combinationCount );
19687       }
19688       return combinations;
19689     }
19690 
19691 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
19692     //=== VK_EXT_full_screen_exclusive ===
19693 
19694     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
getSurfacePresentModes2EXT(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const19695       PhysicalDevice::getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
19696     {
19697       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT &&
19698                          "Function <vkGetPhysicalDeviceSurfacePresentModes2EXT> requires <VK_EXT_full_screen_exclusive>" );
19699 
19700       std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR> presentModes;
19701       uint32_t                                          presentModeCount;
19702       VULKAN_HPP_NAMESPACE::Result                      result;
19703       do
19704       {
19705         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19706           getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19707                                                                        reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
19708                                                                        &presentModeCount,
19709                                                                        nullptr ) );
19710         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentModeCount )
19711         {
19712           presentModes.resize( presentModeCount );
19713           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19714             getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT( static_cast<VkPhysicalDevice>( m_physicalDevice ),
19715                                                                          reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
19716                                                                          &presentModeCount,
19717                                                                          reinterpret_cast<VkPresentModeKHR *>( presentModes.data() ) ) );
19718         }
19719       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
19720       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" );
19721       VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
19722       if ( presentModeCount < presentModes.size() )
19723       {
19724         presentModes.resize( presentModeCount );
19725       }
19726       return presentModes;
19727     }
19728 
acquireFullScreenExclusiveModeEXT() const19729     VULKAN_HPP_INLINE void SwapchainKHR::acquireFullScreenExclusiveModeEXT() const
19730     {
19731       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireFullScreenExclusiveModeEXT &&
19732                          "Function <vkAcquireFullScreenExclusiveModeEXT> requires <VK_EXT_full_screen_exclusive>" );
19733 
19734       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19735         getDispatcher()->vkAcquireFullScreenExclusiveModeEXT( static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ) ) );
19736       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::acquireFullScreenExclusiveModeEXT" );
19737     }
19738 
releaseFullScreenExclusiveModeEXT() const19739     VULKAN_HPP_INLINE void SwapchainKHR::releaseFullScreenExclusiveModeEXT() const
19740     {
19741       VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseFullScreenExclusiveModeEXT &&
19742                          "Function <vkReleaseFullScreenExclusiveModeEXT> requires <VK_EXT_full_screen_exclusive>" );
19743 
19744       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19745         getDispatcher()->vkReleaseFullScreenExclusiveModeEXT( static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ) ) );
19746       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::releaseFullScreenExclusiveModeEXT" );
19747     }
19748 
19749     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
getGroupSurfacePresentModes2EXT(const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const19750       Device::getGroupSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
19751     {
19752       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT &&
19753                          "Function <vkGetDeviceGroupSurfacePresentModes2EXT> requires <VK_EXT_full_screen_exclusive>" );
19754 
19755       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes;
19756       VULKAN_HPP_NAMESPACE::Result                         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
19757         getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT( static_cast<VkDevice>( m_device ),
19758                                                                   reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
19759                                                                   reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR *>( &modes ) ) );
19760       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" );
19761 
19762       return modes;
19763     }
19764 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
19765 
19766     //=== VK_EXT_headless_surface ===
19767 
19768     VULKAN_HPP_NODISCARD
19769       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createHeadlessSurfaceEXT(VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const19770                         Instance::createHeadlessSurfaceEXT( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const &                      createInfo,
19771                                           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
19772       VULKAN_HPP_RAII_CREATE_NOEXCEPT
19773     {
19774       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
19775       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateHeadlessSurfaceEXT(
19776         static_cast<VkInstance>( m_instance ),
19777         reinterpret_cast<const VkHeadlessSurfaceCreateInfoEXT *>( &createInfo ),
19778         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
19779         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
19780       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
19781       {
19782 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
19783         return VULKAN_HPP_UNEXPECTED( result );
19784 #  else
19785         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createHeadlessSurfaceEXT" );
19786 #  endif
19787       }
19788 
19789       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
19790     }
19791 
19792     //=== VK_KHR_buffer_device_address ===
19793 
19794     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getBufferAddressKHR(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const19795                                            Device::getBufferAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
19796     {
19797       VULKAN_HPP_ASSERT(
19798         getDispatcher()->vkGetBufferDeviceAddressKHR &&
19799         "Function <vkGetBufferDeviceAddressKHR> requires <VK_EXT_buffer_device_address> or <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
19800 
19801       VkDeviceAddress result =
19802         getDispatcher()->vkGetBufferDeviceAddressKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
19803 
19804       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( result );
19805     }
19806 
19807     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getBufferOpaqueCaptureAddressKHR(const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info) const19808       Device::getBufferOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
19809     {
19810       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR &&
19811                          "Function <vkGetBufferOpaqueCaptureAddressKHR> requires <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
19812 
19813       uint64_t result =
19814         getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
19815 
19816       return result;
19817     }
19818 
19819     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getMemoryOpaqueCaptureAddressKHR(const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info) const19820       Device::getMemoryOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
19821     {
19822       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR &&
19823                          "Function <vkGetDeviceMemoryOpaqueCaptureAddressKHR> requires <VK_KHR_buffer_device_address> or <VK_VERSION_1_2>" );
19824 
19825       uint64_t result = getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR( static_cast<VkDevice>( m_device ),
19826                                                                                    reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( &info ) );
19827 
19828       return result;
19829     }
19830 
19831     //=== VK_EXT_line_rasterization ===
19832 
setLineStippleEXT(uint32_t lineStippleFactor,uint16_t lineStipplePattern) const19833     VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT
19834     {
19835       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEXT &&
19836                          "Function <vkCmdSetLineStippleEXT> requires <VK_EXT_line_rasterization> or <VK_KHR_line_rasterization>" );
19837 
19838       getDispatcher()->vkCmdSetLineStippleEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), lineStippleFactor, lineStipplePattern );
19839     }
19840 
19841     //=== VK_EXT_host_query_reset ===
19842 
resetEXT(uint32_t firstQuery,uint32_t queryCount) const19843     VULKAN_HPP_INLINE void QueryPool::resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
19844     {
19845       VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPoolEXT && "Function <vkResetQueryPoolEXT> requires <VK_EXT_host_query_reset> or <VK_VERSION_1_2>" );
19846 
19847       getDispatcher()->vkResetQueryPoolEXT( static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), firstQuery, queryCount );
19848     }
19849 
19850     //=== VK_EXT_extended_dynamic_state ===
19851 
setCullModeEXT(VULKAN_HPP_NAMESPACE::CullModeFlags cullMode) const19852     VULKAN_HPP_INLINE void CommandBuffer::setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT
19853     {
19854       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullModeEXT &&
19855                          "Function <vkCmdSetCullModeEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19856 
19857       getDispatcher()->vkCmdSetCullModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCullModeFlags>( cullMode ) );
19858     }
19859 
setFrontFaceEXT(VULKAN_HPP_NAMESPACE::FrontFace frontFace) const19860     VULKAN_HPP_INLINE void CommandBuffer::setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT
19861     {
19862       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFaceEXT &&
19863                          "Function <vkCmdSetFrontFaceEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19864 
19865       getDispatcher()->vkCmdSetFrontFaceEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkFrontFace>( frontFace ) );
19866     }
19867 
setPrimitiveTopologyEXT(VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology) const19868     VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT
19869     {
19870       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveTopologyEXT &&
19871                          "Function <vkCmdSetPrimitiveTopologyEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19872 
19873       getDispatcher()->vkCmdSetPrimitiveTopologyEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPrimitiveTopology>( primitiveTopology ) );
19874     }
19875 
setViewportWithCountEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports) const19876     VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT(
19877       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
19878     {
19879       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWithCountEXT &&
19880                          "Function <vkCmdSetViewportWithCountEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19881 
19882       getDispatcher()->vkCmdSetViewportWithCountEXT(
19883         static_cast<VkCommandBuffer>( m_commandBuffer ), viewports.size(), reinterpret_cast<const VkViewport *>( viewports.data() ) );
19884     }
19885 
19886     VULKAN_HPP_INLINE void
setScissorWithCountEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors) const19887       CommandBuffer::setScissorWithCountEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
19888     {
19889       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissorWithCountEXT &&
19890                          "Function <vkCmdSetScissorWithCountEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19891 
19892       getDispatcher()->vkCmdSetScissorWithCountEXT(
19893         static_cast<VkCommandBuffer>( m_commandBuffer ), scissors.size(), reinterpret_cast<const VkRect2D *>( scissors.data() ) );
19894     }
19895 
19896     VULKAN_HPP_INLINE void
bindVertexBuffers2EXT(uint32_t firstBinding,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides) const19897       CommandBuffer::bindVertexBuffers2EXT( uint32_t                                                                         firstBinding,
19898                                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
19899                                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
19900                                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes,
19901                                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides ) const
19902     {
19903       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers2EXT &&
19904                          "Function <vkCmdBindVertexBuffers2EXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19905 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
19906       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
19907       VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
19908       VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() );
19909 #  else
19910       if ( buffers.size() != offsets.size() )
19911       {
19912         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != offsets.size()" );
19913       }
19914       if ( !sizes.empty() && buffers.size() != sizes.size() )
19915       {
19916         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != sizes.size()" );
19917       }
19918       if ( !strides.empty() && buffers.size() != strides.size() )
19919       {
19920         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != strides.size()" );
19921       }
19922 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
19923 
19924       getDispatcher()->vkCmdBindVertexBuffers2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
19925                                                    firstBinding,
19926                                                    buffers.size(),
19927                                                    reinterpret_cast<const VkBuffer *>( buffers.data() ),
19928                                                    reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
19929                                                    reinterpret_cast<const VkDeviceSize *>( sizes.data() ),
19930                                                    reinterpret_cast<const VkDeviceSize *>( strides.data() ) );
19931     }
19932 
setDepthTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable) const19933     VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT
19934     {
19935       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthTestEnableEXT &&
19936                          "Function <vkCmdSetDepthTestEnableEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19937 
19938       getDispatcher()->vkCmdSetDepthTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthTestEnable ) );
19939     }
19940 
setDepthWriteEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable) const19941     VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT
19942     {
19943       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthWriteEnableEXT &&
19944                          "Function <vkCmdSetDepthWriteEnableEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19945 
19946       getDispatcher()->vkCmdSetDepthWriteEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthWriteEnable ) );
19947     }
19948 
setDepthCompareOpEXT(VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp) const19949     VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT
19950     {
19951       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthCompareOpEXT &&
19952                          "Function <vkCmdSetDepthCompareOpEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19953 
19954       getDispatcher()->vkCmdSetDepthCompareOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCompareOp>( depthCompareOp ) );
19955     }
19956 
setDepthBoundsTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable) const19957     VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT
19958     {
19959       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT &&
19960                          "Function <vkCmdSetDepthBoundsTestEnableEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19961 
19962       getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthBoundsTestEnable ) );
19963     }
19964 
setStencilTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable) const19965     VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT
19966     {
19967       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilTestEnableEXT &&
19968                          "Function <vkCmdSetStencilTestEnableEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19969 
19970       getDispatcher()->vkCmdSetStencilTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( stencilTestEnable ) );
19971     }
19972 
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) const19973     VULKAN_HPP_INLINE void CommandBuffer::setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
19974                                                            VULKAN_HPP_NAMESPACE::StencilOp        failOp,
19975                                                            VULKAN_HPP_NAMESPACE::StencilOp        passOp,
19976                                                            VULKAN_HPP_NAMESPACE::StencilOp        depthFailOp,
19977                                                            VULKAN_HPP_NAMESPACE::CompareOp        compareOp ) const VULKAN_HPP_NOEXCEPT
19978     {
19979       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOpEXT &&
19980                          "Function <vkCmdSetStencilOpEXT> requires <VK_EXT_extended_dynamic_state> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
19981 
19982       getDispatcher()->vkCmdSetStencilOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
19983                                              static_cast<VkStencilFaceFlags>( faceMask ),
19984                                              static_cast<VkStencilOp>( failOp ),
19985                                              static_cast<VkStencilOp>( passOp ),
19986                                              static_cast<VkStencilOp>( depthFailOp ),
19987                                              static_cast<VkCompareOp>( compareOp ) );
19988     }
19989 
19990     //=== VK_KHR_deferred_host_operations ===
19991 
19992     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
19993       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR>::Type
createDeferredOperationKHR(VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const19994       Device::createDeferredOperationKHR( VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
19995       VULKAN_HPP_RAII_CREATE_NOEXCEPT
19996     {
19997       VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation;
19998       VULKAN_HPP_NAMESPACE::Result               result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDeferredOperationKHR(
19999         static_cast<VkDevice>( m_device ),
20000         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
20001         reinterpret_cast<VkDeferredOperationKHR *>( &deferredOperation ) ) );
20002       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
20003       {
20004 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
20005         return VULKAN_HPP_UNEXPECTED( result );
20006 #  else
20007         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createDeferredOperationKHR" );
20008 #  endif
20009       }
20010 
20011       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR(
20012         *this, *reinterpret_cast<VkDeferredOperationKHR *>( &deferredOperation ), allocator );
20013     }
20014 
getMaxConcurrency() const20015     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t DeferredOperationKHR::getMaxConcurrency() const VULKAN_HPP_NOEXCEPT
20016     {
20017       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR &&
20018                          "Function <vkGetDeferredOperationMaxConcurrencyKHR> requires <VK_KHR_deferred_host_operations>" );
20019 
20020       uint32_t result =
20021         getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR( static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_operation ) );
20022 
20023       return result;
20024     }
20025 
getResult() const20026     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result DeferredOperationKHR::getResult() const VULKAN_HPP_NOEXCEPT
20027     {
20028       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeferredOperationResultKHR &&
20029                          "Function <vkGetDeferredOperationResultKHR> requires <VK_KHR_deferred_host_operations>" );
20030 
20031       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20032         getDispatcher()->vkGetDeferredOperationResultKHR( static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_operation ) ) );
20033 
20034       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
20035     }
20036 
join() const20037     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result DeferredOperationKHR::join() const
20038     {
20039       VULKAN_HPP_ASSERT( getDispatcher()->vkDeferredOperationJoinKHR && "Function <vkDeferredOperationJoinKHR> requires <VK_KHR_deferred_host_operations>" );
20040 
20041       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20042         getDispatcher()->vkDeferredOperationJoinKHR( static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_operation ) ) );
20043       VULKAN_HPP_NAMESPACE::detail::resultCheck(
20044         result,
20045         VULKAN_HPP_NAMESPACE_STRING "::DeferredOperationKHR::join",
20046         { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eThreadDoneKHR, VULKAN_HPP_NAMESPACE::Result::eThreadIdleKHR } );
20047 
20048       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
20049     }
20050 
20051     //=== VK_KHR_pipeline_executable_properties ===
20052 
20053     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>
getPipelineExecutablePropertiesKHR(const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo) const20054                                            Device::getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR & pipelineInfo ) const
20055     {
20056       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutablePropertiesKHR &&
20057                          "Function <vkGetPipelineExecutablePropertiesKHR> requires <VK_KHR_pipeline_executable_properties>" );
20058 
20059       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR> properties;
20060       uint32_t                                                           executableCount;
20061       VULKAN_HPP_NAMESPACE::Result                                       result;
20062       do
20063       {
20064         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutablePropertiesKHR(
20065           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkPipelineInfoKHR *>( &pipelineInfo ), &executableCount, nullptr ) );
20066         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && executableCount )
20067         {
20068           properties.resize( executableCount );
20069           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20070             getDispatcher()->vkGetPipelineExecutablePropertiesKHR( static_cast<VkDevice>( m_device ),
20071                                                                    reinterpret_cast<const VkPipelineInfoKHR *>( &pipelineInfo ),
20072                                                                    &executableCount,
20073                                                                    reinterpret_cast<VkPipelineExecutablePropertiesKHR *>( properties.data() ) ) );
20074         }
20075       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
20076       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" );
20077       VULKAN_HPP_ASSERT( executableCount <= properties.size() );
20078       if ( executableCount < properties.size() )
20079       {
20080         properties.resize( executableCount );
20081       }
20082       return properties;
20083     }
20084 
20085     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR>
getPipelineExecutableStatisticsKHR(const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo) const20086       Device::getPipelineExecutableStatisticsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const
20087     {
20088       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutableStatisticsKHR &&
20089                          "Function <vkGetPipelineExecutableStatisticsKHR> requires <VK_KHR_pipeline_executable_properties>" );
20090 
20091       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR> statistics;
20092       uint32_t                                                          statisticCount;
20093       VULKAN_HPP_NAMESPACE::Result                                      result;
20094       do
20095       {
20096         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutableStatisticsKHR(
20097           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ), &statisticCount, nullptr ) );
20098         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && statisticCount )
20099         {
20100           statistics.resize( statisticCount );
20101           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20102             getDispatcher()->vkGetPipelineExecutableStatisticsKHR( static_cast<VkDevice>( m_device ),
20103                                                                    reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
20104                                                                    &statisticCount,
20105                                                                    reinterpret_cast<VkPipelineExecutableStatisticKHR *>( statistics.data() ) ) );
20106         }
20107       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
20108       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" );
20109       VULKAN_HPP_ASSERT( statisticCount <= statistics.size() );
20110       if ( statisticCount < statistics.size() )
20111       {
20112         statistics.resize( statisticCount );
20113       }
20114       return statistics;
20115     }
20116 
20117     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>
getPipelineExecutableInternalRepresentationsKHR(const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo) const20118       Device::getPipelineExecutableInternalRepresentationsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR & executableInfo ) const
20119     {
20120       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR &&
20121                          "Function <vkGetPipelineExecutableInternalRepresentationsKHR> requires <VK_KHR_pipeline_executable_properties>" );
20122 
20123       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR> internalRepresentations;
20124       uint32_t                                                                       internalRepresentationCount;
20125       VULKAN_HPP_NAMESPACE::Result                                                   result;
20126       do
20127       {
20128         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20129           getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR( static_cast<VkDevice>( m_device ),
20130                                                                               reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
20131                                                                               &internalRepresentationCount,
20132                                                                               nullptr ) );
20133         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && internalRepresentationCount )
20134         {
20135           internalRepresentations.resize( internalRepresentationCount );
20136           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR(
20137             static_cast<VkDevice>( m_device ),
20138             reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
20139             &internalRepresentationCount,
20140             reinterpret_cast<VkPipelineExecutableInternalRepresentationKHR *>( internalRepresentations.data() ) ) );
20141         }
20142       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
20143       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableInternalRepresentationsKHR" );
20144       VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() );
20145       if ( internalRepresentationCount < internalRepresentations.size() )
20146       {
20147         internalRepresentations.resize( internalRepresentationCount );
20148       }
20149       return internalRepresentations;
20150     }
20151 
20152     //=== VK_EXT_host_image_copy ===
20153 
copyMemoryToImageEXT(const VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT & copyMemoryToImageInfo) const20154     VULKAN_HPP_INLINE void Device::copyMemoryToImageEXT( const VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfoEXT & copyMemoryToImageInfo ) const
20155     {
20156       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToImageEXT && "Function <vkCopyMemoryToImageEXT> requires <VK_EXT_host_image_copy>" );
20157 
20158       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyMemoryToImageEXT(
20159         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyMemoryToImageInfoEXT *>( &copyMemoryToImageInfo ) ) );
20160       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToImageEXT" );
20161     }
20162 
copyImageToMemoryEXT(const VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT & copyImageToMemoryInfo) const20163     VULKAN_HPP_INLINE void Device::copyImageToMemoryEXT( const VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfoEXT & copyImageToMemoryInfo ) const
20164     {
20165       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToMemoryEXT && "Function <vkCopyImageToMemoryEXT> requires <VK_EXT_host_image_copy>" );
20166 
20167       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyImageToMemoryEXT(
20168         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyImageToMemoryInfoEXT *>( &copyImageToMemoryInfo ) ) );
20169       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyImageToMemoryEXT" );
20170     }
20171 
copyImageToImageEXT(const VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT & copyImageToImageInfo) const20172     VULKAN_HPP_INLINE void Device::copyImageToImageEXT( const VULKAN_HPP_NAMESPACE::CopyImageToImageInfoEXT & copyImageToImageInfo ) const
20173     {
20174       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToImageEXT && "Function <vkCopyImageToImageEXT> requires <VK_EXT_host_image_copy>" );
20175 
20176       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyImageToImageEXT(
20177         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkCopyImageToImageInfoEXT *>( &copyImageToImageInfo ) ) );
20178       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyImageToImageEXT" );
20179     }
20180 
transitionImageLayoutEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT> const & transitions) const20181     VULKAN_HPP_INLINE void Device::transitionImageLayoutEXT(
20182       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfoEXT> const & transitions ) const
20183     {
20184       VULKAN_HPP_ASSERT( getDispatcher()->vkTransitionImageLayoutEXT && "Function <vkTransitionImageLayoutEXT> requires <VK_EXT_host_image_copy>" );
20185 
20186       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkTransitionImageLayoutEXT(
20187         static_cast<VkDevice>( m_device ), transitions.size(), reinterpret_cast<const VkHostImageLayoutTransitionInfoEXT *>( transitions.data() ) ) );
20188       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::transitionImageLayoutEXT" );
20189     }
20190 
20191     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR
getSubresourceLayout2EXT(const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource) const20192       Image::getSubresourceLayout2EXT( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource ) const VULKAN_HPP_NOEXCEPT
20193     {
20194       VULKAN_HPP_ASSERT(
20195         getDispatcher()->vkGetImageSubresourceLayout2EXT &&
20196         "Function <vkGetImageSubresourceLayout2EXT> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5>" );
20197 
20198       VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR layout;
20199       getDispatcher()->vkGetImageSubresourceLayout2EXT( static_cast<VkDevice>( m_device ),
20200                                                         static_cast<VkImage>( m_image ),
20201                                                         reinterpret_cast<const VkImageSubresource2KHR *>( &subresource ),
20202                                                         reinterpret_cast<VkSubresourceLayout2KHR *>( &layout ) );
20203 
20204       return layout;
20205     }
20206 
20207     template <typename X, typename Y, typename... Z>
20208     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getSubresourceLayout2EXT(const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource) const20209       Image::getSubresourceLayout2EXT( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource ) const VULKAN_HPP_NOEXCEPT
20210     {
20211       VULKAN_HPP_ASSERT(
20212         getDispatcher()->vkGetImageSubresourceLayout2EXT &&
20213         "Function <vkGetImageSubresourceLayout2EXT> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5>" );
20214 
20215       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
20216       VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR &    layout = structureChain.template get<VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR>();
20217       getDispatcher()->vkGetImageSubresourceLayout2EXT( static_cast<VkDevice>( m_device ),
20218                                                         static_cast<VkImage>( m_image ),
20219                                                         reinterpret_cast<const VkImageSubresource2KHR *>( &subresource ),
20220                                                         reinterpret_cast<VkSubresourceLayout2KHR *>( &layout ) );
20221 
20222       return structureChain;
20223     }
20224 
20225     //=== VK_KHR_map_memory2 ===
20226 
mapMemory2KHR(const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR & memoryMapInfo) const20227     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void * Device::mapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryMapInfoKHR & memoryMapInfo ) const
20228     {
20229       VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory2KHR && "Function <vkMapMemory2KHR> requires <VK_KHR_map_memory2>" );
20230 
20231       void *                       pData;
20232       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20233         getDispatcher()->vkMapMemory2KHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryMapInfoKHR *>( &memoryMapInfo ), &pData ) );
20234       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mapMemory2KHR" );
20235 
20236       return pData;
20237     }
20238 
unmapMemory2KHR(const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR & memoryUnmapInfo) const20239     VULKAN_HPP_INLINE void Device::unmapMemory2KHR( const VULKAN_HPP_NAMESPACE::MemoryUnmapInfoKHR & memoryUnmapInfo ) const
20240     {
20241       VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory2KHR && "Function <vkUnmapMemory2KHR> requires <VK_KHR_map_memory2>" );
20242 
20243       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20244         getDispatcher()->vkUnmapMemory2KHR( static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryUnmapInfoKHR *>( &memoryUnmapInfo ) ) );
20245       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::unmapMemory2KHR" );
20246     }
20247 
20248     //=== VK_EXT_swapchain_maintenance1 ===
20249 
releaseSwapchainImagesEXT(const VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT & releaseInfo) const20250     VULKAN_HPP_INLINE void Device::releaseSwapchainImagesEXT( const VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoEXT & releaseInfo ) const
20251     {
20252       VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseSwapchainImagesEXT && "Function <vkReleaseSwapchainImagesEXT> requires <VK_EXT_swapchain_maintenance1>" );
20253 
20254       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkReleaseSwapchainImagesEXT(
20255         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkReleaseSwapchainImagesInfoEXT *>( &releaseInfo ) ) );
20256       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releaseSwapchainImagesEXT" );
20257     }
20258 
20259     //=== VK_NV_device_generated_commands ===
20260 
20261     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getGeneratedCommandsMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info) const20262       Device::getGeneratedCommandsMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
20263     {
20264       VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV &&
20265                          "Function <vkGetGeneratedCommandsMemoryRequirementsNV> requires <VK_NV_device_generated_commands>" );
20266 
20267       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
20268       getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
20269                                                                    reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( &info ),
20270                                                                    reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
20271 
20272       return memoryRequirements;
20273     }
20274 
20275     template <typename X, typename Y, typename... Z>
20276     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getGeneratedCommandsMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info) const20277       Device::getGeneratedCommandsMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
20278     {
20279       VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV &&
20280                          "Function <vkGetGeneratedCommandsMemoryRequirementsNV> requires <VK_NV_device_generated_commands>" );
20281 
20282       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
20283       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
20284       getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
20285                                                                    reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( &info ),
20286                                                                    reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
20287 
20288       return structureChain;
20289     }
20290 
20291     VULKAN_HPP_INLINE void
preprocessGeneratedCommandsNV(const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo) const20292       CommandBuffer::preprocessGeneratedCommandsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
20293     {
20294       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPreprocessGeneratedCommandsNV &&
20295                          "Function <vkCmdPreprocessGeneratedCommandsNV> requires <VK_NV_device_generated_commands>" );
20296 
20297       getDispatcher()->vkCmdPreprocessGeneratedCommandsNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
20298                                                            reinterpret_cast<const VkGeneratedCommandsInfoNV *>( &generatedCommandsInfo ) );
20299     }
20300 
20301     VULKAN_HPP_INLINE void
executeGeneratedCommandsNV(VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed,const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo) const20302       CommandBuffer::executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32                          isPreprocessed,
20303                                                  const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
20304     {
20305       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteGeneratedCommandsNV &&
20306                          "Function <vkCmdExecuteGeneratedCommandsNV> requires <VK_NV_device_generated_commands>" );
20307 
20308       getDispatcher()->vkCmdExecuteGeneratedCommandsNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
20309                                                         static_cast<VkBool32>( isPreprocessed ),
20310                                                         reinterpret_cast<const VkGeneratedCommandsInfoNV *>( &generatedCommandsInfo ) );
20311     }
20312 
bindPipelineShaderGroupNV(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::Pipeline pipeline,uint32_t groupIndex) const20313     VULKAN_HPP_INLINE void CommandBuffer::bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
20314                                                                      VULKAN_HPP_NAMESPACE::Pipeline          pipeline,
20315                                                                      uint32_t                                groupIndex ) const VULKAN_HPP_NOEXCEPT
20316     {
20317       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindPipelineShaderGroupNV &&
20318                          "Function <vkCmdBindPipelineShaderGroupNV> requires <VK_NV_device_generated_commands>" );
20319 
20320       getDispatcher()->vkCmdBindPipelineShaderGroupNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
20321                                                        static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
20322                                                        static_cast<VkPipeline>( pipeline ),
20323                                                        groupIndex );
20324     }
20325 
20326     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
20327       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV>::Type
createIndirectCommandsLayoutNV(VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const20328       Device::createIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const &                createInfo,
20329                                               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
20330       VULKAN_HPP_RAII_CREATE_NOEXCEPT
20331     {
20332       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout;
20333       VULKAN_HPP_NAMESPACE::Result                   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateIndirectCommandsLayoutNV(
20334         static_cast<VkDevice>( m_device ),
20335         reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNV *>( &createInfo ),
20336         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
20337         reinterpret_cast<VkIndirectCommandsLayoutNV *>( &indirectCommandsLayout ) ) );
20338       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
20339       {
20340 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
20341         return VULKAN_HPP_UNEXPECTED( result );
20342 #  else
20343         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createIndirectCommandsLayoutNV" );
20344 #  endif
20345       }
20346 
20347       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::IndirectCommandsLayoutNV(
20348         *this, *reinterpret_cast<VkIndirectCommandsLayoutNV *>( &indirectCommandsLayout ), allocator );
20349     }
20350 
20351     //=== VK_EXT_depth_bias_control ===
20352 
setDepthBias2EXT(const VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT & depthBiasInfo) const20353     VULKAN_HPP_INLINE void CommandBuffer::setDepthBias2EXT( const VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT & depthBiasInfo ) const VULKAN_HPP_NOEXCEPT
20354     {
20355       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBias2EXT && "Function <vkCmdSetDepthBias2EXT> requires <VK_EXT_depth_bias_control>" );
20356 
20357       getDispatcher()->vkCmdSetDepthBias2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkDepthBiasInfoEXT *>( &depthBiasInfo ) );
20358     }
20359 
20360     //=== VK_EXT_acquire_drm_display ===
20361 
acquireDrmDisplayEXT(int32_t drmFd,VULKAN_HPP_NAMESPACE::DisplayKHR display) const20362     VULKAN_HPP_INLINE void PhysicalDevice::acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const
20363     {
20364       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireDrmDisplayEXT && "Function <vkAcquireDrmDisplayEXT> requires <VK_EXT_acquire_drm_display>" );
20365 
20366       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20367         getDispatcher()->vkAcquireDrmDisplayEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), drmFd, static_cast<VkDisplayKHR>( display ) ) );
20368       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireDrmDisplayEXT" );
20369     }
20370 
20371     VULKAN_HPP_NODISCARD
20372       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>::Type
getDrmDisplayEXT(int32_t drmFd,uint32_t connectorId) const20373                         PhysicalDevice::getDrmDisplayEXT( int32_t drmFd, uint32_t connectorId ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
20374     {
20375       VULKAN_HPP_NAMESPACE::DisplayKHR display;
20376       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDrmDisplayEXT(
20377         static_cast<VkPhysicalDevice>( m_physicalDevice ), drmFd, connectorId, reinterpret_cast<VkDisplayKHR *>( &display ) ) );
20378       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
20379       {
20380 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
20381         return VULKAN_HPP_UNEXPECTED( result );
20382 #  else
20383         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "PhysicalDevice::getDrmDisplayEXT" );
20384 #  endif
20385       }
20386 
20387       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR( *this, *reinterpret_cast<VkDisplayKHR *>( &display ) );
20388     }
20389 
20390     //=== VK_EXT_private_data ===
20391 
20392     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
20393       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot>::Type
createPrivateDataSlotEXT(VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const20394       Device::createPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const &                         createInfo,
20395                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
20396       VULKAN_HPP_RAII_CREATE_NOEXCEPT
20397     {
20398       VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot;
20399       VULKAN_HPP_NAMESPACE::Result          result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreatePrivateDataSlotEXT(
20400         static_cast<VkDevice>( m_device ),
20401         reinterpret_cast<const VkPrivateDataSlotCreateInfo *>( &createInfo ),
20402         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
20403         reinterpret_cast<VkPrivateDataSlot *>( &privateDataSlot ) ) );
20404       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
20405       {
20406 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
20407         return VULKAN_HPP_UNEXPECTED( result );
20408 #  else
20409         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createPrivateDataSlotEXT" );
20410 #  endif
20411       }
20412 
20413       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PrivateDataSlot( *this, *reinterpret_cast<VkPrivateDataSlot *>( &privateDataSlot ), allocator );
20414     }
20415 
destroyPrivateDataSlotEXT(VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot,Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const20416     VULKAN_HPP_INLINE void Device::destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot                     privateDataSlot,
20417                                                               Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_NOEXCEPT
20418     {
20419       VULKAN_HPP_ASSERT( getDispatcher()->vkDestroyPrivateDataSlotEXT &&
20420                          "Function <vkDestroyPrivateDataSlotEXT> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
20421 
20422       getDispatcher()->vkDestroyPrivateDataSlotEXT(
20423         static_cast<VkDevice>( m_device ),
20424         static_cast<VkPrivateDataSlot>( privateDataSlot ),
20425         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) );
20426     }
20427 
setPrivateDataEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_,uint64_t objectHandle,VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot,uint64_t data) const20428     VULKAN_HPP_INLINE void Device::setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType      objectType_,
20429                                                       uint64_t                              objectHandle,
20430                                                       VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot,
20431                                                       uint64_t                              data ) const
20432     {
20433       VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateDataEXT && "Function <vkSetPrivateDataEXT> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
20434 
20435       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetPrivateDataEXT(
20436         static_cast<VkDevice>( m_device ), static_cast<VkObjectType>( objectType_ ), objectHandle, static_cast<VkPrivateDataSlot>( privateDataSlot ), data ) );
20437       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateDataEXT" );
20438     }
20439 
getPrivateDataEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_,uint64_t objectHandle,VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot) const20440     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType      objectType_,
20441                                                                                uint64_t                              objectHandle,
20442                                                                                VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT
20443     {
20444       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateDataEXT && "Function <vkGetPrivateDataEXT> requires <VK_EXT_private_data> or <VK_VERSION_1_3>" );
20445 
20446       uint64_t data;
20447       getDispatcher()->vkGetPrivateDataEXT(
20448         static_cast<VkDevice>( m_device ), static_cast<VkObjectType>( objectType_ ), objectHandle, static_cast<VkPrivateDataSlot>( privateDataSlot ), &data );
20449 
20450       return data;
20451     }
20452 
20453     //=== VK_KHR_video_encode_queue ===
20454 
getVideoEncodeQualityLevelPropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo) const20455     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR(
20456       const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo ) const
20457     {
20458       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR &&
20459                          "Function <vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR> requires <VK_KHR_video_encode_queue>" );
20460 
20461       VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR qualityLevelProperties;
20462       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
20463         static_cast<VkPhysicalDevice>( m_physicalDevice ),
20464         reinterpret_cast<const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( &qualityLevelInfo ),
20465         reinterpret_cast<VkVideoEncodeQualityLevelPropertiesKHR *>( &qualityLevelProperties ) ) );
20466       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR" );
20467 
20468       return qualityLevelProperties;
20469     }
20470 
20471     template <typename X, typename Y, typename... Z>
getVideoEncodeQualityLevelPropertiesKHR(const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo) const20472     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR(
20473       const VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR & qualityLevelInfo ) const
20474     {
20475       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR &&
20476                          "Function <vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR> requires <VK_KHR_video_encode_queue>" );
20477 
20478       StructureChain<X, Y, Z...>                                   structureChain;
20479       VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR & qualityLevelProperties =
20480         structureChain.template get<VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR>();
20481       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
20482         static_cast<VkPhysicalDevice>( m_physicalDevice ),
20483         reinterpret_cast<const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *>( &qualityLevelInfo ),
20484         reinterpret_cast<VkVideoEncodeQualityLevelPropertiesKHR *>( &qualityLevelProperties ) ) );
20485       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR" );
20486 
20487       return structureChain;
20488     }
20489 
20490     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR, std::vector<uint8_t>>
getEncodedVideoSessionParametersKHR(const VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo) const20491       Device::getEncodedVideoSessionParametersKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const
20492     {
20493       VULKAN_HPP_ASSERT( getDispatcher()->vkGetEncodedVideoSessionParametersKHR &&
20494                          "Function <vkGetEncodedVideoSessionParametersKHR> requires <VK_KHR_video_encode_queue>" );
20495 
20496       std::pair<VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR, std::vector<uint8_t>> data_;
20497       VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR &                                feedbackInfo = data_.first;
20498       std::vector<uint8_t> &                                                                             data         = data_.second;
20499       size_t                                                                                             dataSize;
20500       VULKAN_HPP_NAMESPACE::Result                                                                       result;
20501       do
20502       {
20503         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetEncodedVideoSessionParametersKHR(
20504           static_cast<VkDevice>( m_device ),
20505           reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( &videoSessionParametersInfo ),
20506           reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( &feedbackInfo ),
20507           &dataSize,
20508           nullptr ) );
20509         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
20510         {
20511           data.resize( dataSize );
20512           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetEncodedVideoSessionParametersKHR(
20513             static_cast<VkDevice>( m_device ),
20514             reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( &videoSessionParametersInfo ),
20515             reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( &feedbackInfo ),
20516             &dataSize,
20517             reinterpret_cast<void *>( data.data() ) ) );
20518         }
20519       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
20520       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" );
20521 
20522       return data_;
20523     }
20524 
20525     template <typename X, typename Y, typename... Z>
20526     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>, std::vector<uint8_t>>
getEncodedVideoSessionParametersKHR(const VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo) const20527       Device::getEncodedVideoSessionParametersKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR & videoSessionParametersInfo ) const
20528     {
20529       VULKAN_HPP_ASSERT( getDispatcher()->vkGetEncodedVideoSessionParametersKHR &&
20530                          "Function <vkGetEncodedVideoSessionParametersKHR> requires <VK_KHR_video_encode_queue>" );
20531 
20532       std::pair<VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>, std::vector<uint8_t>> data_;
20533       VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR &               feedbackInfo =
20534         data_.first.template get<VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR>();
20535       std::vector<uint8_t> &       data = data_.second;
20536       size_t                       dataSize;
20537       VULKAN_HPP_NAMESPACE::Result result;
20538       do
20539       {
20540         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetEncodedVideoSessionParametersKHR(
20541           static_cast<VkDevice>( m_device ),
20542           reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( &videoSessionParametersInfo ),
20543           reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( &feedbackInfo ),
20544           &dataSize,
20545           nullptr ) );
20546         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
20547         {
20548           data.resize( dataSize );
20549           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetEncodedVideoSessionParametersKHR(
20550             static_cast<VkDevice>( m_device ),
20551             reinterpret_cast<const VkVideoEncodeSessionParametersGetInfoKHR *>( &videoSessionParametersInfo ),
20552             reinterpret_cast<VkVideoEncodeSessionParametersFeedbackInfoKHR *>( &feedbackInfo ),
20553             &dataSize,
20554             reinterpret_cast<void *>( data.data() ) ) );
20555         }
20556       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
20557       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" );
20558 
20559       return data_;
20560     }
20561 
encodeVideoKHR(const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo) const20562     VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR( const VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT
20563     {
20564       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEncodeVideoKHR && "Function <vkCmdEncodeVideoKHR> requires <VK_KHR_video_encode_queue>" );
20565 
20566       getDispatcher()->vkCmdEncodeVideoKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkVideoEncodeInfoKHR *>( &encodeInfo ) );
20567     }
20568 
20569 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
20570     //=== VK_NV_cuda_kernel_launch ===
20571 
20572     VULKAN_HPP_NODISCARD
20573       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV>::Type
createCudaModuleNV(VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const20574                         Device::createCudaModuleNV( VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const &                            createInfo,
20575                                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
20576       VULKAN_HPP_RAII_CREATE_NOEXCEPT
20577     {
20578       VULKAN_HPP_NAMESPACE::CudaModuleNV module;
20579       VULKAN_HPP_NAMESPACE::Result       result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateCudaModuleNV(
20580         static_cast<VkDevice>( m_device ),
20581         reinterpret_cast<const VkCudaModuleCreateInfoNV *>( &createInfo ),
20582         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
20583         reinterpret_cast<VkCudaModuleNV *>( &module ) ) );
20584       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
20585       {
20586 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
20587         return VULKAN_HPP_UNEXPECTED( result );
20588 #    else
20589         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createCudaModuleNV" );
20590 #    endif
20591       }
20592 
20593       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaModuleNV( *this, *reinterpret_cast<VkCudaModuleNV *>( &module ), allocator );
20594     }
20595 
getCache() const20596     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> CudaModuleNV::getCache() const
20597     {
20598       VULKAN_HPP_ASSERT( getDispatcher()->vkGetCudaModuleCacheNV && "Function <vkGetCudaModuleCacheNV> requires <VK_NV_cuda_kernel_launch>" );
20599 
20600       std::vector<uint8_t>         cacheData;
20601       size_t                       cacheSize;
20602       VULKAN_HPP_NAMESPACE::Result result;
20603       do
20604       {
20605         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
20606           getDispatcher()->vkGetCudaModuleCacheNV( static_cast<VkDevice>( m_device ), static_cast<VkCudaModuleNV>( m_module ), &cacheSize, nullptr ) );
20607         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && cacheSize )
20608         {
20609           cacheData.resize( cacheSize );
20610           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetCudaModuleCacheNV(
20611             static_cast<VkDevice>( m_device ), static_cast<VkCudaModuleNV>( m_module ), &cacheSize, reinterpret_cast<void *>( cacheData.data() ) ) );
20612         }
20613       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
20614       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CudaModuleNV::getCache" );
20615       VULKAN_HPP_ASSERT( cacheSize <= cacheData.size() );
20616       if ( cacheSize < cacheData.size() )
20617       {
20618         cacheData.resize( cacheSize );
20619       }
20620       return cacheData;
20621     }
20622 
20623     VULKAN_HPP_NODISCARD
20624       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV>::Type
createCudaFunctionNV(VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const20625                         Device::createCudaFunctionNV( VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const &                          createInfo,
20626                                     VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
20627       VULKAN_HPP_RAII_CREATE_NOEXCEPT
20628     {
20629       VULKAN_HPP_NAMESPACE::CudaFunctionNV function;
20630       VULKAN_HPP_NAMESPACE::Result         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateCudaFunctionNV(
20631         static_cast<VkDevice>( m_device ),
20632         reinterpret_cast<const VkCudaFunctionCreateInfoNV *>( &createInfo ),
20633         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
20634         reinterpret_cast<VkCudaFunctionNV *>( &function ) ) );
20635       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
20636       {
20637 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
20638         return VULKAN_HPP_UNEXPECTED( result );
20639 #    else
20640         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createCudaFunctionNV" );
20641 #    endif
20642       }
20643 
20644       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CudaFunctionNV( *this, *reinterpret_cast<VkCudaFunctionNV *>( &function ), allocator );
20645     }
20646 
cudaLaunchKernelNV(const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV & launchInfo) const20647     VULKAN_HPP_INLINE void CommandBuffer::cudaLaunchKernelNV( const VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV & launchInfo ) const VULKAN_HPP_NOEXCEPT
20648     {
20649       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCudaLaunchKernelNV && "Function <vkCmdCudaLaunchKernelNV> requires <VK_NV_cuda_kernel_launch>" );
20650 
20651       getDispatcher()->vkCmdCudaLaunchKernelNV( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCudaLaunchInfoNV *>( &launchInfo ) );
20652     }
20653 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
20654 
20655 #  if defined( VK_USE_PLATFORM_METAL_EXT )
20656     //=== VK_EXT_metal_objects ===
20657 
exportMetalObjectsEXT() const20658     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT Device::exportMetalObjectsEXT() const VULKAN_HPP_NOEXCEPT
20659     {
20660       VULKAN_HPP_ASSERT( getDispatcher()->vkExportMetalObjectsEXT && "Function <vkExportMetalObjectsEXT> requires <VK_EXT_metal_objects>" );
20661 
20662       VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT metalObjectsInfo;
20663       getDispatcher()->vkExportMetalObjectsEXT( static_cast<VkDevice>( m_device ), reinterpret_cast<VkExportMetalObjectsInfoEXT *>( &metalObjectsInfo ) );
20664 
20665       return metalObjectsInfo;
20666     }
20667 
20668     template <typename X, typename Y, typename... Z>
exportMetalObjectsEXT() const20669     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> Device::exportMetalObjectsEXT() const VULKAN_HPP_NOEXCEPT
20670     {
20671       VULKAN_HPP_ASSERT( getDispatcher()->vkExportMetalObjectsEXT && "Function <vkExportMetalObjectsEXT> requires <VK_EXT_metal_objects>" );
20672 
20673       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>  structureChain;
20674       VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT & metalObjectsInfo = structureChain.template get<VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT>();
20675       getDispatcher()->vkExportMetalObjectsEXT( static_cast<VkDevice>( m_device ), reinterpret_cast<VkExportMetalObjectsInfoEXT *>( &metalObjectsInfo ) );
20676 
20677       return structureChain;
20678     }
20679 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
20680 
20681     //=== VK_KHR_synchronization2 ===
20682 
setEvent2KHR(VULKAN_HPP_NAMESPACE::Event event,const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo) const20683     VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( VULKAN_HPP_NAMESPACE::Event                  event,
20684                                                         const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
20685     {
20686       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2KHR && "Function <vkCmdSetEvent2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
20687 
20688       getDispatcher()->vkCmdSetEvent2KHR(
20689         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), reinterpret_cast<const VkDependencyInfo *>( &dependencyInfo ) );
20690     }
20691 
resetEvent2KHR(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask) const20692     VULKAN_HPP_INLINE void CommandBuffer::resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event               event,
20693                                                           VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT
20694     {
20695       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2KHR && "Function <vkCmdResetEvent2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
20696 
20697       getDispatcher()->vkCmdResetEvent2KHR(
20698         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags2>( stageMask ) );
20699     }
20700 
20701     VULKAN_HPP_INLINE void
waitEvents2KHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfo> const & dependencyInfos) const20702       CommandBuffer::waitEvents2KHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &          events,
20703                                      VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfo> const & dependencyInfos ) const
20704     {
20705       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2KHR && "Function <vkCmdWaitEvents2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
20706 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
20707       VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() );
20708 #  else
20709       if ( events.size() != dependencyInfos.size() )
20710       {
20711         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::waitEvents2KHR: events.size() != dependencyInfos.size()" );
20712       }
20713 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
20714 
20715       getDispatcher()->vkCmdWaitEvents2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
20716                                             events.size(),
20717                                             reinterpret_cast<const VkEvent *>( events.data() ),
20718                                             reinterpret_cast<const VkDependencyInfo *>( dependencyInfos.data() ) );
20719     }
20720 
pipelineBarrier2KHR(const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo) const20721     VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfo & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
20722     {
20723       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2KHR &&
20724                          "Function <vkCmdPipelineBarrier2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
20725 
20726       getDispatcher()->vkCmdPipelineBarrier2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
20727                                                  reinterpret_cast<const VkDependencyInfo *>( &dependencyInfo ) );
20728     }
20729 
writeTimestamp2KHR(VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const20730     VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage,
20731                                                               VULKAN_HPP_NAMESPACE::QueryPool           queryPool,
20732                                                               uint32_t                                  query ) const VULKAN_HPP_NOEXCEPT
20733     {
20734       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2KHR &&
20735                          "Function <vkCmdWriteTimestamp2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
20736 
20737       getDispatcher()->vkCmdWriteTimestamp2KHR(
20738         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineStageFlags2>( stage ), static_cast<VkQueryPool>( queryPool ), query );
20739     }
20740 
submit2KHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2> const & submits,VULKAN_HPP_NAMESPACE::Fence fence) const20741     VULKAN_HPP_INLINE void Queue::submit2KHR( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2> const & submits,
20742                                               VULKAN_HPP_NAMESPACE::Fence                                                       fence ) const
20743     {
20744       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2KHR && "Function <vkQueueSubmit2KHR> requires <VK_KHR_synchronization2> or <VK_VERSION_1_3>" );
20745 
20746       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueueSubmit2KHR(
20747         static_cast<VkQueue>( m_queue ), submits.size(), reinterpret_cast<const VkSubmitInfo2 *>( submits.data() ), static_cast<VkFence>( fence ) ) );
20748       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2KHR" );
20749     }
20750 
writeBufferMarker2AMD(VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,uint32_t marker) const20751     VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2 stage,
20752                                                                  VULKAN_HPP_NAMESPACE::Buffer              dstBuffer,
20753                                                                  VULKAN_HPP_NAMESPACE::DeviceSize          dstOffset,
20754                                                                  uint32_t                                  marker ) const VULKAN_HPP_NOEXCEPT
20755     {
20756       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarker2AMD && "Function <vkCmdWriteBufferMarker2AMD> requires <VK_KHR_synchronization2>" );
20757 
20758       getDispatcher()->vkCmdWriteBufferMarker2AMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
20759                                                    static_cast<VkPipelineStageFlags2>( stage ),
20760                                                    static_cast<VkBuffer>( dstBuffer ),
20761                                                    static_cast<VkDeviceSize>( dstOffset ),
20762                                                    marker );
20763     }
20764 
getCheckpointData2NV() const20765     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV> Queue::getCheckpointData2NV() const
20766     {
20767       VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointData2NV && "Function <vkGetQueueCheckpointData2NV> requires <VK_KHR_synchronization2>" );
20768 
20769       std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV> checkpointData;
20770       uint32_t                                             checkpointDataCount;
20771       getDispatcher()->vkGetQueueCheckpointData2NV( static_cast<VkQueue>( m_queue ), &checkpointDataCount, nullptr );
20772       checkpointData.resize( checkpointDataCount );
20773       getDispatcher()->vkGetQueueCheckpointData2NV(
20774         static_cast<VkQueue>( m_queue ), &checkpointDataCount, reinterpret_cast<VkCheckpointData2NV *>( checkpointData.data() ) );
20775 
20776       VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
20777       if ( checkpointDataCount < checkpointData.size() )
20778       {
20779         checkpointData.resize( checkpointDataCount );
20780       }
20781       return checkpointData;
20782     }
20783 
20784     //=== VK_EXT_descriptor_buffer ===
20785 
getSizeEXT() const20786     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize DescriptorSetLayout::getSizeEXT() const VULKAN_HPP_NOEXCEPT
20787     {
20788       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSizeEXT && "Function <vkGetDescriptorSetLayoutSizeEXT> requires <VK_EXT_descriptor_buffer>" );
20789 
20790       VULKAN_HPP_NAMESPACE::DeviceSize layoutSizeInBytes;
20791       getDispatcher()->vkGetDescriptorSetLayoutSizeEXT( static_cast<VkDevice>( m_device ),
20792                                                         static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ),
20793                                                         reinterpret_cast<VkDeviceSize *>( &layoutSizeInBytes ) );
20794 
20795       return layoutSizeInBytes;
20796     }
20797 
20798     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize
getBindingOffsetEXT(uint32_t binding) const20799                                            DescriptorSetLayout::getBindingOffsetEXT( uint32_t binding ) const VULKAN_HPP_NOEXCEPT
20800     {
20801       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutBindingOffsetEXT &&
20802                          "Function <vkGetDescriptorSetLayoutBindingOffsetEXT> requires <VK_EXT_descriptor_buffer>" );
20803 
20804       VULKAN_HPP_NAMESPACE::DeviceSize offset;
20805       getDispatcher()->vkGetDescriptorSetLayoutBindingOffsetEXT(
20806         static_cast<VkDevice>( m_device ), static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ), binding, reinterpret_cast<VkDeviceSize *>( &offset ) );
20807 
20808       return offset;
20809     }
20810 
getDescriptorEXT(const VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT & descriptorInfo,size_t dataSize,void * pDescriptor) const20811     VULKAN_HPP_INLINE void Device::getDescriptorEXT( const VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT & descriptorInfo,
20812                                                      size_t                                             dataSize,
20813                                                      void *                                             pDescriptor ) const VULKAN_HPP_NOEXCEPT
20814     {
20815       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorEXT && "Function <vkGetDescriptorEXT> requires <VK_EXT_descriptor_buffer>" );
20816 
20817       getDispatcher()->vkGetDescriptorEXT(
20818         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDescriptorGetInfoEXT *>( &descriptorInfo ), dataSize, pDescriptor );
20819     }
20820 
20821     template <typename DescriptorType>
20822     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorType
getDescriptorEXT(const VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT & descriptorInfo) const20823       Device::getDescriptorEXT( const VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT & descriptorInfo ) const VULKAN_HPP_NOEXCEPT
20824     {
20825       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorEXT && "Function <vkGetDescriptorEXT> requires <VK_EXT_descriptor_buffer>" );
20826 
20827       DescriptorType descriptor;
20828       getDispatcher()->vkGetDescriptorEXT( static_cast<VkDevice>( m_device ),
20829                                            reinterpret_cast<const VkDescriptorGetInfoEXT *>( &descriptorInfo ),
20830                                            sizeof( DescriptorType ),
20831                                            reinterpret_cast<void *>( &descriptor ) );
20832 
20833       return descriptor;
20834     }
20835 
bindDescriptorBuffersEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT> const & bindingInfos) const20836     VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBuffersEXT(
20837       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT> const & bindingInfos ) const VULKAN_HPP_NOEXCEPT
20838     {
20839       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBuffersEXT && "Function <vkCmdBindDescriptorBuffersEXT> requires <VK_EXT_descriptor_buffer>" );
20840 
20841       getDispatcher()->vkCmdBindDescriptorBuffersEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
20842                                                       bindingInfos.size(),
20843                                                       reinterpret_cast<const VkDescriptorBufferBindingInfoEXT *>( bindingInfos.data() ) );
20844     }
20845 
20846     VULKAN_HPP_INLINE void
setDescriptorBufferOffsetsEXT(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t firstSet,VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const & bufferIndices,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets) const20847       CommandBuffer::setDescriptorBufferOffsetsEXT( VULKAN_HPP_NAMESPACE::PipelineBindPoint                                          pipelineBindPoint,
20848                                                     VULKAN_HPP_NAMESPACE::PipelineLayout                                             layout,
20849                                                     uint32_t                                                                         firstSet,
20850                                                     VULKAN_HPP_NAMESPACE::ArrayProxy<const uint32_t> const &                         bufferIndices,
20851                                                     VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets ) const
20852     {
20853       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDescriptorBufferOffsetsEXT &&
20854                          "Function <vkCmdSetDescriptorBufferOffsetsEXT> requires <VK_EXT_descriptor_buffer>" );
20855 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
20856       VULKAN_HPP_ASSERT( bufferIndices.size() == offsets.size() );
20857 #  else
20858       if ( bufferIndices.size() != offsets.size() )
20859       {
20860         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setDescriptorBufferOffsetsEXT: bufferIndices.size() != offsets.size()" );
20861       }
20862 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
20863 
20864       getDispatcher()->vkCmdSetDescriptorBufferOffsetsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
20865                                                            static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
20866                                                            static_cast<VkPipelineLayout>( layout ),
20867                                                            firstSet,
20868                                                            bufferIndices.size(),
20869                                                            bufferIndices.data(),
20870                                                            reinterpret_cast<const VkDeviceSize *>( offsets.data() ) );
20871     }
20872 
bindDescriptorBufferEmbeddedSamplersEXT(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t set) const20873     VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplersEXT( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
20874                                                                                    VULKAN_HPP_NAMESPACE::PipelineLayout    layout,
20875                                                                                    uint32_t                                set ) const VULKAN_HPP_NOEXCEPT
20876     {
20877       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplersEXT &&
20878                          "Function <vkCmdBindDescriptorBufferEmbeddedSamplersEXT> requires <VK_EXT_descriptor_buffer>" );
20879 
20880       getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplersEXT(
20881         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set );
20882     }
20883 
20884     template <typename DataType>
20885     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType
getBufferOpaqueCaptureDescriptorDataEXT(const VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT & info) const20886       Device::getBufferOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT & info ) const
20887     {
20888       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureDescriptorDataEXT &&
20889                          "Function <vkGetBufferOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
20890 
20891       DataType                     data;
20892       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetBufferOpaqueCaptureDescriptorDataEXT(
20893         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
20894       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getBufferOpaqueCaptureDescriptorDataEXT" );
20895 
20896       return data;
20897     }
20898 
20899     template <typename DataType>
20900     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType
getImageOpaqueCaptureDescriptorDataEXT(const VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT & info) const20901       Device::getImageOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT & info ) const
20902     {
20903       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageOpaqueCaptureDescriptorDataEXT &&
20904                          "Function <vkGetImageOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
20905 
20906       DataType                     data;
20907       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetImageOpaqueCaptureDescriptorDataEXT(
20908         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
20909       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageOpaqueCaptureDescriptorDataEXT" );
20910 
20911       return data;
20912     }
20913 
20914     template <typename DataType>
20915     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType
getImageViewOpaqueCaptureDescriptorDataEXT(const VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT & info) const20916       Device::getImageViewOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT & info ) const
20917     {
20918       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewOpaqueCaptureDescriptorDataEXT &&
20919                          "Function <vkGetImageViewOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
20920 
20921       DataType                     data;
20922       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetImageViewOpaqueCaptureDescriptorDataEXT(
20923         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImageViewCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
20924       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageViewOpaqueCaptureDescriptorDataEXT" );
20925 
20926       return data;
20927     }
20928 
20929     template <typename DataType>
20930     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType
getSamplerOpaqueCaptureDescriptorDataEXT(const VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT & info) const20931       Device::getSamplerOpaqueCaptureDescriptorDataEXT( const VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT & info ) const
20932     {
20933       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSamplerOpaqueCaptureDescriptorDataEXT &&
20934                          "Function <vkGetSamplerOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
20935 
20936       DataType                     data;
20937       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSamplerOpaqueCaptureDescriptorDataEXT(
20938         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSamplerCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
20939       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSamplerOpaqueCaptureDescriptorDataEXT" );
20940 
20941       return data;
20942     }
20943 
20944     template <typename DataType>
getAccelerationStructureOpaqueCaptureDescriptorDataEXT(const VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT & info) const20945     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT(
20946       const VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT & info ) const
20947     {
20948       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT &&
20949                          "Function <vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT> requires <VK_EXT_descriptor_buffer>" );
20950 
20951       DataType                     data;
20952       VULKAN_HPP_NAMESPACE::Result result =
20953         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
20954           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAccelerationStructureCaptureDescriptorDataInfoEXT *>( &info ), &data ) );
20955       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT" );
20956 
20957       return data;
20958     }
20959 
20960     //=== VK_NV_fragment_shading_rate_enums ===
20961 
20962     VULKAN_HPP_INLINE void
setFragmentShadingRateEnumNV(VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate,const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2]) const20963       CommandBuffer::setFragmentShadingRateEnumNV( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV                  shadingRate,
20964                                                    const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT
20965     {
20966       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFragmentShadingRateEnumNV &&
20967                          "Function <vkCmdSetFragmentShadingRateEnumNV> requires <VK_NV_fragment_shading_rate_enums>" );
20968 
20969       getDispatcher()->vkCmdSetFragmentShadingRateEnumNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
20970                                                           static_cast<VkFragmentShadingRateNV>( shadingRate ),
20971                                                           reinterpret_cast<const VkFragmentShadingRateCombinerOpKHR *>( combinerOps ) );
20972     }
20973 
20974     //=== VK_EXT_mesh_shader ===
20975 
drawMeshTasksEXT(uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const20976     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksEXT( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
20977     {
20978       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksEXT && "Function <vkCmdDrawMeshTasksEXT> requires <VK_EXT_mesh_shader>" );
20979 
20980       getDispatcher()->vkCmdDrawMeshTasksEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), groupCountX, groupCountY, groupCountZ );
20981     }
20982 
drawMeshTasksIndirectEXT(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const20983     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectEXT( VULKAN_HPP_NAMESPACE::Buffer     buffer,
20984                                                                     VULKAN_HPP_NAMESPACE::DeviceSize offset,
20985                                                                     uint32_t                         drawCount,
20986                                                                     uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
20987     {
20988       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectEXT && "Function <vkCmdDrawMeshTasksIndirectEXT> requires <VK_EXT_mesh_shader>" );
20989 
20990       getDispatcher()->vkCmdDrawMeshTasksIndirectEXT(
20991         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ), drawCount, stride );
20992     }
20993 
drawMeshTasksIndirectCountEXT(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) const20994     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountEXT( VULKAN_HPP_NAMESPACE::Buffer     buffer,
20995                                                                          VULKAN_HPP_NAMESPACE::DeviceSize offset,
20996                                                                          VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
20997                                                                          VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
20998                                                                          uint32_t                         maxDrawCount,
20999                                                                          uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
21000     {
21001       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountEXT && "Function <vkCmdDrawMeshTasksIndirectCountEXT> requires <VK_EXT_mesh_shader>" );
21002 
21003       getDispatcher()->vkCmdDrawMeshTasksIndirectCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21004                                                            static_cast<VkBuffer>( buffer ),
21005                                                            static_cast<VkDeviceSize>( offset ),
21006                                                            static_cast<VkBuffer>( countBuffer ),
21007                                                            static_cast<VkDeviceSize>( countBufferOffset ),
21008                                                            maxDrawCount,
21009                                                            stride );
21010     }
21011 
21012     //=== VK_KHR_copy_commands2 ===
21013 
copyBuffer2KHR(const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo) const21014     VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2 & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT
21015     {
21016       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2KHR && "Function <vkCmdCopyBuffer2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
21017 
21018       getDispatcher()->vkCmdCopyBuffer2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyBufferInfo2 *>( &copyBufferInfo ) );
21019     }
21020 
copyImage2KHR(const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo) const21021     VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2 & copyImageInfo ) const VULKAN_HPP_NOEXCEPT
21022     {
21023       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2KHR && "Function <vkCmdCopyImage2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
21024 
21025       getDispatcher()->vkCmdCopyImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyImageInfo2 *>( &copyImageInfo ) );
21026     }
21027 
21028     VULKAN_HPP_INLINE void
copyBufferToImage2KHR(const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo) const21029       CommandBuffer::copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT
21030     {
21031       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2KHR &&
21032                          "Function <vkCmdCopyBufferToImage2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
21033 
21034       getDispatcher()->vkCmdCopyBufferToImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21035                                                    reinterpret_cast<const VkCopyBufferToImageInfo2 *>( &copyBufferToImageInfo ) );
21036     }
21037 
21038     VULKAN_HPP_INLINE void
copyImageToBuffer2KHR(const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo) const21039       CommandBuffer::copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT
21040     {
21041       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2KHR &&
21042                          "Function <vkCmdCopyImageToBuffer2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
21043 
21044       getDispatcher()->vkCmdCopyImageToBuffer2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21045                                                    reinterpret_cast<const VkCopyImageToBufferInfo2 *>( &copyImageToBufferInfo ) );
21046     }
21047 
blitImage2KHR(const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo) const21048     VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2 & blitImageInfo ) const VULKAN_HPP_NOEXCEPT
21049     {
21050       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2KHR && "Function <vkCmdBlitImage2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
21051 
21052       getDispatcher()->vkCmdBlitImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkBlitImageInfo2 *>( &blitImageInfo ) );
21053     }
21054 
resolveImage2KHR(const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo) const21055     VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2 & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT
21056     {
21057       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2KHR && "Function <vkCmdResolveImage2KHR> requires <VK_KHR_copy_commands2> or <VK_VERSION_1_3>" );
21058 
21059       getDispatcher()->vkCmdResolveImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
21060                                               reinterpret_cast<const VkResolveImageInfo2 *>( &resolveImageInfo ) );
21061     }
21062 
21063     //=== VK_EXT_device_fault ===
21064 
21065     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT, VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT>
getFaultInfoEXT() const21066                                            Device::getFaultInfoEXT() const
21067     {
21068       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceFaultInfoEXT && "Function <vkGetDeviceFaultInfoEXT> requires <VK_EXT_device_fault>" );
21069 
21070       std::pair<VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT, VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT> data_;
21071       VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT &                                                    faultCounts = data_.first;
21072       VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT &                                                      faultInfo   = data_.second;
21073       VULKAN_HPP_NAMESPACE::Result                                                                    result;
21074       do
21075       {
21076         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21077           getDispatcher()->vkGetDeviceFaultInfoEXT( m_device, reinterpret_cast<VkDeviceFaultCountsEXT *>( &faultCounts ), nullptr ) );
21078         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
21079         {
21080           std::free( faultInfo.pAddressInfos );
21081           if ( faultCounts.addressInfoCount )
21082           {
21083             faultInfo.pAddressInfos = reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT *>(
21084               std::malloc( faultCounts.addressInfoCount * sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoEXT ) ) );
21085           }
21086           std::free( faultInfo.pVendorInfos );
21087           if ( faultCounts.vendorInfoCount )
21088           {
21089             faultInfo.pVendorInfos = reinterpret_cast<VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT *>(
21090               std::malloc( faultCounts.vendorInfoCount * sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoEXT ) ) );
21091           }
21092           std::free( faultInfo.pVendorBinaryData );
21093           if ( faultCounts.vendorBinarySize )
21094           {
21095             faultInfo.pVendorBinaryData = std::malloc( faultCounts.vendorBinarySize );
21096           }
21097           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceFaultInfoEXT(
21098             m_device, reinterpret_cast<VkDeviceFaultCountsEXT *>( &faultCounts ), reinterpret_cast<VkDeviceFaultInfoEXT *>( &faultInfo ) ) );
21099         }
21100       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
21101       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21102                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::getFaultInfoEXT",
21103                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eIncomplete } );
21104 
21105       return data_;
21106     }
21107 
21108 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
21109     //=== VK_NV_acquire_winrt_display ===
21110 
acquireWinrtNV() const21111     VULKAN_HPP_INLINE void DisplayKHR::acquireWinrtNV() const
21112     {
21113       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireWinrtDisplayNV && "Function <vkAcquireWinrtDisplayNV> requires <VK_NV_acquire_winrt_display>" );
21114 
21115       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21116         getDispatcher()->vkAcquireWinrtDisplayNV( static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_display ) ) );
21117       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::acquireWinrtNV" );
21118     }
21119 
21120     VULKAN_HPP_NODISCARD
21121       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>::Type
getWinrtDisplayNV(uint32_t deviceRelativeId) const21122                         PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
21123     {
21124       VULKAN_HPP_NAMESPACE::DisplayKHR display;
21125       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetWinrtDisplayNV(
21126         static_cast<VkPhysicalDevice>( m_physicalDevice ), deviceRelativeId, reinterpret_cast<VkDisplayKHR *>( &display ) ) );
21127       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
21128       {
21129 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
21130         return VULKAN_HPP_UNEXPECTED( result );
21131 #    else
21132         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "PhysicalDevice::getWinrtDisplayNV" );
21133 #    endif
21134       }
21135 
21136       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR( *this, *reinterpret_cast<VkDisplayKHR *>( &display ) );
21137     }
21138 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
21139 
21140 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
21141     //=== VK_EXT_directfb_surface ===
21142 
21143     VULKAN_HPP_NODISCARD
21144       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createDirectFBSurfaceEXT(VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const21145                         Instance::createDirectFBSurfaceEXT( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const &                      createInfo,
21146                                           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
21147       VULKAN_HPP_RAII_CREATE_NOEXCEPT
21148     {
21149       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
21150       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDirectFBSurfaceEXT(
21151         static_cast<VkInstance>( m_instance ),
21152         reinterpret_cast<const VkDirectFBSurfaceCreateInfoEXT *>( &createInfo ),
21153         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
21154         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
21155       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
21156       {
21157 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
21158         return VULKAN_HPP_UNEXPECTED( result );
21159 #    else
21160         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createDirectFBSurfaceEXT" );
21161 #    endif
21162       }
21163 
21164       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
21165     }
21166 
21167     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getDirectFBPresentationSupportEXT(uint32_t queueFamilyIndex,IDirectFB & dfb) const21168       PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT
21169     {
21170       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT &&
21171                          "Function <vkGetPhysicalDeviceDirectFBPresentationSupportEXT> requires <VK_EXT_directfb_surface>" );
21172 
21173       VkBool32 result =
21174         getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &dfb );
21175 
21176       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( result );
21177     }
21178 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
21179 
21180     //=== VK_EXT_vertex_input_dynamic_state ===
21181 
setVertexInputEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const & vertexBindingDescriptions,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const & vertexAttributeDescriptions) const21182     VULKAN_HPP_INLINE void CommandBuffer::setVertexInputEXT(
21183       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const &   vertexBindingDescriptions,
21184       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const & vertexAttributeDescriptions ) const
21185       VULKAN_HPP_NOEXCEPT
21186     {
21187       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetVertexInputEXT &&
21188                          "Function <vkCmdSetVertexInputEXT> requires <VK_EXT_shader_object> or <VK_EXT_vertex_input_dynamic_state>" );
21189 
21190       getDispatcher()->vkCmdSetVertexInputEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21191                                                vertexBindingDescriptions.size(),
21192                                                reinterpret_cast<const VkVertexInputBindingDescription2EXT *>( vertexBindingDescriptions.data() ),
21193                                                vertexAttributeDescriptions.size(),
21194                                                reinterpret_cast<const VkVertexInputAttributeDescription2EXT *>( vertexAttributeDescriptions.data() ) );
21195     }
21196 
21197 #  if defined( VK_USE_PLATFORM_FUCHSIA )
21198     //=== VK_FUCHSIA_external_memory ===
21199 
21200     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE zx_handle_t
getMemoryZirconHandleFUCHSIA(const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo) const21201       Device::getMemoryZirconHandleFUCHSIA( const VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const
21202     {
21203       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA && "Function <vkGetMemoryZirconHandleFUCHSIA> requires <VK_FUCHSIA_external_memory>" );
21204 
21205       zx_handle_t                  zirconHandle;
21206       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA(
21207         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetZirconHandleInfoFUCHSIA *>( &getZirconHandleInfo ), &zirconHandle ) );
21208       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandleFUCHSIA" );
21209 
21210       return zirconHandle;
21211     }
21212 
21213     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA
getMemoryZirconHandlePropertiesFUCHSIA(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,zx_handle_t zirconHandle) const21214       Device::getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle ) const
21215     {
21216       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA &&
21217                          "Function <vkGetMemoryZirconHandlePropertiesFUCHSIA> requires <VK_FUCHSIA_external_memory>" );
21218 
21219       VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA memoryZirconHandleProperties;
21220       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA(
21221         static_cast<VkDevice>( m_device ),
21222         static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
21223         zirconHandle,
21224         reinterpret_cast<VkMemoryZirconHandlePropertiesFUCHSIA *>( &memoryZirconHandleProperties ) ) );
21225       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandlePropertiesFUCHSIA" );
21226 
21227       return memoryZirconHandleProperties;
21228     }
21229 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
21230 
21231 #  if defined( VK_USE_PLATFORM_FUCHSIA )
21232     //=== VK_FUCHSIA_external_semaphore ===
21233 
21234     VULKAN_HPP_INLINE void
importSemaphoreZirconHandleFUCHSIA(const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo) const21235       Device::importSemaphoreZirconHandleFUCHSIA( const VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const
21236     {
21237       VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA &&
21238                          "Function <vkImportSemaphoreZirconHandleFUCHSIA> requires <VK_FUCHSIA_external_semaphore>" );
21239 
21240       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA(
21241         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportSemaphoreZirconHandleInfoFUCHSIA *>( &importSemaphoreZirconHandleInfo ) ) );
21242       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreZirconHandleFUCHSIA" );
21243     }
21244 
21245     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE zx_handle_t
getSemaphoreZirconHandleFUCHSIA(const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo) const21246       Device::getSemaphoreZirconHandleFUCHSIA( const VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const
21247     {
21248       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA &&
21249                          "Function <vkGetSemaphoreZirconHandleFUCHSIA> requires <VK_FUCHSIA_external_semaphore>" );
21250 
21251       zx_handle_t                  zirconHandle;
21252       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA(
21253         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreGetZirconHandleInfoFUCHSIA *>( &getZirconHandleInfo ), &zirconHandle ) );
21254       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreZirconHandleFUCHSIA" );
21255 
21256       return zirconHandle;
21257     }
21258 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
21259 
21260 #  if defined( VK_USE_PLATFORM_FUCHSIA )
21261     //=== VK_FUCHSIA_buffer_collection ===
21262 
21263     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
21264       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA>::Type
createBufferCollectionFUCHSIA(VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const21265       Device::createBufferCollectionFUCHSIA( VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const &                 createInfo,
21266                                              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
21267       VULKAN_HPP_RAII_CREATE_NOEXCEPT
21268     {
21269       VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection;
21270       VULKAN_HPP_NAMESPACE::Result                  result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateBufferCollectionFUCHSIA(
21271         static_cast<VkDevice>( m_device ),
21272         reinterpret_cast<const VkBufferCollectionCreateInfoFUCHSIA *>( &createInfo ),
21273         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
21274         reinterpret_cast<VkBufferCollectionFUCHSIA *>( &collection ) ) );
21275       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
21276       {
21277 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
21278         return VULKAN_HPP_UNEXPECTED( result );
21279 #    else
21280         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createBufferCollectionFUCHSIA" );
21281 #    endif
21282       }
21283 
21284       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::BufferCollectionFUCHSIA(
21285         *this, *reinterpret_cast<VkBufferCollectionFUCHSIA *>( &collection ), allocator );
21286     }
21287 
setImageConstraints(const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo) const21288     VULKAN_HPP_INLINE void BufferCollectionFUCHSIA::setImageConstraints( const VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA & imageConstraintsInfo ) const
21289     {
21290       VULKAN_HPP_ASSERT( getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA &&
21291                          "Function <vkSetBufferCollectionImageConstraintsFUCHSIA> requires <VK_FUCHSIA_buffer_collection>" );
21292 
21293       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21294         getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA( static_cast<VkDevice>( m_device ),
21295                                                                        static_cast<VkBufferCollectionFUCHSIA>( m_collection ),
21296                                                                        reinterpret_cast<const VkImageConstraintsInfoFUCHSIA *>( &imageConstraintsInfo ) ) );
21297       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setImageConstraints" );
21298     }
21299 
21300     VULKAN_HPP_INLINE void
setBufferConstraints(const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo) const21301       BufferCollectionFUCHSIA::setBufferConstraints( const VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA & bufferConstraintsInfo ) const
21302     {
21303       VULKAN_HPP_ASSERT( getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA &&
21304                          "Function <vkSetBufferCollectionBufferConstraintsFUCHSIA> requires <VK_FUCHSIA_buffer_collection>" );
21305 
21306       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21307         getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA( static_cast<VkDevice>( m_device ),
21308                                                                         static_cast<VkBufferCollectionFUCHSIA>( m_collection ),
21309                                                                         reinterpret_cast<const VkBufferConstraintsInfoFUCHSIA *>( &bufferConstraintsInfo ) ) );
21310       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setBufferConstraints" );
21311     }
21312 
getProperties() const21313     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA BufferCollectionFUCHSIA::getProperties() const
21314     {
21315       VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA &&
21316                          "Function <vkGetBufferCollectionPropertiesFUCHSIA> requires <VK_FUCHSIA_buffer_collection>" );
21317 
21318       VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA properties;
21319       VULKAN_HPP_NAMESPACE::Result                            result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21320         getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA( static_cast<VkDevice>( m_device ),
21321                                                                  static_cast<VkBufferCollectionFUCHSIA>( m_collection ),
21322                                                                  reinterpret_cast<VkBufferCollectionPropertiesFUCHSIA *>( &properties ) ) );
21323       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::BufferCollectionFUCHSIA::getProperties" );
21324 
21325       return properties;
21326     }
21327 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
21328 
21329     //=== VK_HUAWEI_subpass_shading ===
21330 
getSubpassShadingMaxWorkgroupSizeHUAWEI() const21331     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Extent2D RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI() const
21332     {
21333       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI &&
21334                          "Function <vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI> requires <VK_HUAWEI_subpass_shading>" );
21335 
21336       VULKAN_HPP_NAMESPACE::Extent2D maxWorkgroupSize;
21337       VULKAN_HPP_NAMESPACE::Result   result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
21338         static_cast<VkDevice>( m_device ), static_cast<VkRenderPass>( m_renderPass ), reinterpret_cast<VkExtent2D *>( &maxWorkgroupSize ) ) );
21339       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI" );
21340 
21341       return maxWorkgroupSize;
21342     }
21343 
subpassShadingHUAWEI() const21344     VULKAN_HPP_INLINE void CommandBuffer::subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT
21345     {
21346       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSubpassShadingHUAWEI && "Function <vkCmdSubpassShadingHUAWEI> requires <VK_HUAWEI_subpass_shading>" );
21347 
21348       getDispatcher()->vkCmdSubpassShadingHUAWEI( static_cast<VkCommandBuffer>( m_commandBuffer ) );
21349     }
21350 
21351     //=== VK_HUAWEI_invocation_mask ===
21352 
bindInvocationMaskHUAWEI(VULKAN_HPP_NAMESPACE::ImageView imageView,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout) const21353     VULKAN_HPP_INLINE void CommandBuffer::bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView   imageView,
21354                                                                     VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT
21355     {
21356       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindInvocationMaskHUAWEI && "Function <vkCmdBindInvocationMaskHUAWEI> requires <VK_HUAWEI_invocation_mask>" );
21357 
21358       getDispatcher()->vkCmdBindInvocationMaskHUAWEI(
21359         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkImageView>( imageView ), static_cast<VkImageLayout>( imageLayout ) );
21360     }
21361 
21362     //=== VK_NV_external_memory_rdma ===
21363 
21364     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::RemoteAddressNV
getMemoryRemoteAddressNV(const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo) const21365       Device::getMemoryRemoteAddressNV( const VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV & memoryGetRemoteAddressInfo ) const
21366     {
21367       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryRemoteAddressNV && "Function <vkGetMemoryRemoteAddressNV> requires <VK_NV_external_memory_rdma>" );
21368 
21369       VULKAN_HPP_NAMESPACE::RemoteAddressNV address;
21370       VULKAN_HPP_NAMESPACE::Result          result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21371         getDispatcher()->vkGetMemoryRemoteAddressNV( static_cast<VkDevice>( m_device ),
21372                                                      reinterpret_cast<const VkMemoryGetRemoteAddressInfoNV *>( &memoryGetRemoteAddressInfo ),
21373                                                      reinterpret_cast<VkRemoteAddressNV *>( &address ) ) );
21374       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryRemoteAddressNV" );
21375 
21376       return address;
21377     }
21378 
21379     //=== VK_EXT_pipeline_properties ===
21380 
21381     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::BaseOutStructure
getPipelinePropertiesEXT(const VULKAN_HPP_NAMESPACE::PipelineInfoEXT & pipelineInfo) const21382                                            Device::getPipelinePropertiesEXT( const VULKAN_HPP_NAMESPACE::PipelineInfoEXT & pipelineInfo ) const
21383     {
21384       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelinePropertiesEXT && "Function <vkGetPipelinePropertiesEXT> requires <VK_EXT_pipeline_properties>" );
21385 
21386       VULKAN_HPP_NAMESPACE::BaseOutStructure pipelineProperties;
21387       VULKAN_HPP_NAMESPACE::Result           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21388         getDispatcher()->vkGetPipelinePropertiesEXT( static_cast<VkDevice>( m_device ),
21389                                                      reinterpret_cast<const VkPipelineInfoEXT *>( &pipelineInfo ),
21390                                                      reinterpret_cast<VkBaseOutStructure *>( &pipelineProperties ) ) );
21391       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelinePropertiesEXT" );
21392 
21393       return pipelineProperties;
21394     }
21395 
21396     //=== VK_EXT_extended_dynamic_state2 ===
21397 
setPatchControlPointsEXT(uint32_t patchControlPoints) const21398     VULKAN_HPP_INLINE void CommandBuffer::setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT
21399     {
21400       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPatchControlPointsEXT &&
21401                          "Function <vkCmdSetPatchControlPointsEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object>" );
21402 
21403       getDispatcher()->vkCmdSetPatchControlPointsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), patchControlPoints );
21404     }
21405 
setRasterizerDiscardEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable) const21406     VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT
21407     {
21408       VULKAN_HPP_ASSERT(
21409         getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT &&
21410         "Function <vkCmdSetRasterizerDiscardEnableEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
21411 
21412       getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( rasterizerDiscardEnable ) );
21413     }
21414 
setDepthBiasEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable) const21415     VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT
21416     {
21417       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBiasEnableEXT &&
21418                          "Function <vkCmdSetDepthBiasEnableEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
21419 
21420       getDispatcher()->vkCmdSetDepthBiasEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthBiasEnable ) );
21421     }
21422 
setLogicOpEXT(VULKAN_HPP_NAMESPACE::LogicOp logicOp) const21423     VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT
21424     {
21425       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEXT &&
21426                          "Function <vkCmdSetLogicOpEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object>" );
21427 
21428       getDispatcher()->vkCmdSetLogicOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkLogicOp>( logicOp ) );
21429     }
21430 
setPrimitiveRestartEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable) const21431     VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT
21432     {
21433       VULKAN_HPP_ASSERT(
21434         getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT &&
21435         "Function <vkCmdSetPrimitiveRestartEnableEXT> requires <VK_EXT_extended_dynamic_state2> or <VK_EXT_shader_object> or <VK_VERSION_1_3>" );
21436 
21437       getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( primitiveRestartEnable ) );
21438     }
21439 
21440 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
21441     //=== VK_QNX_screen_surface ===
21442 
21443     VULKAN_HPP_NODISCARD
21444       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR>::Type
createScreenSurfaceQNX(VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const21445                         Instance::createScreenSurfaceQNX( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const &                        createInfo,
21446                                         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
21447       VULKAN_HPP_RAII_CREATE_NOEXCEPT
21448     {
21449       VULKAN_HPP_NAMESPACE::SurfaceKHR surface;
21450       VULKAN_HPP_NAMESPACE::Result     result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateScreenSurfaceQNX(
21451         static_cast<VkInstance>( m_instance ),
21452         reinterpret_cast<const VkScreenSurfaceCreateInfoQNX *>( &createInfo ),
21453         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
21454         reinterpret_cast<VkSurfaceKHR *>( &surface ) ) );
21455       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
21456       {
21457 #    if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
21458         return VULKAN_HPP_UNEXPECTED( result );
21459 #    else
21460         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Instance::createScreenSurfaceQNX" );
21461 #    endif
21462       }
21463 
21464       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SurfaceKHR( *this, *reinterpret_cast<VkSurfaceKHR *>( &surface ), allocator );
21465     }
21466 
21467     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getScreenPresentationSupportQNX(uint32_t queueFamilyIndex,struct _screen_window & window) const21468       PhysicalDevice::getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT
21469     {
21470       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX &&
21471                          "Function <vkGetPhysicalDeviceScreenPresentationSupportQNX> requires <VK_QNX_screen_surface>" );
21472 
21473       VkBool32 result =
21474         getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX( static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &window );
21475 
21476       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( result );
21477     }
21478 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
21479 
21480     //=== VK_EXT_color_write_enable ===
21481 
setColorWriteEnableEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables) const21482     VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT(
21483       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT
21484     {
21485       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorWriteEnableEXT && "Function <vkCmdSetColorWriteEnableEXT> requires <VK_EXT_color_write_enable>" );
21486 
21487       getDispatcher()->vkCmdSetColorWriteEnableEXT(
21488         static_cast<VkCommandBuffer>( m_commandBuffer ), colorWriteEnables.size(), reinterpret_cast<const VkBool32 *>( colorWriteEnables.data() ) );
21489     }
21490 
21491     //=== VK_KHR_ray_tracing_maintenance1 ===
21492 
traceRaysIndirect2KHR(VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress) const21493     VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirect2KHR( VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT
21494     {
21495       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysIndirect2KHR && "Function <vkCmdTraceRaysIndirect2KHR> requires <VK_KHR_ray_tracing_maintenance1>" );
21496 
21497       getDispatcher()->vkCmdTraceRaysIndirect2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkDeviceAddress>( indirectDeviceAddress ) );
21498     }
21499 
21500     //=== VK_EXT_multi_draw ===
21501 
21502     VULKAN_HPP_INLINE void
drawMultiEXT(VULKAN_HPP_NAMESPACE::StridedArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,uint32_t instanceCount,uint32_t firstInstance) const21503       CommandBuffer::drawMultiEXT( VULKAN_HPP_NAMESPACE::StridedArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,
21504                                    uint32_t                                                                                      instanceCount,
21505                                    uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
21506     {
21507       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiEXT && "Function <vkCmdDrawMultiEXT> requires <VK_EXT_multi_draw>" );
21508 
21509       getDispatcher()->vkCmdDrawMultiEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21510                                           vertexInfo.size(),
21511                                           reinterpret_cast<const VkMultiDrawInfoEXT *>( vertexInfo.data() ),
21512                                           instanceCount,
21513                                           firstInstance,
21514                                           vertexInfo.stride() );
21515     }
21516 
21517     VULKAN_HPP_INLINE void
drawMultiIndexedEXT(VULKAN_HPP_NAMESPACE::StridedArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,uint32_t instanceCount,uint32_t firstInstance,Optional<const int32_t> vertexOffset) const21518       CommandBuffer::drawMultiIndexedEXT( VULKAN_HPP_NAMESPACE::StridedArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,
21519                                           uint32_t                                                                                             instanceCount,
21520                                           uint32_t                                                                                             firstInstance,
21521                                           Optional<const int32_t> vertexOffset ) const VULKAN_HPP_NOEXCEPT
21522     {
21523       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiIndexedEXT && "Function <vkCmdDrawMultiIndexedEXT> requires <VK_EXT_multi_draw>" );
21524 
21525       getDispatcher()->vkCmdDrawMultiIndexedEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21526                                                  indexInfo.size(),
21527                                                  reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>( indexInfo.data() ),
21528                                                  instanceCount,
21529                                                  firstInstance,
21530                                                  indexInfo.stride(),
21531                                                  static_cast<const int32_t *>( vertexOffset ) );
21532     }
21533 
21534     //=== VK_EXT_opacity_micromap ===
21535 
21536     VULKAN_HPP_NODISCARD
21537       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::MicromapEXT>::Type
createMicromapEXT(VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const21538                         Device::createMicromapEXT( VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const &                             createInfo,
21539                                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
21540       VULKAN_HPP_RAII_CREATE_NOEXCEPT
21541     {
21542       VULKAN_HPP_NAMESPACE::MicromapEXT micromap;
21543       VULKAN_HPP_NAMESPACE::Result      result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateMicromapEXT(
21544         static_cast<VkDevice>( m_device ),
21545         reinterpret_cast<const VkMicromapCreateInfoEXT *>( &createInfo ),
21546         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
21547         reinterpret_cast<VkMicromapEXT *>( &micromap ) ) );
21548       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
21549       {
21550 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
21551         return VULKAN_HPP_UNEXPECTED( result );
21552 #  else
21553         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createMicromapEXT" );
21554 #  endif
21555       }
21556 
21557       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::MicromapEXT( *this, *reinterpret_cast<VkMicromapEXT *>( &micromap ), allocator );
21558     }
21559 
buildMicromapsEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT> const & infos) const21560     VULKAN_HPP_INLINE void CommandBuffer::buildMicromapsEXT(
21561       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT> const & infos ) const VULKAN_HPP_NOEXCEPT
21562     {
21563       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildMicromapsEXT && "Function <vkCmdBuildMicromapsEXT> requires <VK_EXT_opacity_micromap>" );
21564 
21565       getDispatcher()->vkCmdBuildMicromapsEXT(
21566         static_cast<VkCommandBuffer>( m_commandBuffer ), infos.size(), reinterpret_cast<const VkMicromapBuildInfoEXT *>( infos.data() ) );
21567     }
21568 
21569     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
buildMicromapsEXT(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT> const & infos) const21570                                            Device::buildMicromapsEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                                 deferredOperation,
21571                                  VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT> const & infos ) const
21572     {
21573       VULKAN_HPP_ASSERT( getDispatcher()->vkBuildMicromapsEXT && "Function <vkBuildMicromapsEXT> requires <VK_EXT_opacity_micromap>" );
21574 
21575       VULKAN_HPP_NAMESPACE::Result result =
21576         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBuildMicromapsEXT( static_cast<VkDevice>( m_device ),
21577                                                                                          static_cast<VkDeferredOperationKHR>( deferredOperation ),
21578                                                                                          infos.size(),
21579                                                                                          reinterpret_cast<const VkMicromapBuildInfoEXT *>( infos.data() ) ) );
21580       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21581                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::buildMicromapsEXT",
21582                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
21583                                                    VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR,
21584                                                    VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } );
21585 
21586       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
21587     }
21588 
copyMicromapEXT(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT & info) const21589     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::copyMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
21590                                                                                                  const VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT & info ) const
21591     {
21592       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMicromapEXT && "Function <vkCopyMicromapEXT> requires <VK_EXT_opacity_micromap>" );
21593 
21594       VULKAN_HPP_NAMESPACE::Result result =
21595         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyMicromapEXT( static_cast<VkDevice>( m_device ),
21596                                                                                        static_cast<VkDeferredOperationKHR>( deferredOperation ),
21597                                                                                        reinterpret_cast<const VkCopyMicromapInfoEXT *>( &info ) ) );
21598       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21599                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::copyMicromapEXT",
21600                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
21601                                                    VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR,
21602                                                    VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } );
21603 
21604       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
21605     }
21606 
21607     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyMicromapToMemoryEXT(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT & info) const21608                                            Device::copyMicromapToMemoryEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                deferredOperation,
21609                                        const VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT & info ) const
21610     {
21611       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMicromapToMemoryEXT && "Function <vkCopyMicromapToMemoryEXT> requires <VK_EXT_opacity_micromap>" );
21612 
21613       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21614         getDispatcher()->vkCopyMicromapToMemoryEXT( static_cast<VkDevice>( m_device ),
21615                                                     static_cast<VkDeferredOperationKHR>( deferredOperation ),
21616                                                     reinterpret_cast<const VkCopyMicromapToMemoryInfoEXT *>( &info ) ) );
21617       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21618                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::copyMicromapToMemoryEXT",
21619                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
21620                                                    VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR,
21621                                                    VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } );
21622 
21623       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
21624     }
21625 
21626     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyMemoryToMicromapEXT(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT & info) const21627                                            Device::copyMemoryToMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR                deferredOperation,
21628                                        const VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT & info ) const
21629     {
21630       VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToMicromapEXT && "Function <vkCopyMemoryToMicromapEXT> requires <VK_EXT_opacity_micromap>" );
21631 
21632       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
21633         getDispatcher()->vkCopyMemoryToMicromapEXT( static_cast<VkDevice>( m_device ),
21634                                                     static_cast<VkDeferredOperationKHR>( deferredOperation ),
21635                                                     reinterpret_cast<const VkCopyMemoryToMicromapInfoEXT *>( &info ) ) );
21636       VULKAN_HPP_NAMESPACE::detail::resultCheck( result,
21637                                                  VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToMicromapEXT",
21638                                                  { VULKAN_HPP_NAMESPACE::Result::eSuccess,
21639                                                    VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR,
21640                                                    VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } );
21641 
21642       return static_cast<VULKAN_HPP_NAMESPACE::Result>( result );
21643     }
21644 
21645     template <typename DataType>
21646     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<DataType>
writeMicromapsPropertiesEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,VULKAN_HPP_NAMESPACE::QueryType queryType,size_t dataSize,size_t stride) const21647       Device::writeMicromapsPropertiesEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,
21648                                            VULKAN_HPP_NAMESPACE::QueryType                                                   queryType,
21649                                            size_t                                                                            dataSize,
21650                                            size_t                                                                            stride ) const
21651     {
21652       VULKAN_HPP_ASSERT( getDispatcher()->vkWriteMicromapsPropertiesEXT && "Function <vkWriteMicromapsPropertiesEXT> requires <VK_EXT_opacity_micromap>" );
21653 
21654       VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 );
21655       std::vector<DataType>        data( dataSize / sizeof( DataType ) );
21656       VULKAN_HPP_NAMESPACE::Result result =
21657         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkWriteMicromapsPropertiesEXT( static_cast<VkDevice>( m_device ),
21658                                                                                                    micromaps.size(),
21659                                                                                                    reinterpret_cast<const VkMicromapEXT *>( micromaps.data() ),
21660                                                                                                    static_cast<VkQueryType>( queryType ),
21661                                                                                                    data.size() * sizeof( DataType ),
21662                                                                                                    reinterpret_cast<void *>( data.data() ),
21663                                                                                                    stride ) );
21664       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeMicromapsPropertiesEXT" );
21665 
21666       return data;
21667     }
21668 
21669     template <typename DataType>
21670     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DataType
writeMicromapsPropertyEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,VULKAN_HPP_NAMESPACE::QueryType queryType,size_t stride) const21671       Device::writeMicromapsPropertyEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,
21672                                          VULKAN_HPP_NAMESPACE::QueryType                                                   queryType,
21673                                          size_t                                                                            stride ) const
21674     {
21675       VULKAN_HPP_ASSERT( getDispatcher()->vkWriteMicromapsPropertiesEXT && "Function <vkWriteMicromapsPropertiesEXT> requires <VK_EXT_opacity_micromap>" );
21676 
21677       DataType                     data;
21678       VULKAN_HPP_NAMESPACE::Result result =
21679         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkWriteMicromapsPropertiesEXT( static_cast<VkDevice>( m_device ),
21680                                                                                                    micromaps.size(),
21681                                                                                                    reinterpret_cast<const VkMicromapEXT *>( micromaps.data() ),
21682                                                                                                    static_cast<VkQueryType>( queryType ),
21683                                                                                                    sizeof( DataType ),
21684                                                                                                    reinterpret_cast<void *>( &data ),
21685                                                                                                    stride ) );
21686       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeMicromapsPropertyEXT" );
21687 
21688       return data;
21689     }
21690 
copyMicromapEXT(const VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT & info) const21691     VULKAN_HPP_INLINE void CommandBuffer::copyMicromapEXT( const VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT & info ) const VULKAN_HPP_NOEXCEPT
21692     {
21693       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMicromapEXT && "Function <vkCmdCopyMicromapEXT> requires <VK_EXT_opacity_micromap>" );
21694 
21695       getDispatcher()->vkCmdCopyMicromapEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), reinterpret_cast<const VkCopyMicromapInfoEXT *>( &info ) );
21696     }
21697 
copyMicromapToMemoryEXT(const VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT & info) const21698     VULKAN_HPP_INLINE void CommandBuffer::copyMicromapToMemoryEXT( const VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT & info ) const VULKAN_HPP_NOEXCEPT
21699     {
21700       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMicromapToMemoryEXT && "Function <vkCmdCopyMicromapToMemoryEXT> requires <VK_EXT_opacity_micromap>" );
21701 
21702       getDispatcher()->vkCmdCopyMicromapToMemoryEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21703                                                      reinterpret_cast<const VkCopyMicromapToMemoryInfoEXT *>( &info ) );
21704     }
21705 
copyMemoryToMicromapEXT(const VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT & info) const21706     VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToMicromapEXT( const VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT & info ) const VULKAN_HPP_NOEXCEPT
21707     {
21708       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToMicromapEXT && "Function <vkCmdCopyMemoryToMicromapEXT> requires <VK_EXT_opacity_micromap>" );
21709 
21710       getDispatcher()->vkCmdCopyMemoryToMicromapEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21711                                                      reinterpret_cast<const VkCopyMemoryToMicromapInfoEXT *>( &info ) );
21712     }
21713 
21714     VULKAN_HPP_INLINE void
writeMicromapsPropertiesEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,VULKAN_HPP_NAMESPACE::QueryType queryType,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery) const21715       CommandBuffer::writeMicromapsPropertiesEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::MicromapEXT> const & micromaps,
21716                                                   VULKAN_HPP_NAMESPACE::QueryType                                                   queryType,
21717                                                   VULKAN_HPP_NAMESPACE::QueryPool                                                   queryPool,
21718                                                   uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT
21719     {
21720       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteMicromapsPropertiesEXT &&
21721                          "Function <vkCmdWriteMicromapsPropertiesEXT> requires <VK_EXT_opacity_micromap>" );
21722 
21723       getDispatcher()->vkCmdWriteMicromapsPropertiesEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
21724                                                          micromaps.size(),
21725                                                          reinterpret_cast<const VkMicromapEXT *>( micromaps.data() ),
21726                                                          static_cast<VkQueryType>( queryType ),
21727                                                          static_cast<VkQueryPool>( queryPool ),
21728                                                          firstQuery );
21729     }
21730 
21731     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR
getMicromapCompatibilityEXT(const VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT & versionInfo) const21732       Device::getMicromapCompatibilityEXT( const VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT & versionInfo ) const VULKAN_HPP_NOEXCEPT
21733     {
21734       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMicromapCompatibilityEXT &&
21735                          "Function <vkGetDeviceMicromapCompatibilityEXT> requires <VK_EXT_opacity_micromap>" );
21736 
21737       VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR compatibility;
21738       getDispatcher()->vkGetDeviceMicromapCompatibilityEXT( static_cast<VkDevice>( m_device ),
21739                                                             reinterpret_cast<const VkMicromapVersionInfoEXT *>( &versionInfo ),
21740                                                             reinterpret_cast<VkAccelerationStructureCompatibilityKHR *>( &compatibility ) );
21741 
21742       return compatibility;
21743     }
21744 
21745     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT
getMicromapBuildSizesEXT(VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType,const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT & buildInfo) const21746                                            Device::getMicromapBuildSizesEXT( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType,
21747                                         const VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT &      buildInfo ) const VULKAN_HPP_NOEXCEPT
21748     {
21749       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMicromapBuildSizesEXT && "Function <vkGetMicromapBuildSizesEXT> requires <VK_EXT_opacity_micromap>" );
21750 
21751       VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT sizeInfo;
21752       getDispatcher()->vkGetMicromapBuildSizesEXT( static_cast<VkDevice>( m_device ),
21753                                                    static_cast<VkAccelerationStructureBuildTypeKHR>( buildType ),
21754                                                    reinterpret_cast<const VkMicromapBuildInfoEXT *>( &buildInfo ),
21755                                                    reinterpret_cast<VkMicromapBuildSizesInfoEXT *>( &sizeInfo ) );
21756 
21757       return sizeInfo;
21758     }
21759 
21760     //=== VK_HUAWEI_cluster_culling_shader ===
21761 
drawClusterHUAWEI(uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const21762     VULKAN_HPP_INLINE void CommandBuffer::drawClusterHUAWEI( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
21763     {
21764       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawClusterHUAWEI && "Function <vkCmdDrawClusterHUAWEI> requires <VK_HUAWEI_cluster_culling_shader>" );
21765 
21766       getDispatcher()->vkCmdDrawClusterHUAWEI( static_cast<VkCommandBuffer>( m_commandBuffer ), groupCountX, groupCountY, groupCountZ );
21767     }
21768 
drawClusterIndirectHUAWEI(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset) const21769     VULKAN_HPP_INLINE void CommandBuffer::drawClusterIndirectHUAWEI( VULKAN_HPP_NAMESPACE::Buffer     buffer,
21770                                                                      VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT
21771     {
21772       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawClusterIndirectHUAWEI &&
21773                          "Function <vkCmdDrawClusterIndirectHUAWEI> requires <VK_HUAWEI_cluster_culling_shader>" );
21774 
21775       getDispatcher()->vkCmdDrawClusterIndirectHUAWEI(
21776         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBuffer>( buffer ), static_cast<VkDeviceSize>( offset ) );
21777     }
21778 
21779     //=== VK_EXT_pageable_device_local_memory ===
21780 
setPriorityEXT(float priority) const21781     VULKAN_HPP_INLINE void DeviceMemory::setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT
21782     {
21783       VULKAN_HPP_ASSERT( getDispatcher()->vkSetDeviceMemoryPriorityEXT &&
21784                          "Function <vkSetDeviceMemoryPriorityEXT> requires <VK_EXT_pageable_device_local_memory>" );
21785 
21786       getDispatcher()->vkSetDeviceMemoryPriorityEXT( static_cast<VkDevice>( m_device ), static_cast<VkDeviceMemory>( m_memory ), priority );
21787     }
21788 
21789     //=== VK_KHR_maintenance4 ===
21790 
21791     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info) const21792       Device::getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
21793     {
21794       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR &&
21795                          "Function <vkGetDeviceBufferMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
21796 
21797       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
21798       getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
21799                                                                reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( &info ),
21800                                                                reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21801 
21802       return memoryRequirements;
21803     }
21804 
21805     template <typename X, typename Y, typename... Z>
21806     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getBufferMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info) const21807       Device::getBufferMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
21808     {
21809       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR &&
21810                          "Function <vkGetDeviceBufferMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
21811 
21812       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
21813       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
21814       getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
21815                                                                reinterpret_cast<const VkDeviceBufferMemoryRequirements *>( &info ),
21816                                                                reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21817 
21818       return structureChain;
21819     }
21820 
21821     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info) const21822       Device::getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
21823     {
21824       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR &&
21825                          "Function <vkGetDeviceImageMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
21826 
21827       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
21828       getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
21829                                                               reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
21830                                                               reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21831 
21832       return memoryRequirements;
21833     }
21834 
21835     template <typename X, typename Y, typename... Z>
21836     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getImageMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info) const21837       Device::getImageMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const VULKAN_HPP_NOEXCEPT
21838     {
21839       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR &&
21840                          "Function <vkGetDeviceImageMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
21841 
21842       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
21843       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
21844       getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
21845                                                               reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
21846                                                               reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21847 
21848       return structureChain;
21849     }
21850 
21851     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirementsKHR(const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info) const21852                                            Device::getImageSparseMemoryRequirementsKHR( const VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements & info ) const
21853     {
21854       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR &&
21855                          "Function <vkGetDeviceImageSparseMemoryRequirementsKHR> requires <VK_KHR_maintenance4> or <VK_VERSION_1_3>" );
21856 
21857       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements;
21858       uint32_t                                                          sparseMemoryRequirementCount;
21859       getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR(
21860         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ), &sparseMemoryRequirementCount, nullptr );
21861       sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
21862       getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
21863                                                                     reinterpret_cast<const VkDeviceImageMemoryRequirements *>( &info ),
21864                                                                     &sparseMemoryRequirementCount,
21865                                                                     reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
21866 
21867       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
21868       if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() )
21869       {
21870         sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
21871       }
21872       return sparseMemoryRequirements;
21873     }
21874 
21875     //=== VK_VALVE_descriptor_set_host_mapping ===
21876 
getDescriptorSetLayoutHostMappingInfoVALVE(const VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE & bindingReference) const21877     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE Device::getDescriptorSetLayoutHostMappingInfoVALVE(
21878       const VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE & bindingReference ) const VULKAN_HPP_NOEXCEPT
21879     {
21880       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutHostMappingInfoVALVE &&
21881                          "Function <vkGetDescriptorSetLayoutHostMappingInfoVALVE> requires <VK_VALVE_descriptor_set_host_mapping>" );
21882 
21883       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE hostMapping;
21884       getDispatcher()->vkGetDescriptorSetLayoutHostMappingInfoVALVE( static_cast<VkDevice>( m_device ),
21885                                                                      reinterpret_cast<const VkDescriptorSetBindingReferenceVALVE *>( &bindingReference ),
21886                                                                      reinterpret_cast<VkDescriptorSetLayoutHostMappingInfoVALVE *>( &hostMapping ) );
21887 
21888       return hostMapping;
21889     }
21890 
getHostMappingVALVE() const21891     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void * DescriptorSet::getHostMappingVALVE() const VULKAN_HPP_NOEXCEPT
21892     {
21893       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetHostMappingVALVE &&
21894                          "Function <vkGetDescriptorSetHostMappingVALVE> requires <VK_VALVE_descriptor_set_host_mapping>" );
21895 
21896       void * pData;
21897       getDispatcher()->vkGetDescriptorSetHostMappingVALVE( static_cast<VkDevice>( m_device ), static_cast<VkDescriptorSet>( m_descriptorSet ), &pData );
21898 
21899       return pData;
21900     }
21901 
21902     //=== VK_NV_copy_memory_indirect ===
21903 
copyMemoryIndirectNV(VULKAN_HPP_NAMESPACE::DeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride) const21904     VULKAN_HPP_INLINE void CommandBuffer::copyMemoryIndirectNV( VULKAN_HPP_NAMESPACE::DeviceAddress copyBufferAddress,
21905                                                                 uint32_t                            copyCount,
21906                                                                 uint32_t                            stride ) const VULKAN_HPP_NOEXCEPT
21907     {
21908       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryIndirectNV && "Function <vkCmdCopyMemoryIndirectNV> requires <VK_NV_copy_memory_indirect>" );
21909 
21910       getDispatcher()->vkCmdCopyMemoryIndirectNV(
21911         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkDeviceAddress>( copyBufferAddress ), copyCount, stride );
21912     }
21913 
copyMemoryToImageIndirectNV(VULKAN_HPP_NAMESPACE::DeviceAddress copyBufferAddress,uint32_t stride,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceLayers> const & imageSubresources) const21914     VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToImageIndirectNV(
21915       VULKAN_HPP_NAMESPACE::DeviceAddress                                                          copyBufferAddress,
21916       uint32_t                                                                                     stride,
21917       VULKAN_HPP_NAMESPACE::Image                                                                  dstImage,
21918       VULKAN_HPP_NAMESPACE::ImageLayout                                                            dstImageLayout,
21919       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceLayers> const & imageSubresources ) const VULKAN_HPP_NOEXCEPT
21920     {
21921       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToImageIndirectNV &&
21922                          "Function <vkCmdCopyMemoryToImageIndirectNV> requires <VK_NV_copy_memory_indirect>" );
21923 
21924       getDispatcher()->vkCmdCopyMemoryToImageIndirectNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
21925                                                          static_cast<VkDeviceAddress>( copyBufferAddress ),
21926                                                          imageSubresources.size(),
21927                                                          stride,
21928                                                          static_cast<VkImage>( dstImage ),
21929                                                          static_cast<VkImageLayout>( dstImageLayout ),
21930                                                          reinterpret_cast<const VkImageSubresourceLayers *>( imageSubresources.data() ) );
21931     }
21932 
21933     //=== VK_NV_memory_decompression ===
21934 
decompressMemoryNV(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV> const & decompressMemoryRegions) const21935     VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryNV(
21936       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV> const & decompressMemoryRegions ) const VULKAN_HPP_NOEXCEPT
21937     {
21938       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryNV && "Function <vkCmdDecompressMemoryNV> requires <VK_NV_memory_decompression>" );
21939 
21940       getDispatcher()->vkCmdDecompressMemoryNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
21941                                                 decompressMemoryRegions.size(),
21942                                                 reinterpret_cast<const VkDecompressMemoryRegionNV *>( decompressMemoryRegions.data() ) );
21943     }
21944 
decompressMemoryIndirectCountNV(VULKAN_HPP_NAMESPACE::DeviceAddress indirectCommandsAddress,VULKAN_HPP_NAMESPACE::DeviceAddress indirectCommandsCountAddress,uint32_t stride) const21945     VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryIndirectCountNV( VULKAN_HPP_NAMESPACE::DeviceAddress indirectCommandsAddress,
21946                                                                            VULKAN_HPP_NAMESPACE::DeviceAddress indirectCommandsCountAddress,
21947                                                                            uint32_t                            stride ) const VULKAN_HPP_NOEXCEPT
21948     {
21949       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryIndirectCountNV &&
21950                          "Function <vkCmdDecompressMemoryIndirectCountNV> requires <VK_NV_memory_decompression>" );
21951 
21952       getDispatcher()->vkCmdDecompressMemoryIndirectCountNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
21953                                                              static_cast<VkDeviceAddress>( indirectCommandsAddress ),
21954                                                              static_cast<VkDeviceAddress>( indirectCommandsCountAddress ),
21955                                                              stride );
21956     }
21957 
21958     //=== VK_NV_device_generated_commands_compute ===
21959 
21960     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getPipelineIndirectMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo) const21961       Device::getPipelineIndirectMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
21962     {
21963       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV &&
21964                          "Function <vkGetPipelineIndirectMemoryRequirementsNV> requires <VK_NV_device_generated_commands_compute>" );
21965 
21966       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
21967       getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
21968                                                                   reinterpret_cast<const VkComputePipelineCreateInfo *>( &createInfo ),
21969                                                                   reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21970 
21971       return memoryRequirements;
21972     }
21973 
21974     template <typename X, typename Y, typename... Z>
21975     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getPipelineIndirectMemoryRequirementsNV(const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo) const21976       Device::getPipelineIndirectMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
21977     {
21978       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV &&
21979                          "Function <vkGetPipelineIndirectMemoryRequirementsNV> requires <VK_NV_device_generated_commands_compute>" );
21980 
21981       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
21982       VULKAN_HPP_NAMESPACE::MemoryRequirements2 &      memoryRequirements = structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
21983       getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV( static_cast<VkDevice>( m_device ),
21984                                                                   reinterpret_cast<const VkComputePipelineCreateInfo *>( &createInfo ),
21985                                                                   reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
21986 
21987       return structureChain;
21988     }
21989 
updatePipelineIndirectBufferNV(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::Pipeline pipeline) const21990     VULKAN_HPP_INLINE void CommandBuffer::updatePipelineIndirectBufferNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
21991                                                                           VULKAN_HPP_NAMESPACE::Pipeline          pipeline ) const VULKAN_HPP_NOEXCEPT
21992     {
21993       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdatePipelineIndirectBufferNV &&
21994                          "Function <vkCmdUpdatePipelineIndirectBufferNV> requires <VK_NV_device_generated_commands_compute>" );
21995 
21996       getDispatcher()->vkCmdUpdatePipelineIndirectBufferNV(
21997         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
21998     }
21999 
22000     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getPipelineIndirectAddressNV(const VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV & info) const22001       Device::getPipelineIndirectAddressNV( const VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV & info ) const VULKAN_HPP_NOEXCEPT
22002     {
22003       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectDeviceAddressNV &&
22004                          "Function <vkGetPipelineIndirectDeviceAddressNV> requires <VK_NV_device_generated_commands_compute>" );
22005 
22006       VkDeviceAddress result = getDispatcher()->vkGetPipelineIndirectDeviceAddressNV(
22007         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkPipelineIndirectDeviceAddressInfoNV *>( &info ) );
22008 
22009       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( result );
22010     }
22011 
22012     //=== VK_EXT_extended_dynamic_state3 ===
22013 
setDepthClampEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable) const22014     VULKAN_HPP_INLINE void CommandBuffer::setDepthClampEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable ) const VULKAN_HPP_NOEXCEPT
22015     {
22016       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClampEnableEXT &&
22017                          "Function <vkCmdSetDepthClampEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22018 
22019       getDispatcher()->vkCmdSetDepthClampEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthClampEnable ) );
22020     }
22021 
setPolygonModeEXT(VULKAN_HPP_NAMESPACE::PolygonMode polygonMode) const22022     VULKAN_HPP_INLINE void CommandBuffer::setPolygonModeEXT( VULKAN_HPP_NAMESPACE::PolygonMode polygonMode ) const VULKAN_HPP_NOEXCEPT
22023     {
22024       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPolygonModeEXT &&
22025                          "Function <vkCmdSetPolygonModeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22026 
22027       getDispatcher()->vkCmdSetPolygonModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkPolygonMode>( polygonMode ) );
22028     }
22029 
setRasterizationSamplesEXT(VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples) const22030     VULKAN_HPP_INLINE void CommandBuffer::setRasterizationSamplesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples ) const VULKAN_HPP_NOEXCEPT
22031     {
22032       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizationSamplesEXT &&
22033                          "Function <vkCmdSetRasterizationSamplesEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22034 
22035       getDispatcher()->vkCmdSetRasterizationSamplesEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22036                                                         static_cast<VkSampleCountFlagBits>( rasterizationSamples ) );
22037     }
22038 
setSampleMaskEXT(VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SampleMask> const & sampleMask) const22039     VULKAN_HPP_INLINE void CommandBuffer::setSampleMaskEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits                                        samples,
22040                                                             VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::SampleMask> const & sampleMask ) const
22041     {
22042       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleMaskEXT &&
22043                          "Function <vkCmdSetSampleMaskEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22044 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
22045       VULKAN_HPP_ASSERT( sampleMask.size() == ( static_cast<uint32_t>( samples ) + 31 ) / 32 );
22046 #  else
22047       if ( sampleMask.size() != ( static_cast<uint32_t>( samples ) + 31 ) / 32 )
22048       {
22049         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
22050                           "::CommandBuffer::setSampleMaskEXT: sampleMask.size() != ( static_cast<uint32_t>( samples ) + 31 ) / 32" );
22051       }
22052 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
22053 
22054       getDispatcher()->vkCmdSetSampleMaskEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22055                                               static_cast<VkSampleCountFlagBits>( samples ),
22056                                               reinterpret_cast<const VkSampleMask *>( sampleMask.data() ) );
22057     }
22058 
setAlphaToCoverageEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable) const22059     VULKAN_HPP_INLINE void CommandBuffer::setAlphaToCoverageEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable ) const VULKAN_HPP_NOEXCEPT
22060     {
22061       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAlphaToCoverageEnableEXT &&
22062                          "Function <vkCmdSetAlphaToCoverageEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22063 
22064       getDispatcher()->vkCmdSetAlphaToCoverageEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( alphaToCoverageEnable ) );
22065     }
22066 
setAlphaToOneEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable) const22067     VULKAN_HPP_INLINE void CommandBuffer::setAlphaToOneEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable ) const VULKAN_HPP_NOEXCEPT
22068     {
22069       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAlphaToOneEnableEXT &&
22070                          "Function <vkCmdSetAlphaToOneEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22071 
22072       getDispatcher()->vkCmdSetAlphaToOneEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( alphaToOneEnable ) );
22073     }
22074 
setLogicOpEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable) const22075     VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable ) const VULKAN_HPP_NOEXCEPT
22076     {
22077       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEnableEXT &&
22078                          "Function <vkCmdSetLogicOpEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22079 
22080       getDispatcher()->vkCmdSetLogicOpEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( logicOpEnable ) );
22081     }
22082 
setColorBlendEnableEXT(uint32_t firstAttachment,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorBlendEnables) const22083     VULKAN_HPP_INLINE void CommandBuffer::setColorBlendEnableEXT(
22084       uint32_t firstAttachment, VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorBlendEnables ) const VULKAN_HPP_NOEXCEPT
22085     {
22086       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendEnableEXT &&
22087                          "Function <vkCmdSetColorBlendEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22088 
22089       getDispatcher()->vkCmdSetColorBlendEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22090                                                     firstAttachment,
22091                                                     colorBlendEnables.size(),
22092                                                     reinterpret_cast<const VkBool32 *>( colorBlendEnables.data() ) );
22093     }
22094 
setColorBlendEquationEXT(uint32_t firstAttachment,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT> const & colorBlendEquations) const22095     VULKAN_HPP_INLINE void CommandBuffer::setColorBlendEquationEXT(
22096       uint32_t                                                                                    firstAttachment,
22097       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT> const & colorBlendEquations ) const VULKAN_HPP_NOEXCEPT
22098     {
22099       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendEquationEXT &&
22100                          "Function <vkCmdSetColorBlendEquationEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22101 
22102       getDispatcher()->vkCmdSetColorBlendEquationEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22103                                                       firstAttachment,
22104                                                       colorBlendEquations.size(),
22105                                                       reinterpret_cast<const VkColorBlendEquationEXT *>( colorBlendEquations.data() ) );
22106     }
22107 
setColorWriteMaskEXT(uint32_t firstAttachment,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorComponentFlags> const & colorWriteMasks) const22108     VULKAN_HPP_INLINE void CommandBuffer::setColorWriteMaskEXT(
22109       uint32_t                                                                                  firstAttachment,
22110       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorComponentFlags> const & colorWriteMasks ) const VULKAN_HPP_NOEXCEPT
22111     {
22112       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorWriteMaskEXT &&
22113                          "Function <vkCmdSetColorWriteMaskEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22114 
22115       getDispatcher()->vkCmdSetColorWriteMaskEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22116                                                   firstAttachment,
22117                                                   colorWriteMasks.size(),
22118                                                   reinterpret_cast<const VkColorComponentFlags *>( colorWriteMasks.data() ) );
22119     }
22120 
22121     VULKAN_HPP_INLINE void
setTessellationDomainOriginEXT(VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin) const22122       CommandBuffer::setTessellationDomainOriginEXT( VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin ) const VULKAN_HPP_NOEXCEPT
22123     {
22124       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetTessellationDomainOriginEXT &&
22125                          "Function <vkCmdSetTessellationDomainOriginEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22126 
22127       getDispatcher()->vkCmdSetTessellationDomainOriginEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22128                                                             static_cast<VkTessellationDomainOrigin>( domainOrigin ) );
22129     }
22130 
setRasterizationStreamEXT(uint32_t rasterizationStream) const22131     VULKAN_HPP_INLINE void CommandBuffer::setRasterizationStreamEXT( uint32_t rasterizationStream ) const VULKAN_HPP_NOEXCEPT
22132     {
22133       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizationStreamEXT &&
22134                          "Function <vkCmdSetRasterizationStreamEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22135 
22136       getDispatcher()->vkCmdSetRasterizationStreamEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), rasterizationStream );
22137     }
22138 
setConservativeRasterizationModeEXT(VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode) const22139     VULKAN_HPP_INLINE void CommandBuffer::setConservativeRasterizationModeEXT(
22140       VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode ) const VULKAN_HPP_NOEXCEPT
22141     {
22142       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetConservativeRasterizationModeEXT &&
22143                          "Function <vkCmdSetConservativeRasterizationModeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22144 
22145       getDispatcher()->vkCmdSetConservativeRasterizationModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22146                                                                  static_cast<VkConservativeRasterizationModeEXT>( conservativeRasterizationMode ) );
22147     }
22148 
setExtraPrimitiveOverestimationSizeEXT(float extraPrimitiveOverestimationSize) const22149     VULKAN_HPP_INLINE void CommandBuffer::setExtraPrimitiveOverestimationSizeEXT( float extraPrimitiveOverestimationSize ) const VULKAN_HPP_NOEXCEPT
22150     {
22151       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExtraPrimitiveOverestimationSizeEXT &&
22152                          "Function <vkCmdSetExtraPrimitiveOverestimationSizeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22153 
22154       getDispatcher()->vkCmdSetExtraPrimitiveOverestimationSizeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), extraPrimitiveOverestimationSize );
22155     }
22156 
setDepthClipEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable) const22157     VULKAN_HPP_INLINE void CommandBuffer::setDepthClipEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable ) const VULKAN_HPP_NOEXCEPT
22158     {
22159       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClipEnableEXT &&
22160                          "Function <vkCmdSetDepthClipEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22161 
22162       getDispatcher()->vkCmdSetDepthClipEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( depthClipEnable ) );
22163     }
22164 
setSampleLocationsEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable) const22165     VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable ) const VULKAN_HPP_NOEXCEPT
22166     {
22167       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEnableEXT &&
22168                          "Function <vkCmdSetSampleLocationsEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22169 
22170       getDispatcher()->vkCmdSetSampleLocationsEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( sampleLocationsEnable ) );
22171     }
22172 
setColorBlendAdvancedEXT(uint32_t firstAttachment,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT> const & colorBlendAdvanced) const22173     VULKAN_HPP_INLINE void CommandBuffer::setColorBlendAdvancedEXT(
22174       uint32_t                                                                                    firstAttachment,
22175       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT> const & colorBlendAdvanced ) const VULKAN_HPP_NOEXCEPT
22176     {
22177       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendAdvancedEXT &&
22178                          "Function <vkCmdSetColorBlendAdvancedEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22179 
22180       getDispatcher()->vkCmdSetColorBlendAdvancedEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22181                                                       firstAttachment,
22182                                                       colorBlendAdvanced.size(),
22183                                                       reinterpret_cast<const VkColorBlendAdvancedEXT *>( colorBlendAdvanced.data() ) );
22184     }
22185 
22186     VULKAN_HPP_INLINE void
setProvokingVertexModeEXT(VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode) const22187       CommandBuffer::setProvokingVertexModeEXT( VULKAN_HPP_NAMESPACE::ProvokingVertexModeEXT provokingVertexMode ) const VULKAN_HPP_NOEXCEPT
22188     {
22189       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetProvokingVertexModeEXT &&
22190                          "Function <vkCmdSetProvokingVertexModeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22191 
22192       getDispatcher()->vkCmdSetProvokingVertexModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22193                                                        static_cast<VkProvokingVertexModeEXT>( provokingVertexMode ) );
22194     }
22195 
22196     VULKAN_HPP_INLINE void
setLineRasterizationModeEXT(VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode) const22197       CommandBuffer::setLineRasterizationModeEXT( VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode ) const VULKAN_HPP_NOEXCEPT
22198     {
22199       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineRasterizationModeEXT &&
22200                          "Function <vkCmdSetLineRasterizationModeEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22201 
22202       getDispatcher()->vkCmdSetLineRasterizationModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22203                                                          static_cast<VkLineRasterizationModeEXT>( lineRasterizationMode ) );
22204     }
22205 
setLineStippleEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable) const22206     VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable ) const VULKAN_HPP_NOEXCEPT
22207     {
22208       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEnableEXT &&
22209                          "Function <vkCmdSetLineStippleEnableEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22210 
22211       getDispatcher()->vkCmdSetLineStippleEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( stippledLineEnable ) );
22212     }
22213 
setDepthClipNegativeOneToOneEXT(VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne) const22214     VULKAN_HPP_INLINE void CommandBuffer::setDepthClipNegativeOneToOneEXT( VULKAN_HPP_NAMESPACE::Bool32 negativeOneToOne ) const VULKAN_HPP_NOEXCEPT
22215     {
22216       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClipNegativeOneToOneEXT &&
22217                          "Function <vkCmdSetDepthClipNegativeOneToOneEXT> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22218 
22219       getDispatcher()->vkCmdSetDepthClipNegativeOneToOneEXT( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( negativeOneToOne ) );
22220     }
22221 
setViewportWScalingEnableNV(VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable) const22222     VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingEnableNV( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable ) const VULKAN_HPP_NOEXCEPT
22223     {
22224       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWScalingEnableNV &&
22225                          "Function <vkCmdSetViewportWScalingEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22226 
22227       getDispatcher()->vkCmdSetViewportWScalingEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( viewportWScalingEnable ) );
22228     }
22229 
setViewportSwizzleNV(uint32_t firstViewport,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const & viewportSwizzles) const22230     VULKAN_HPP_INLINE void CommandBuffer::setViewportSwizzleNV(
22231       uint32_t                                                                                firstViewport,
22232       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV> const & viewportSwizzles ) const VULKAN_HPP_NOEXCEPT
22233     {
22234       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportSwizzleNV &&
22235                          "Function <vkCmdSetViewportSwizzleNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22236 
22237       getDispatcher()->vkCmdSetViewportSwizzleNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22238                                                   firstViewport,
22239                                                   viewportSwizzles.size(),
22240                                                   reinterpret_cast<const VkViewportSwizzleNV *>( viewportSwizzles.data() ) );
22241     }
22242 
setCoverageToColorEnableNV(VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable) const22243     VULKAN_HPP_INLINE void CommandBuffer::setCoverageToColorEnableNV( VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable ) const VULKAN_HPP_NOEXCEPT
22244     {
22245       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageToColorEnableNV &&
22246                          "Function <vkCmdSetCoverageToColorEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22247 
22248       getDispatcher()->vkCmdSetCoverageToColorEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( coverageToColorEnable ) );
22249     }
22250 
setCoverageToColorLocationNV(uint32_t coverageToColorLocation) const22251     VULKAN_HPP_INLINE void CommandBuffer::setCoverageToColorLocationNV( uint32_t coverageToColorLocation ) const VULKAN_HPP_NOEXCEPT
22252     {
22253       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageToColorLocationNV &&
22254                          "Function <vkCmdSetCoverageToColorLocationNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22255 
22256       getDispatcher()->vkCmdSetCoverageToColorLocationNV( static_cast<VkCommandBuffer>( m_commandBuffer ), coverageToColorLocation );
22257     }
22258 
22259     VULKAN_HPP_INLINE void
setCoverageModulationModeNV(VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode) const22260       CommandBuffer::setCoverageModulationModeNV( VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode ) const VULKAN_HPP_NOEXCEPT
22261     {
22262       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationModeNV &&
22263                          "Function <vkCmdSetCoverageModulationModeNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22264 
22265       getDispatcher()->vkCmdSetCoverageModulationModeNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22266                                                          static_cast<VkCoverageModulationModeNV>( coverageModulationMode ) );
22267     }
22268 
22269     VULKAN_HPP_INLINE void
setCoverageModulationTableEnableNV(VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable) const22270       CommandBuffer::setCoverageModulationTableEnableNV( VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable ) const VULKAN_HPP_NOEXCEPT
22271     {
22272       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationTableEnableNV &&
22273                          "Function <vkCmdSetCoverageModulationTableEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22274 
22275       getDispatcher()->vkCmdSetCoverageModulationTableEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22276                                                                 static_cast<VkBool32>( coverageModulationTableEnable ) );
22277     }
22278 
22279     VULKAN_HPP_INLINE void
setCoverageModulationTableNV(VULKAN_HPP_NAMESPACE::ArrayProxy<const float> const & coverageModulationTable) const22280       CommandBuffer::setCoverageModulationTableNV( VULKAN_HPP_NAMESPACE::ArrayProxy<const float> const & coverageModulationTable ) const VULKAN_HPP_NOEXCEPT
22281     {
22282       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationTableNV &&
22283                          "Function <vkCmdSetCoverageModulationTableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22284 
22285       getDispatcher()->vkCmdSetCoverageModulationTableNV(
22286         static_cast<VkCommandBuffer>( m_commandBuffer ), coverageModulationTable.size(), coverageModulationTable.data() );
22287     }
22288 
setShadingRateImageEnableNV(VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable) const22289     VULKAN_HPP_INLINE void CommandBuffer::setShadingRateImageEnableNV( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable ) const VULKAN_HPP_NOEXCEPT
22290     {
22291       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetShadingRateImageEnableNV &&
22292                          "Function <vkCmdSetShadingRateImageEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22293 
22294       getDispatcher()->vkCmdSetShadingRateImageEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkBool32>( shadingRateImageEnable ) );
22295     }
22296 
22297     VULKAN_HPP_INLINE void
setRepresentativeFragmentTestEnableNV(VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable) const22298       CommandBuffer::setRepresentativeFragmentTestEnableNV( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable ) const VULKAN_HPP_NOEXCEPT
22299     {
22300       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRepresentativeFragmentTestEnableNV &&
22301                          "Function <vkCmdSetRepresentativeFragmentTestEnableNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22302 
22303       getDispatcher()->vkCmdSetRepresentativeFragmentTestEnableNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22304                                                                    static_cast<VkBool32>( representativeFragmentTestEnable ) );
22305     }
22306 
22307     VULKAN_HPP_INLINE void
setCoverageReductionModeNV(VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode) const22308       CommandBuffer::setCoverageReductionModeNV( VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode ) const VULKAN_HPP_NOEXCEPT
22309     {
22310       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageReductionModeNV &&
22311                          "Function <vkCmdSetCoverageReductionModeNV> requires <VK_EXT_extended_dynamic_state3> or <VK_EXT_shader_object>" );
22312 
22313       getDispatcher()->vkCmdSetCoverageReductionModeNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22314                                                         static_cast<VkCoverageReductionModeNV>( coverageReductionMode ) );
22315     }
22316 
22317     //=== VK_EXT_shader_module_identifier ===
22318 
getIdentifierEXT() const22319     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT ShaderModule::getIdentifierEXT() const VULKAN_HPP_NOEXCEPT
22320     {
22321       VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderModuleIdentifierEXT &&
22322                          "Function <vkGetShaderModuleIdentifierEXT> requires <VK_EXT_shader_module_identifier>" );
22323 
22324       VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT identifier;
22325       getDispatcher()->vkGetShaderModuleIdentifierEXT(
22326         static_cast<VkDevice>( m_device ), static_cast<VkShaderModule>( m_shaderModule ), reinterpret_cast<VkShaderModuleIdentifierEXT *>( &identifier ) );
22327 
22328       return identifier;
22329     }
22330 
22331     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT
getShaderModuleCreateInfoIdentifierEXT(const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo & createInfo) const22332       Device::getShaderModuleCreateInfoIdentifierEXT( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
22333     {
22334       VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderModuleCreateInfoIdentifierEXT &&
22335                          "Function <vkGetShaderModuleCreateInfoIdentifierEXT> requires <VK_EXT_shader_module_identifier>" );
22336 
22337       VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT identifier;
22338       getDispatcher()->vkGetShaderModuleCreateInfoIdentifierEXT( static_cast<VkDevice>( m_device ),
22339                                                                  reinterpret_cast<const VkShaderModuleCreateInfo *>( &createInfo ),
22340                                                                  reinterpret_cast<VkShaderModuleIdentifierEXT *>( &identifier ) );
22341 
22342       return identifier;
22343     }
22344 
22345     //=== VK_NV_optical_flow ===
22346 
22347     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV>
getOpticalFlowImageFormatsNV(const VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV & opticalFlowImageFormatInfo) const22348       PhysicalDevice::getOpticalFlowImageFormatsNV( const VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV & opticalFlowImageFormatInfo ) const
22349     {
22350       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV &&
22351                          "Function <vkGetPhysicalDeviceOpticalFlowImageFormatsNV> requires <VK_NV_optical_flow>" );
22352 
22353       std::vector<VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV> imageFormatProperties;
22354       uint32_t                                                              formatCount;
22355       VULKAN_HPP_NAMESPACE::Result                                          result;
22356       do
22357       {
22358         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV(
22359           static_cast<VkPhysicalDevice>( m_physicalDevice ),
22360           reinterpret_cast<const VkOpticalFlowImageFormatInfoNV *>( &opticalFlowImageFormatInfo ),
22361           &formatCount,
22362           nullptr ) );
22363         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && formatCount )
22364         {
22365           imageFormatProperties.resize( formatCount );
22366           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV(
22367             static_cast<VkPhysicalDevice>( m_physicalDevice ),
22368             reinterpret_cast<const VkOpticalFlowImageFormatInfoNV *>( &opticalFlowImageFormatInfo ),
22369             &formatCount,
22370             reinterpret_cast<VkOpticalFlowImageFormatPropertiesNV *>( imageFormatProperties.data() ) ) );
22371         }
22372       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
22373       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getOpticalFlowImageFormatsNV" );
22374       VULKAN_HPP_ASSERT( formatCount <= imageFormatProperties.size() );
22375       if ( formatCount < imageFormatProperties.size() )
22376       {
22377         imageFormatProperties.resize( formatCount );
22378       }
22379       return imageFormatProperties;
22380     }
22381 
22382     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
22383       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::OpticalFlowSessionNV>::Type
createOpticalFlowSessionNV(VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const22384       Device::createOpticalFlowSessionNV( VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const &                    createInfo,
22385                                           VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const
22386       VULKAN_HPP_RAII_CREATE_NOEXCEPT
22387     {
22388       VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV session;
22389       VULKAN_HPP_NAMESPACE::Result               result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateOpticalFlowSessionNV(
22390         static_cast<VkDevice>( m_device ),
22391         reinterpret_cast<const VkOpticalFlowSessionCreateInfoNV *>( &createInfo ),
22392         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
22393         reinterpret_cast<VkOpticalFlowSessionNV *>( &session ) ) );
22394       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
22395       {
22396 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
22397         return VULKAN_HPP_UNEXPECTED( result );
22398 #  else
22399         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createOpticalFlowSessionNV" );
22400 #  endif
22401       }
22402 
22403       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::OpticalFlowSessionNV( *this, *reinterpret_cast<VkOpticalFlowSessionNV *>( &session ), allocator );
22404     }
22405 
bindImage(VULKAN_HPP_NAMESPACE::OpticalFlowSessionBindingPointNV bindingPoint,VULKAN_HPP_NAMESPACE::ImageView view,VULKAN_HPP_NAMESPACE::ImageLayout layout) const22406     VULKAN_HPP_INLINE void OpticalFlowSessionNV::bindImage( VULKAN_HPP_NAMESPACE::OpticalFlowSessionBindingPointNV bindingPoint,
22407                                                             VULKAN_HPP_NAMESPACE::ImageView                        view,
22408                                                             VULKAN_HPP_NAMESPACE::ImageLayout                      layout ) const
22409     {
22410       VULKAN_HPP_ASSERT( getDispatcher()->vkBindOpticalFlowSessionImageNV && "Function <vkBindOpticalFlowSessionImageNV> requires <VK_NV_optical_flow>" );
22411 
22412       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
22413         getDispatcher()->vkBindOpticalFlowSessionImageNV( static_cast<VkDevice>( m_device ),
22414                                                           static_cast<VkOpticalFlowSessionNV>( m_session ),
22415                                                           static_cast<VkOpticalFlowSessionBindingPointNV>( bindingPoint ),
22416                                                           static_cast<VkImageView>( view ),
22417                                                           static_cast<VkImageLayout>( layout ) ) );
22418       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::OpticalFlowSessionNV::bindImage" );
22419     }
22420 
opticalFlowExecuteNV(VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV session,const VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV & executeInfo) const22421     VULKAN_HPP_INLINE void CommandBuffer::opticalFlowExecuteNV( VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV             session,
22422                                                                 const VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV & executeInfo ) const VULKAN_HPP_NOEXCEPT
22423     {
22424       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdOpticalFlowExecuteNV && "Function <vkCmdOpticalFlowExecuteNV> requires <VK_NV_optical_flow>" );
22425 
22426       getDispatcher()->vkCmdOpticalFlowExecuteNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
22427                                                   static_cast<VkOpticalFlowSessionNV>( session ),
22428                                                   reinterpret_cast<const VkOpticalFlowExecuteInfoNV *>( &executeInfo ) );
22429     }
22430 
22431     //=== VK_KHR_maintenance5 ===
22432 
bindIndexBuffer2KHR(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::DeviceSize size,VULKAN_HPP_NAMESPACE::IndexType indexType) const22433     VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer2KHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
22434                                                                VULKAN_HPP_NAMESPACE::DeviceSize offset,
22435                                                                VULKAN_HPP_NAMESPACE::DeviceSize size,
22436                                                                VULKAN_HPP_NAMESPACE::IndexType  indexType ) const VULKAN_HPP_NOEXCEPT
22437     {
22438       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer2KHR && "Function <vkCmdBindIndexBuffer2KHR> requires <VK_KHR_maintenance5>" );
22439 
22440       getDispatcher()->vkCmdBindIndexBuffer2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
22441                                                  static_cast<VkBuffer>( buffer ),
22442                                                  static_cast<VkDeviceSize>( offset ),
22443                                                  static_cast<VkDeviceSize>( size ),
22444                                                  static_cast<VkIndexType>( indexType ) );
22445     }
22446 
22447     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Extent2D
getRenderingAreaGranularityKHR(const VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR & renderingAreaInfo) const22448       Device::getRenderingAreaGranularityKHR( const VULKAN_HPP_NAMESPACE::RenderingAreaInfoKHR & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT
22449     {
22450       VULKAN_HPP_ASSERT( getDispatcher()->vkGetRenderingAreaGranularityKHR && "Function <vkGetRenderingAreaGranularityKHR> requires <VK_KHR_maintenance5>" );
22451 
22452       VULKAN_HPP_NAMESPACE::Extent2D granularity;
22453       getDispatcher()->vkGetRenderingAreaGranularityKHR( static_cast<VkDevice>( m_device ),
22454                                                          reinterpret_cast<const VkRenderingAreaInfoKHR *>( &renderingAreaInfo ),
22455                                                          reinterpret_cast<VkExtent2D *>( &granularity ) );
22456 
22457       return granularity;
22458     }
22459 
22460     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR
getImageSubresourceLayoutKHR(const VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR & info) const22461       Device::getImageSubresourceLayoutKHR( const VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
22462     {
22463       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR &&
22464                          "Function <vkGetDeviceImageSubresourceLayoutKHR> requires <VK_KHR_maintenance5>" );
22465 
22466       VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR layout;
22467       getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR( static_cast<VkDevice>( m_device ),
22468                                                              reinterpret_cast<const VkDeviceImageSubresourceInfoKHR *>( &info ),
22469                                                              reinterpret_cast<VkSubresourceLayout2KHR *>( &layout ) );
22470 
22471       return layout;
22472     }
22473 
22474     template <typename X, typename Y, typename... Z>
22475     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getImageSubresourceLayoutKHR(const VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR & info) const22476       Device::getImageSubresourceLayoutKHR( const VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
22477     {
22478       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR &&
22479                          "Function <vkGetDeviceImageSubresourceLayoutKHR> requires <VK_KHR_maintenance5>" );
22480 
22481       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
22482       VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR &    layout = structureChain.template get<VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR>();
22483       getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR( static_cast<VkDevice>( m_device ),
22484                                                              reinterpret_cast<const VkDeviceImageSubresourceInfoKHR *>( &info ),
22485                                                              reinterpret_cast<VkSubresourceLayout2KHR *>( &layout ) );
22486 
22487       return structureChain;
22488     }
22489 
22490     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR
getSubresourceLayout2KHR(const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource) const22491       Image::getSubresourceLayout2KHR( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource ) const VULKAN_HPP_NOEXCEPT
22492     {
22493       VULKAN_HPP_ASSERT(
22494         getDispatcher()->vkGetImageSubresourceLayout2KHR &&
22495         "Function <vkGetImageSubresourceLayout2KHR> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5>" );
22496 
22497       VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR layout;
22498       getDispatcher()->vkGetImageSubresourceLayout2KHR( static_cast<VkDevice>( m_device ),
22499                                                         static_cast<VkImage>( m_image ),
22500                                                         reinterpret_cast<const VkImageSubresource2KHR *>( &subresource ),
22501                                                         reinterpret_cast<VkSubresourceLayout2KHR *>( &layout ) );
22502 
22503       return layout;
22504     }
22505 
22506     template <typename X, typename Y, typename... Z>
22507     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getSubresourceLayout2KHR(const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource) const22508       Image::getSubresourceLayout2KHR( const VULKAN_HPP_NAMESPACE::ImageSubresource2KHR & subresource ) const VULKAN_HPP_NOEXCEPT
22509     {
22510       VULKAN_HPP_ASSERT(
22511         getDispatcher()->vkGetImageSubresourceLayout2KHR &&
22512         "Function <vkGetImageSubresourceLayout2KHR> requires <VK_EXT_host_image_copy> or <VK_EXT_image_compression_control> or <VK_KHR_maintenance5>" );
22513 
22514       VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...> structureChain;
22515       VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR &    layout = structureChain.template get<VULKAN_HPP_NAMESPACE::SubresourceLayout2KHR>();
22516       getDispatcher()->vkGetImageSubresourceLayout2KHR( static_cast<VkDevice>( m_device ),
22517                                                         static_cast<VkImage>( m_image ),
22518                                                         reinterpret_cast<const VkImageSubresource2KHR *>( &subresource ),
22519                                                         reinterpret_cast<VkSubresourceLayout2KHR *>( &layout ) );
22520 
22521       return structureChain;
22522     }
22523 
22524     //=== VK_EXT_shader_object ===
22525 
22526     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE
22527       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT>>::Type
createShadersEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const22528       Device::createShadersEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT> const & createInfos,
22529                                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>     allocator ) const
22530     {
22531       std::vector<VULKAN_HPP_NAMESPACE::ShaderEXT> shaders( createInfos.size() );
22532       VULKAN_HPP_NAMESPACE::Result                 result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateShadersEXT(
22533         static_cast<VkDevice>( m_device ),
22534         createInfos.size(),
22535         reinterpret_cast<const VkShaderCreateInfoEXT *>( createInfos.data() ),
22536         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
22537         reinterpret_cast<VkShaderEXT *>( shaders.data() ) ) );
22538       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::eIncompatibleShaderBinaryEXT ) )
22539       {
22540 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
22541         return VULKAN_HPP_UNEXPECTED( result );
22542 #  else
22543         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createShadersEXT" );
22544 #  endif
22545       }
22546 
22547       std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT> shadersRAII;
22548       shadersRAII.reserve( shaders.size() );
22549       for ( auto & shader : shaders )
22550       {
22551         shadersRAII.emplace_back( *this, *reinterpret_cast<VkShaderEXT *>( &shader ), allocator, result );
22552       }
22553       return shadersRAII;
22554     }
22555 
22556     VULKAN_HPP_NODISCARD
22557       VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CreateReturnType<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT>::Type
createShaderEXT(VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator) const22558                         Device::createShaderEXT( VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT const &                               createInfo,
22559                                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator ) const VULKAN_HPP_RAII_CREATE_NOEXCEPT
22560     {
22561       VULKAN_HPP_NAMESPACE::ShaderEXT shader;
22562       VULKAN_HPP_NAMESPACE::Result    result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateShadersEXT(
22563         static_cast<VkDevice>( m_device ),
22564         1,
22565         reinterpret_cast<const VkShaderCreateInfoEXT *>( &createInfo ),
22566         reinterpret_cast<const VkAllocationCallbacks *>( static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
22567         reinterpret_cast<VkShaderEXT *>( &shader ) ) );
22568       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( result != VULKAN_HPP_NAMESPACE::Result::eIncompatibleShaderBinaryEXT ) )
22569       {
22570 #  if defined( VULKAN_HPP_RAII_NO_EXCEPTIONS )
22571         return VULKAN_HPP_UNEXPECTED( result );
22572 #  else
22573         VULKAN_HPP_NAMESPACE::detail::throwResultException( result, "Device::createShaderEXT" );
22574 #  endif
22575       }
22576 
22577       return VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ShaderEXT( *this, *reinterpret_cast<VkShaderEXT *>( &shader ), allocator, result );
22578     }
22579 
getBinaryData() const22580     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> ShaderEXT::getBinaryData() const
22581     {
22582       VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderBinaryDataEXT && "Function <vkGetShaderBinaryDataEXT> requires <VK_EXT_shader_object>" );
22583 
22584       std::vector<uint8_t>         data;
22585       size_t                       dataSize;
22586       VULKAN_HPP_NAMESPACE::Result result;
22587       do
22588       {
22589         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
22590           getDispatcher()->vkGetShaderBinaryDataEXT( static_cast<VkDevice>( m_device ), static_cast<VkShaderEXT>( m_shader ), &dataSize, nullptr ) );
22591         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
22592         {
22593           data.resize( dataSize );
22594           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetShaderBinaryDataEXT(
22595             static_cast<VkDevice>( m_device ), static_cast<VkShaderEXT>( m_shader ), &dataSize, reinterpret_cast<void *>( data.data() ) ) );
22596         }
22597       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
22598       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::ShaderEXT::getBinaryData" );
22599       VULKAN_HPP_ASSERT( dataSize <= data.size() );
22600       if ( dataSize < data.size() )
22601       {
22602         data.resize( dataSize );
22603       }
22604       return data;
22605     }
22606 
bindShadersEXT(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderStageFlagBits> const & stages,VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & shaders) const22607     VULKAN_HPP_INLINE void CommandBuffer::bindShadersEXT( VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderStageFlagBits> const & stages,
22608                                                           VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::ShaderEXT> const & shaders ) const
22609     {
22610       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadersEXT && "Function <vkCmdBindShadersEXT> requires <VK_EXT_shader_object>" );
22611 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
22612       VULKAN_HPP_ASSERT( stages.size() == shaders.size() );
22613 #  else
22614       if ( stages.size() != shaders.size() )
22615       {
22616         throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindShadersEXT: stages.size() != shaders.size()" );
22617       }
22618 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
22619 
22620       getDispatcher()->vkCmdBindShadersEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22621                                             stages.size(),
22622                                             reinterpret_cast<const VkShaderStageFlagBits *>( stages.data() ),
22623                                             reinterpret_cast<const VkShaderEXT *>( shaders.data() ) );
22624     }
22625 
22626     //=== VK_QCOM_tile_properties ===
22627 
getTilePropertiesQCOM() const22628     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::TilePropertiesQCOM> Framebuffer::getTilePropertiesQCOM() const
22629     {
22630       VULKAN_HPP_ASSERT( getDispatcher()->vkGetFramebufferTilePropertiesQCOM &&
22631                          "Function <vkGetFramebufferTilePropertiesQCOM> requires <VK_QCOM_tile_properties>" );
22632 
22633       std::vector<VULKAN_HPP_NAMESPACE::TilePropertiesQCOM> properties;
22634       uint32_t                                              propertiesCount;
22635       VULKAN_HPP_NAMESPACE::Result                          result;
22636       do
22637       {
22638         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetFramebufferTilePropertiesQCOM(
22639           static_cast<VkDevice>( m_device ), static_cast<VkFramebuffer>( m_framebuffer ), &propertiesCount, nullptr ) );
22640         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertiesCount )
22641         {
22642           properties.resize( propertiesCount );
22643           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
22644             getDispatcher()->vkGetFramebufferTilePropertiesQCOM( static_cast<VkDevice>( m_device ),
22645                                                                  static_cast<VkFramebuffer>( m_framebuffer ),
22646                                                                  &propertiesCount,
22647                                                                  reinterpret_cast<VkTilePropertiesQCOM *>( properties.data() ) ) );
22648         }
22649       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
22650 
22651       VULKAN_HPP_ASSERT( propertiesCount <= properties.size() );
22652       if ( propertiesCount < properties.size() )
22653       {
22654         properties.resize( propertiesCount );
22655       }
22656       return properties;
22657     }
22658 
22659     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::TilePropertiesQCOM
getDynamicRenderingTilePropertiesQCOM(const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo) const22660       Device::getDynamicRenderingTilePropertiesQCOM( const VULKAN_HPP_NAMESPACE::RenderingInfo & renderingInfo ) const VULKAN_HPP_NOEXCEPT
22661     {
22662       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDynamicRenderingTilePropertiesQCOM &&
22663                          "Function <vkGetDynamicRenderingTilePropertiesQCOM> requires <VK_QCOM_tile_properties>" );
22664 
22665       VULKAN_HPP_NAMESPACE::TilePropertiesQCOM properties;
22666       getDispatcher()->vkGetDynamicRenderingTilePropertiesQCOM( static_cast<VkDevice>( m_device ),
22667                                                                 reinterpret_cast<const VkRenderingInfo *>( &renderingInfo ),
22668                                                                 reinterpret_cast<VkTilePropertiesQCOM *>( &properties ) );
22669 
22670       return properties;
22671     }
22672 
22673     //=== VK_NV_low_latency2 ===
22674 
setLatencySleepModeNV(const VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV & sleepModeInfo) const22675     VULKAN_HPP_INLINE void SwapchainKHR::setLatencySleepModeNV( const VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV & sleepModeInfo ) const
22676     {
22677       VULKAN_HPP_ASSERT( getDispatcher()->vkSetLatencySleepModeNV && "Function <vkSetLatencySleepModeNV> requires <VK_NV_low_latency2>" );
22678 
22679       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetLatencySleepModeNV(
22680         static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), reinterpret_cast<const VkLatencySleepModeInfoNV *>( &sleepModeInfo ) ) );
22681       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::setLatencySleepModeNV" );
22682     }
22683 
latencySleepNV(const VULKAN_HPP_NAMESPACE::LatencySleepInfoNV & sleepInfo) const22684     VULKAN_HPP_INLINE void SwapchainKHR::latencySleepNV( const VULKAN_HPP_NAMESPACE::LatencySleepInfoNV & sleepInfo ) const VULKAN_HPP_NOEXCEPT
22685     {
22686       VULKAN_HPP_ASSERT( getDispatcher()->vkLatencySleepNV && "Function <vkLatencySleepNV> requires <VK_NV_low_latency2>" );
22687 
22688       getDispatcher()->vkLatencySleepNV(
22689         static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), reinterpret_cast<const VkLatencySleepInfoNV *>( &sleepInfo ) );
22690     }
22691 
setLatencyMarkerNV(const VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV & latencyMarkerInfo) const22692     VULKAN_HPP_INLINE void SwapchainKHR::setLatencyMarkerNV( const VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV & latencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT
22693     {
22694       VULKAN_HPP_ASSERT( getDispatcher()->vkSetLatencyMarkerNV && "Function <vkSetLatencyMarkerNV> requires <VK_NV_low_latency2>" );
22695 
22696       getDispatcher()->vkSetLatencyMarkerNV( static_cast<VkDevice>( m_device ),
22697                                              static_cast<VkSwapchainKHR>( m_swapchain ),
22698                                              reinterpret_cast<const VkSetLatencyMarkerInfoNV *>( &latencyMarkerInfo ) );
22699     }
22700 
getLatencyTimingsNV() const22701     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV SwapchainKHR::getLatencyTimingsNV() const VULKAN_HPP_NOEXCEPT
22702     {
22703       VULKAN_HPP_ASSERT( getDispatcher()->vkGetLatencyTimingsNV && "Function <vkGetLatencyTimingsNV> requires <VK_NV_low_latency2>" );
22704 
22705       VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV latencyMarkerInfo;
22706       getDispatcher()->vkGetLatencyTimingsNV(
22707         static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchain ), reinterpret_cast<VkGetLatencyMarkerInfoNV *>( &latencyMarkerInfo ) );
22708 
22709       return latencyMarkerInfo;
22710     }
22711 
notifyOutOfBandNV(const VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV & queueTypeInfo) const22712     VULKAN_HPP_INLINE void Queue::notifyOutOfBandNV( const VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV & queueTypeInfo ) const VULKAN_HPP_NOEXCEPT
22713     {
22714       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueNotifyOutOfBandNV && "Function <vkQueueNotifyOutOfBandNV> requires <VK_NV_low_latency2>" );
22715 
22716       getDispatcher()->vkQueueNotifyOutOfBandNV( static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkOutOfBandQueueTypeInfoNV *>( &queueTypeInfo ) );
22717     }
22718 
22719     //=== VK_KHR_cooperative_matrix ===
22720 
22721     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR>
getCooperativeMatrixPropertiesKHR() const22722                                            PhysicalDevice::getCooperativeMatrixPropertiesKHR() const
22723     {
22724       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR &&
22725                          "Function <vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR> requires <VK_KHR_cooperative_matrix>" );
22726 
22727       std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR> properties;
22728       uint32_t                                                          propertyCount;
22729       VULKAN_HPP_NAMESPACE::Result                                      result;
22730       do
22731       {
22732         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
22733           getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
22734         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
22735         {
22736           properties.resize( propertyCount );
22737           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(
22738             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, reinterpret_cast<VkCooperativeMatrixPropertiesKHR *>( properties.data() ) ) );
22739         }
22740       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
22741       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesKHR" );
22742       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
22743       if ( propertyCount < properties.size() )
22744       {
22745         properties.resize( propertyCount );
22746       }
22747       return properties;
22748     }
22749 
22750     //=== VK_EXT_attachment_feedback_loop_dynamic_state ===
22751 
setAttachmentFeedbackLoopEnableEXT(VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask) const22752     VULKAN_HPP_INLINE void CommandBuffer::setAttachmentFeedbackLoopEnableEXT( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask ) const VULKAN_HPP_NOEXCEPT
22753     {
22754       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAttachmentFeedbackLoopEnableEXT &&
22755                          "Function <vkCmdSetAttachmentFeedbackLoopEnableEXT> requires <VK_EXT_attachment_feedback_loop_dynamic_state>" );
22756 
22757       getDispatcher()->vkCmdSetAttachmentFeedbackLoopEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22758                                                                 static_cast<VkImageAspectFlags>( aspectMask ) );
22759     }
22760 
22761 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
22762     //=== VK_QNX_external_memory_screen_buffer ===
22763 
22764     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX
getScreenBufferPropertiesQNX(const struct _screen_buffer & buffer) const22765                                            Device::getScreenBufferPropertiesQNX( const struct _screen_buffer & buffer ) const
22766     {
22767       VULKAN_HPP_ASSERT( getDispatcher()->vkGetScreenBufferPropertiesQNX &&
22768                          "Function <vkGetScreenBufferPropertiesQNX> requires <VK_QNX_external_memory_screen_buffer>" );
22769 
22770       VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX properties;
22771       VULKAN_HPP_NAMESPACE::Result                    result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetScreenBufferPropertiesQNX(
22772         static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkScreenBufferPropertiesQNX *>( &properties ) ) );
22773       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getScreenBufferPropertiesQNX" );
22774 
22775       return properties;
22776     }
22777 
22778     template <typename X, typename Y, typename... Z>
22779     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::StructureChain<X, Y, Z...>
getScreenBufferPropertiesQNX(const struct _screen_buffer & buffer) const22780                                            Device::getScreenBufferPropertiesQNX( const struct _screen_buffer & buffer ) const
22781     {
22782       VULKAN_HPP_ASSERT( getDispatcher()->vkGetScreenBufferPropertiesQNX &&
22783                          "Function <vkGetScreenBufferPropertiesQNX> requires <VK_QNX_external_memory_screen_buffer>" );
22784 
22785       StructureChain<X, Y, Z...>                        structureChain;
22786       VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX & properties = structureChain.template get<VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX>();
22787       VULKAN_HPP_NAMESPACE::Result                      result     = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetScreenBufferPropertiesQNX(
22788         static_cast<VkDevice>( m_device ), &buffer, reinterpret_cast<VkScreenBufferPropertiesQNX *>( &properties ) ) );
22789       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getScreenBufferPropertiesQNX" );
22790 
22791       return structureChain;
22792     }
22793 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
22794 
22795     //=== VK_KHR_line_rasterization ===
22796 
setLineStippleKHR(uint32_t lineStippleFactor,uint16_t lineStipplePattern) const22797     VULKAN_HPP_INLINE void CommandBuffer::setLineStippleKHR( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT
22798     {
22799       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleKHR &&
22800                          "Function <vkCmdSetLineStippleKHR> requires <VK_EXT_line_rasterization> or <VK_KHR_line_rasterization>" );
22801 
22802       getDispatcher()->vkCmdSetLineStippleKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), lineStippleFactor, lineStipplePattern );
22803     }
22804 
22805     //=== VK_KHR_calibrated_timestamps ===
22806 
getCalibrateableTimeDomainsKHR() const22807     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::TimeDomainKHR> PhysicalDevice::getCalibrateableTimeDomainsKHR() const
22808     {
22809       VULKAN_HPP_ASSERT(
22810         getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR &&
22811         "Function <vkGetPhysicalDeviceCalibrateableTimeDomainsKHR> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
22812 
22813       std::vector<VULKAN_HPP_NAMESPACE::TimeDomainKHR> timeDomains;
22814       uint32_t                                         timeDomainCount;
22815       VULKAN_HPP_NAMESPACE::Result                     result;
22816       do
22817       {
22818         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
22819           getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, nullptr ) );
22820         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && timeDomainCount )
22821         {
22822           timeDomains.resize( timeDomainCount );
22823           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(
22824             static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, reinterpret_cast<VkTimeDomainKHR *>( timeDomains.data() ) ) );
22825         }
22826       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
22827       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsKHR" );
22828       VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() );
22829       if ( timeDomainCount < timeDomains.size() )
22830       {
22831         timeDomains.resize( timeDomainCount );
22832       }
22833       return timeDomains;
22834     }
22835 
getCalibratedTimestampsKHR(VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR> const & timestampInfos) const22836     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<std::vector<uint64_t>, uint64_t> Device::getCalibratedTimestampsKHR(
22837       VULKAN_HPP_NAMESPACE::ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR> const & timestampInfos ) const
22838     {
22839       VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsKHR &&
22840                          "Function <vkGetCalibratedTimestampsKHR> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
22841 
22842       std::pair<std::vector<uint64_t>, uint64_t> data_( std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) );
22843       std::vector<uint64_t> &                    timestamps   = data_.first;
22844       uint64_t &                                 maxDeviation = data_.second;
22845       VULKAN_HPP_NAMESPACE::Result               result       = static_cast<VULKAN_HPP_NAMESPACE::Result>(
22846         getDispatcher()->vkGetCalibratedTimestampsKHR( static_cast<VkDevice>( m_device ),
22847                                                        timestampInfos.size(),
22848                                                        reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( timestampInfos.data() ),
22849                                                        timestamps.data(),
22850                                                        &maxDeviation ) );
22851       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsKHR" );
22852 
22853       return data_;
22854     }
22855 
22856     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<uint64_t, uint64_t>
getCalibratedTimestampKHR(const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR & timestampInfo) const22857                                            Device::getCalibratedTimestampKHR( const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR & timestampInfo ) const
22858     {
22859       VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsKHR &&
22860                          "Function <vkGetCalibratedTimestampsKHR> requires <VK_EXT_calibrated_timestamps> or <VK_KHR_calibrated_timestamps>" );
22861 
22862       std::pair<uint64_t, uint64_t> data_;
22863       uint64_t &                    timestamp    = data_.first;
22864       uint64_t &                    maxDeviation = data_.second;
22865       VULKAN_HPP_NAMESPACE::Result  result       = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetCalibratedTimestampsKHR(
22866         static_cast<VkDevice>( m_device ), 1, reinterpret_cast<const VkCalibratedTimestampInfoKHR *>( &timestampInfo ), &timestamp, &maxDeviation ) );
22867       VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampKHR" );
22868 
22869       return data_;
22870     }
22871 
22872     //=== VK_KHR_maintenance6 ===
22873 
22874     VULKAN_HPP_INLINE void
bindDescriptorSets2KHR(const VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR & bindDescriptorSetsInfo) const22875       CommandBuffer::bindDescriptorSets2KHR( const VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfoKHR & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT
22876     {
22877       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorSets2KHR && "Function <vkCmdBindDescriptorSets2KHR> requires <VK_KHR_maintenance6>" );
22878 
22879       getDispatcher()->vkCmdBindDescriptorSets2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
22880                                                     reinterpret_cast<const VkBindDescriptorSetsInfoKHR *>( &bindDescriptorSetsInfo ) );
22881     }
22882 
pushConstants2KHR(const VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR & pushConstantsInfo) const22883     VULKAN_HPP_INLINE void CommandBuffer::pushConstants2KHR( const VULKAN_HPP_NAMESPACE::PushConstantsInfoKHR & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT
22884     {
22885       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants2KHR && "Function <vkCmdPushConstants2KHR> requires <VK_KHR_maintenance6>" );
22886 
22887       getDispatcher()->vkCmdPushConstants2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
22888                                                reinterpret_cast<const VkPushConstantsInfoKHR *>( &pushConstantsInfo ) );
22889     }
22890 
22891     VULKAN_HPP_INLINE void
pushDescriptorSet2KHR(const VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR & pushDescriptorSetInfo) const22892       CommandBuffer::pushDescriptorSet2KHR( const VULKAN_HPP_NAMESPACE::PushDescriptorSetInfoKHR & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT
22893     {
22894       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSet2KHR && "Function <vkCmdPushDescriptorSet2KHR> requires <VK_KHR_maintenance6>" );
22895 
22896       getDispatcher()->vkCmdPushDescriptorSet2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
22897                                                    reinterpret_cast<const VkPushDescriptorSetInfoKHR *>( &pushDescriptorSetInfo ) );
22898     }
22899 
pushDescriptorSetWithTemplate2KHR(const VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR & pushDescriptorSetWithTemplateInfo) const22900     VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate2KHR(
22901       const VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfoKHR & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT
22902     {
22903       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetWithTemplate2KHR &&
22904                          "Function <vkCmdPushDescriptorSetWithTemplate2KHR> requires <VK_KHR_maintenance6>" );
22905 
22906       getDispatcher()->vkCmdPushDescriptorSetWithTemplate2KHR(
22907         static_cast<VkCommandBuffer>( m_commandBuffer ),
22908         reinterpret_cast<const VkPushDescriptorSetWithTemplateInfoKHR *>( &pushDescriptorSetWithTemplateInfo ) );
22909     }
22910 
setDescriptorBufferOffsets2EXT(const VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT & setDescriptorBufferOffsetsInfo) const22911     VULKAN_HPP_INLINE void CommandBuffer::setDescriptorBufferOffsets2EXT(
22912       const VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT & setDescriptorBufferOffsetsInfo ) const VULKAN_HPP_NOEXCEPT
22913     {
22914       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDescriptorBufferOffsets2EXT &&
22915                          "Function <vkCmdSetDescriptorBufferOffsets2EXT> requires <VK_KHR_maintenance6>" );
22916 
22917       getDispatcher()->vkCmdSetDescriptorBufferOffsets2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
22918                                                             reinterpret_cast<const VkSetDescriptorBufferOffsetsInfoEXT *>( &setDescriptorBufferOffsetsInfo ) );
22919     }
22920 
bindDescriptorBufferEmbeddedSamplers2EXT(const VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT & bindDescriptorBufferEmbeddedSamplersInfo) const22921     VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplers2EXT(
22922       const VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT & bindDescriptorBufferEmbeddedSamplersInfo ) const VULKAN_HPP_NOEXCEPT
22923     {
22924       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT &&
22925                          "Function <vkCmdBindDescriptorBufferEmbeddedSamplers2EXT> requires <VK_KHR_maintenance6>" );
22926 
22927       getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(
22928         static_cast<VkCommandBuffer>( m_commandBuffer ),
22929         reinterpret_cast<const VkBindDescriptorBufferEmbeddedSamplersInfoEXT *>( &bindDescriptorBufferEmbeddedSamplersInfo ) );
22930     }
22931 
22932     //====================
22933     //=== RAII Helpers ===
22934     //====================
22935 
22936     template <typename RAIIType>
filterCppTypes(std::vector<RAIIType> const & raiiTypes)22937     std::vector<typename RAIIType::CppType> filterCppTypes( std::vector<RAIIType> const & raiiTypes )
22938     {
22939       std::vector<typename RAIIType::CppType> cppTypes( raiiTypes.size() );
22940       std::transform( raiiTypes.begin(), raiiTypes.end(), cppTypes.begin(), []( RAIIType const & d ) { return *d; } );
22941       return cppTypes;
22942     }
22943 
22944     template <typename RAIIType, class UnaryPredicate>
filterCppTypes(std::vector<RAIIType> const & raiiTypes,UnaryPredicate p)22945     std::vector<typename RAIIType::CppType> filterCppTypes( std::vector<RAIIType> const & raiiTypes, UnaryPredicate p )
22946     {
22947       std::vector<typename RAIIType::CppType> cppTypes;
22948       for ( auto const & t : raiiTypes )
22949       {
22950         if ( p( t ) )
22951         {
22952           cppTypes.push_back( *t );
22953         }
22954       }
22955       return cppTypes;
22956     }
22957 
22958   }  // namespace VULKAN_HPP_RAII_NAMESPACE
22959 }  // namespace VULKAN_HPP_NAMESPACE
22960 #endif
22961 #endif
22962