• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015-2021 The Khronos Group Inc.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR MIT
4 //
5 
6 // This header is generated from the Khronos Vulkan XML API Registry.
7 
8 #ifndef VULKAN_RAII_HPP
9 #define VULKAN_RAII_HPP
10 
11 #include <vulkan/vulkan.hpp>
12 
13 #if !defined( VULKAN_HPP_RAII_NAMESPACE )
14 #  define VULKAN_HPP_RAII_NAMESPACE raii
15 #endif
16 
17 namespace VULKAN_HPP_NAMESPACE
18 {
19   namespace VULKAN_HPP_RAII_NAMESPACE
20   {
21 #if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) && !defined( VULKAN_HPP_NO_EXCEPTIONS )
22 
23     template <class T, class U = T>
exchange(T & obj,U && newValue)24     VULKAN_HPP_CONSTEXPR_14 VULKAN_HPP_INLINE T exchange( T & obj, U && newValue )
25     {
26 #  if ( 14 <= VULKAN_HPP_CPP_VERSION )
27       return std::exchange<T>( obj, std::forward<U>( newValue ) );
28 #  else
29       T oldValue = std::move( obj );
30       obj        = std::forward<U>( newValue );
31       return oldValue;
32 #  endif
33     }
34 
35     class ContextDispatcher
36     {
37     public:
ContextDispatcher(PFN_vkGetInstanceProcAddr getProcAddr)38       ContextDispatcher( PFN_vkGetInstanceProcAddr getProcAddr )
39         : vkGetInstanceProcAddr( getProcAddr )
40         , vkCreateInstance( PFN_vkCreateInstance( getProcAddr( NULL, "vkCreateInstance" ) ) )
41         , vkEnumerateInstanceExtensionProperties( PFN_vkEnumerateInstanceExtensionProperties(
42             getProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ) )
43         , vkEnumerateInstanceLayerProperties(
44             PFN_vkEnumerateInstanceLayerProperties( getProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ) )
45         , vkEnumerateInstanceVersion(
46             PFN_vkEnumerateInstanceVersion( getProcAddr( NULL, "vkEnumerateInstanceVersion" ) ) )
47       {}
48 
49     public:
50       PFN_vkGetInstanceProcAddr                  vkGetInstanceProcAddr                  = 0;
51       PFN_vkCreateInstance                       vkCreateInstance                       = 0;
52       PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0;
53       PFN_vkEnumerateInstanceLayerProperties     vkEnumerateInstanceLayerProperties     = 0;
54       PFN_vkEnumerateInstanceVersion             vkEnumerateInstanceVersion             = 0;
55     };
56 
57     class InstanceDispatcher
58     {
59     public:
InstanceDispatcher(PFN_vkGetInstanceProcAddr getProcAddr)60       InstanceDispatcher( PFN_vkGetInstanceProcAddr getProcAddr ) : vkGetInstanceProcAddr( getProcAddr ) {}
61 
62 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
63       InstanceDispatcher() = default;
64 #  endif
65 
init(VkInstance instance)66       void init( VkInstance instance )
67       {
68         vkAcquireDrmDisplayEXT =
69           PFN_vkAcquireDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" ) );
70 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
71         vkAcquireWinrtDisplayNV =
72           PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) );
73 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
74 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
75         vkAcquireXlibDisplayEXT =
76           PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) );
77 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
78 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
79         vkCreateAndroidSurfaceKHR =
80           PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) );
81 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
82         vkCreateDebugReportCallbackEXT =
83           PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) );
84         vkCreateDebugUtilsMessengerEXT =
85           PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) );
86         vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) );
87 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
88         vkCreateDirectFBSurfaceEXT =
89           PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) );
90 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
91         vkCreateDisplayModeKHR =
92           PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) );
93         vkCreateDisplayPlaneSurfaceKHR =
94           PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) );
95         vkCreateHeadlessSurfaceEXT =
96           PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) );
97 #  if defined( VK_USE_PLATFORM_IOS_MVK )
98         vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) );
99 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
100 #  if defined( VK_USE_PLATFORM_FUCHSIA )
101         vkCreateImagePipeSurfaceFUCHSIA =
102           PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) );
103 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
104 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
105         vkCreateMacOSSurfaceMVK =
106           PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) );
107 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
108 #  if defined( VK_USE_PLATFORM_METAL_EXT )
109         vkCreateMetalSurfaceEXT =
110           PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) );
111 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
112 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
113         vkCreateScreenSurfaceQNX =
114           PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) );
115 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
116 #  if defined( VK_USE_PLATFORM_GGP )
117         vkCreateStreamDescriptorSurfaceGGP = PFN_vkCreateStreamDescriptorSurfaceGGP(
118           vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) );
119 #  endif /*VK_USE_PLATFORM_GGP*/
120 #  if defined( VK_USE_PLATFORM_VI_NN )
121         vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) );
122 #  endif /*VK_USE_PLATFORM_VI_NN*/
123 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
124         vkCreateWaylandSurfaceKHR =
125           PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) );
126 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
127 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
128         vkCreateWin32SurfaceKHR =
129           PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) );
130 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
131 #  if defined( VK_USE_PLATFORM_XCB_KHR )
132         vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) );
133 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
134 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
135         vkCreateXlibSurfaceKHR =
136           PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) );
137 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
138         vkDebugReportMessageEXT =
139           PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) );
140         vkDestroyDebugReportCallbackEXT =
141           PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) );
142         vkDestroyDebugUtilsMessengerEXT =
143           PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) );
144         vkDestroyInstance   = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) );
145         vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) );
146         vkEnumerateDeviceExtensionProperties = PFN_vkEnumerateDeviceExtensionProperties(
147           vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) );
148         vkEnumerateDeviceLayerProperties =
149           PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) );
150         vkEnumeratePhysicalDeviceGroups =
151           PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) );
152         vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR(
153           vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) );
154         if ( !vkEnumeratePhysicalDeviceGroups )
155           vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR;
156         vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR =
157           PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
158             vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) );
159         vkEnumeratePhysicalDevices =
160           PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) );
161         vkGetDisplayModeProperties2KHR =
162           PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) );
163         vkGetDisplayModePropertiesKHR =
164           PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) );
165         vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR(
166           vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) );
167         vkGetDisplayPlaneCapabilitiesKHR =
168           PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) );
169         vkGetDisplayPlaneSupportedDisplaysKHR = PFN_vkGetDisplayPlaneSupportedDisplaysKHR(
170           vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) );
171         vkGetDrmDisplayEXT    = PFN_vkGetDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" ) );
172         vkGetInstanceProcAddr = PFN_vkGetInstanceProcAddr( vkGetInstanceProcAddr( instance, "vkGetInstanceProcAddr" ) );
173         vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
174           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) );
175         vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
176           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) );
177 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
178         vkGetPhysicalDeviceDirectFBPresentationSupportEXT = PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
179           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) );
180 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
181         vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
182           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) );
183         vkGetPhysicalDeviceDisplayPlanePropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
184           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) );
185         vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkGetPhysicalDeviceDisplayProperties2KHR(
186           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) );
187         vkGetPhysicalDeviceDisplayPropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPropertiesKHR(
188           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) );
189         vkGetPhysicalDeviceExternalBufferProperties = PFN_vkGetPhysicalDeviceExternalBufferProperties(
190           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) );
191         vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR(
192           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) );
193         if ( !vkGetPhysicalDeviceExternalBufferProperties )
194           vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR;
195         vkGetPhysicalDeviceExternalFenceProperties = PFN_vkGetPhysicalDeviceExternalFenceProperties(
196           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) );
197         vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR(
198           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) );
199         if ( !vkGetPhysicalDeviceExternalFenceProperties )
200           vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR;
201         vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
202           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) );
203         vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkGetPhysicalDeviceExternalSemaphoreProperties(
204           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) );
205         vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
206           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) );
207         if ( !vkGetPhysicalDeviceExternalSemaphoreProperties )
208           vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR;
209         vkGetPhysicalDeviceFeatures =
210           PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) );
211         vkGetPhysicalDeviceFeatures2 =
212           PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) );
213         vkGetPhysicalDeviceFeatures2KHR =
214           PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) );
215         if ( !vkGetPhysicalDeviceFeatures2 )
216           vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR;
217         vkGetPhysicalDeviceFormatProperties = PFN_vkGetPhysicalDeviceFormatProperties(
218           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) );
219         vkGetPhysicalDeviceFormatProperties2 = PFN_vkGetPhysicalDeviceFormatProperties2(
220           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) );
221         vkGetPhysicalDeviceFormatProperties2KHR = PFN_vkGetPhysicalDeviceFormatProperties2KHR(
222           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) );
223         if ( !vkGetPhysicalDeviceFormatProperties2 )
224           vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR;
225         vkGetPhysicalDeviceFragmentShadingRatesKHR = PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR(
226           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) );
227         vkGetPhysicalDeviceImageFormatProperties = PFN_vkGetPhysicalDeviceImageFormatProperties(
228           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) );
229         vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkGetPhysicalDeviceImageFormatProperties2(
230           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) );
231         vkGetPhysicalDeviceImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceImageFormatProperties2KHR(
232           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) );
233         if ( !vkGetPhysicalDeviceImageFormatProperties2 )
234           vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR;
235         vkGetPhysicalDeviceMemoryProperties = PFN_vkGetPhysicalDeviceMemoryProperties(
236           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) );
237         vkGetPhysicalDeviceMemoryProperties2 = PFN_vkGetPhysicalDeviceMemoryProperties2(
238           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) );
239         vkGetPhysicalDeviceMemoryProperties2KHR = PFN_vkGetPhysicalDeviceMemoryProperties2KHR(
240           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) );
241         if ( !vkGetPhysicalDeviceMemoryProperties2 )
242           vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR;
243         vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT(
244           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) );
245         vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR(
246           vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) );
247         vkGetPhysicalDeviceProperties =
248           PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) );
249         vkGetPhysicalDeviceProperties2 =
250           PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) );
251         vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR(
252           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) );
253         if ( !vkGetPhysicalDeviceProperties2 )
254           vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR;
255         vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR =
256           PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
257             vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) );
258         vkGetPhysicalDeviceQueueFamilyProperties = PFN_vkGetPhysicalDeviceQueueFamilyProperties(
259           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) );
260         vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkGetPhysicalDeviceQueueFamilyProperties2(
261           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) );
262         vkGetPhysicalDeviceQueueFamilyProperties2KHR = PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR(
263           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) );
264         if ( !vkGetPhysicalDeviceQueueFamilyProperties2 )
265           vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR;
266 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
267         vkGetPhysicalDeviceScreenPresentationSupportQNX = PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX(
268           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) );
269 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
270         vkGetPhysicalDeviceSparseImageFormatProperties = PFN_vkGetPhysicalDeviceSparseImageFormatProperties(
271           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) );
272         vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2(
273           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) );
274         vkGetPhysicalDeviceSparseImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
275           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) );
276         if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 )
277           vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR;
278         vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV =
279           PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
280             vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) );
281         vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT(
282           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) );
283         vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR(
284           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) );
285         vkGetPhysicalDeviceSurfaceCapabilitiesKHR = PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
286           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) );
287         vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkGetPhysicalDeviceSurfaceFormats2KHR(
288           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) );
289         vkGetPhysicalDeviceSurfaceFormatsKHR = PFN_vkGetPhysicalDeviceSurfaceFormatsKHR(
290           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) );
291 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
292         vkGetPhysicalDeviceSurfacePresentModes2EXT = PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT(
293           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) );
294 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
295         vkGetPhysicalDeviceSurfacePresentModesKHR = PFN_vkGetPhysicalDeviceSurfacePresentModesKHR(
296           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) );
297         vkGetPhysicalDeviceSurfaceSupportKHR = PFN_vkGetPhysicalDeviceSurfaceSupportKHR(
298           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) );
299         vkGetPhysicalDeviceToolPropertiesEXT = PFN_vkGetPhysicalDeviceToolPropertiesEXT(
300           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) );
301 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
302         vkGetPhysicalDeviceVideoCapabilitiesKHR = PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR(
303           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoCapabilitiesKHR" ) );
304 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
305 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
306         vkGetPhysicalDeviceVideoFormatPropertiesKHR = PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR(
307           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoFormatPropertiesKHR" ) );
308 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
309 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
310         vkGetPhysicalDeviceWaylandPresentationSupportKHR = PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR(
311           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) );
312 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
313 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
314         vkGetPhysicalDeviceWin32PresentationSupportKHR = PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR(
315           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) );
316 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
317 #  if defined( VK_USE_PLATFORM_XCB_KHR )
318         vkGetPhysicalDeviceXcbPresentationSupportKHR = PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR(
319           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) );
320 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
321 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
322         vkGetPhysicalDeviceXlibPresentationSupportKHR = PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR(
323           vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) );
324 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
325 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
326         vkGetRandROutputDisplayEXT =
327           PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) );
328 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
329 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
330         vkGetWinrtDisplayNV = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) );
331 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
332         vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) );
333         vkSubmitDebugUtilsMessageEXT =
334           PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) );
335 
336         vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) );
337       }
338 
339     public:
340       PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT = 0;
341 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
342       PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0;
343 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
344 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
345       PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0;
346 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
347 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
348       PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0;
349 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
350       PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0;
351       PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0;
352       PFN_vkCreateDevice                 vkCreateDevice                 = 0;
353 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
354       PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT = 0;
355 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
356       PFN_vkCreateDisplayModeKHR         vkCreateDisplayModeKHR         = 0;
357       PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0;
358       PFN_vkCreateHeadlessSurfaceEXT     vkCreateHeadlessSurfaceEXT     = 0;
359 #  if defined( VK_USE_PLATFORM_IOS_MVK )
360       PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0;
361 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
362 #  if defined( VK_USE_PLATFORM_FUCHSIA )
363       PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0;
364 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
365 #  if defined( VK_USE_PLATFORM_MACOS_MVK )
366       PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0;
367 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
368 #  if defined( VK_USE_PLATFORM_METAL_EXT )
369       PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0;
370 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
371 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
372       PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX = 0;
373 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
374 #  if defined( VK_USE_PLATFORM_GGP )
375       PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0;
376 #  endif /*VK_USE_PLATFORM_GGP*/
377 #  if defined( VK_USE_PLATFORM_VI_NN )
378       PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0;
379 #  endif /*VK_USE_PLATFORM_VI_NN*/
380 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
381       PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0;
382 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
383 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
384       PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0;
385 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
386 #  if defined( VK_USE_PLATFORM_XCB_KHR )
387       PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0;
388 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
389 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
390       PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0;
391 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
392       PFN_vkDebugReportMessageEXT              vkDebugReportMessageEXT              = 0;
393       PFN_vkDestroyDebugReportCallbackEXT      vkDestroyDebugReportCallbackEXT      = 0;
394       PFN_vkDestroyDebugUtilsMessengerEXT      vkDestroyDebugUtilsMessengerEXT      = 0;
395       PFN_vkDestroyInstance                    vkDestroyInstance                    = 0;
396       PFN_vkDestroySurfaceKHR                  vkDestroySurfaceKHR                  = 0;
397       PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0;
398       PFN_vkEnumerateDeviceLayerProperties     vkEnumerateDeviceLayerProperties     = 0;
399       PFN_vkEnumeratePhysicalDeviceGroups      vkEnumeratePhysicalDeviceGroups      = 0;
400       PFN_vkEnumeratePhysicalDeviceGroupsKHR   vkEnumeratePhysicalDeviceGroupsKHR   = 0;
401       PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
402                                                            vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0;
403       PFN_vkEnumeratePhysicalDevices                       vkEnumeratePhysicalDevices                       = 0;
404       PFN_vkGetDisplayModeProperties2KHR                   vkGetDisplayModeProperties2KHR                   = 0;
405       PFN_vkGetDisplayModePropertiesKHR                    vkGetDisplayModePropertiesKHR                    = 0;
406       PFN_vkGetDisplayPlaneCapabilities2KHR                vkGetDisplayPlaneCapabilities2KHR                = 0;
407       PFN_vkGetDisplayPlaneCapabilitiesKHR                 vkGetDisplayPlaneCapabilitiesKHR                 = 0;
408       PFN_vkGetDisplayPlaneSupportedDisplaysKHR            vkGetDisplayPlaneSupportedDisplaysKHR            = 0;
409       PFN_vkGetDrmDisplayEXT                               vkGetDrmDisplayEXT                               = 0;
410       PFN_vkGetInstanceProcAddr                            vkGetInstanceProcAddr                            = 0;
411       PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT   vkGetPhysicalDeviceCalibrateableTimeDomainsEXT   = 0;
412       PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0;
413 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
414       PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0;
415 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
416       PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR      vkGetPhysicalDeviceDisplayPlaneProperties2KHR      = 0;
417       PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR       vkGetPhysicalDeviceDisplayPlanePropertiesKHR       = 0;
418       PFN_vkGetPhysicalDeviceDisplayProperties2KHR           vkGetPhysicalDeviceDisplayProperties2KHR           = 0;
419       PFN_vkGetPhysicalDeviceDisplayPropertiesKHR            vkGetPhysicalDeviceDisplayPropertiesKHR            = 0;
420       PFN_vkGetPhysicalDeviceExternalBufferProperties        vkGetPhysicalDeviceExternalBufferProperties        = 0;
421       PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR     vkGetPhysicalDeviceExternalBufferPropertiesKHR     = 0;
422       PFN_vkGetPhysicalDeviceExternalFenceProperties         vkGetPhysicalDeviceExternalFenceProperties         = 0;
423       PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR      vkGetPhysicalDeviceExternalFencePropertiesKHR      = 0;
424       PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0;
425       PFN_vkGetPhysicalDeviceExternalSemaphoreProperties     vkGetPhysicalDeviceExternalSemaphoreProperties     = 0;
426       PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR  vkGetPhysicalDeviceExternalSemaphorePropertiesKHR  = 0;
427       PFN_vkGetPhysicalDeviceFeatures                        vkGetPhysicalDeviceFeatures                        = 0;
428       PFN_vkGetPhysicalDeviceFeatures2                       vkGetPhysicalDeviceFeatures2                       = 0;
429       PFN_vkGetPhysicalDeviceFeatures2KHR                    vkGetPhysicalDeviceFeatures2KHR                    = 0;
430       PFN_vkGetPhysicalDeviceFormatProperties                vkGetPhysicalDeviceFormatProperties                = 0;
431       PFN_vkGetPhysicalDeviceFormatProperties2               vkGetPhysicalDeviceFormatProperties2               = 0;
432       PFN_vkGetPhysicalDeviceFormatProperties2KHR            vkGetPhysicalDeviceFormatProperties2KHR            = 0;
433       PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR         vkGetPhysicalDeviceFragmentShadingRatesKHR         = 0;
434       PFN_vkGetPhysicalDeviceImageFormatProperties           vkGetPhysicalDeviceImageFormatProperties           = 0;
435       PFN_vkGetPhysicalDeviceImageFormatProperties2          vkGetPhysicalDeviceImageFormatProperties2          = 0;
436       PFN_vkGetPhysicalDeviceImageFormatProperties2KHR       vkGetPhysicalDeviceImageFormatProperties2KHR       = 0;
437       PFN_vkGetPhysicalDeviceMemoryProperties                vkGetPhysicalDeviceMemoryProperties                = 0;
438       PFN_vkGetPhysicalDeviceMemoryProperties2               vkGetPhysicalDeviceMemoryProperties2               = 0;
439       PFN_vkGetPhysicalDeviceMemoryProperties2KHR            vkGetPhysicalDeviceMemoryProperties2KHR            = 0;
440       PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT        vkGetPhysicalDeviceMultisamplePropertiesEXT        = 0;
441       PFN_vkGetPhysicalDevicePresentRectanglesKHR            vkGetPhysicalDevicePresentRectanglesKHR            = 0;
442       PFN_vkGetPhysicalDeviceProperties                      vkGetPhysicalDeviceProperties                      = 0;
443       PFN_vkGetPhysicalDeviceProperties2                     vkGetPhysicalDeviceProperties2                     = 0;
444       PFN_vkGetPhysicalDeviceProperties2KHR                  vkGetPhysicalDeviceProperties2KHR                  = 0;
445       PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
446                                                        vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 0;
447       PFN_vkGetPhysicalDeviceQueueFamilyProperties     vkGetPhysicalDeviceQueueFamilyProperties                = 0;
448       PFN_vkGetPhysicalDeviceQueueFamilyProperties2    vkGetPhysicalDeviceQueueFamilyProperties2               = 0;
449       PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR            = 0;
450 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
451       PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0;
452 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
453       PFN_vkGetPhysicalDeviceSparseImageFormatProperties     vkGetPhysicalDeviceSparseImageFormatProperties     = 0;
454       PFN_vkGetPhysicalDeviceSparseImageFormatProperties2    vkGetPhysicalDeviceSparseImageFormatProperties2    = 0;
455       PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0;
456       PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
457                                                      vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0;
458       PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0;
459       PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0;
460       PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR  vkGetPhysicalDeviceSurfaceCapabilitiesKHR  = 0;
461       PFN_vkGetPhysicalDeviceSurfaceFormats2KHR      vkGetPhysicalDeviceSurfaceFormats2KHR      = 0;
462       PFN_vkGetPhysicalDeviceSurfaceFormatsKHR       vkGetPhysicalDeviceSurfaceFormatsKHR       = 0;
463 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
464       PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0;
465 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
466       PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0;
467       PFN_vkGetPhysicalDeviceSurfaceSupportKHR      vkGetPhysicalDeviceSurfaceSupportKHR      = 0;
468       PFN_vkGetPhysicalDeviceToolPropertiesEXT      vkGetPhysicalDeviceToolPropertiesEXT      = 0;
469 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
470       PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR = 0;
471 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
472 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
473       PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR = 0;
474 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
475 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
476       PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0;
477 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
478 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
479       PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0;
480 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
481 #  if defined( VK_USE_PLATFORM_XCB_KHR )
482       PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0;
483 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
484 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
485       PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0;
486 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
487 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
488       PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0;
489 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
490 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
491       PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV = 0;
492 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
493       PFN_vkReleaseDisplayEXT          vkReleaseDisplayEXT          = 0;
494       PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0;
495 
496       PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0;
497     };
498 
499     class DeviceDispatcher
500     {
501     public:
DeviceDispatcher(PFN_vkGetDeviceProcAddr getProcAddr)502       DeviceDispatcher( PFN_vkGetDeviceProcAddr getProcAddr ) : vkGetDeviceProcAddr( getProcAddr ) {}
503 
504 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
505       DeviceDispatcher() = default;
506 #  endif
507 
init(VkDevice device)508       void init( VkDevice device )
509       {
510 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
511         vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT(
512           vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) );
513 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
514         vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) );
515         vkAcquireNextImageKHR  = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) );
516         vkAcquirePerformanceConfigurationINTEL = PFN_vkAcquirePerformanceConfigurationINTEL(
517           vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) );
518         vkAcquireProfilingLockKHR =
519           PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) );
520         vkAllocateCommandBuffers =
521           PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) );
522         vkAllocateDescriptorSets =
523           PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) );
524         vkAllocateMemory     = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) );
525         vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) );
526         vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV(
527           vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) );
528         vkBindBufferMemory     = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) );
529         vkBindBufferMemory2    = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) );
530         vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) );
531         if ( !vkBindBufferMemory2 )
532           vkBindBufferMemory2 = vkBindBufferMemory2KHR;
533         vkBindImageMemory     = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) );
534         vkBindImageMemory2    = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) );
535         vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) );
536         if ( !vkBindImageMemory2 )
537           vkBindImageMemory2 = vkBindImageMemory2KHR;
538 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
539         vkBindVideoSessionMemoryKHR =
540           PFN_vkBindVideoSessionMemoryKHR( vkGetDeviceProcAddr( device, "vkBindVideoSessionMemoryKHR" ) );
541 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
542         vkBuildAccelerationStructuresKHR =
543           PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) );
544         vkCmdBeginConditionalRenderingEXT =
545           PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) );
546         vkCmdBeginDebugUtilsLabelEXT =
547           PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) );
548         vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) );
549         vkCmdBeginQueryIndexedEXT =
550           PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) );
551         vkCmdBeginRenderPass  = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) );
552         vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) );
553         vkCmdBeginRenderPass2KHR =
554           PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) );
555         if ( !vkCmdBeginRenderPass2 )
556           vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR;
557         vkCmdBeginTransformFeedbackEXT =
558           PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) );
559 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
560         vkCmdBeginVideoCodingKHR =
561           PFN_vkCmdBeginVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginVideoCodingKHR" ) );
562 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
563         vkCmdBindDescriptorSets =
564           PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) );
565         vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) );
566         vkCmdBindPipeline    = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) );
567         vkCmdBindPipelineShaderGroupNV =
568           PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) );
569         vkCmdBindShadingRateImageNV =
570           PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) );
571         vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT(
572           vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) );
573         vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) );
574         vkCmdBindVertexBuffers2EXT =
575           PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) );
576         vkCmdBlitImage     = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) );
577         vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) );
578         vkCmdBuildAccelerationStructureNV =
579           PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) );
580         vkCmdBuildAccelerationStructuresIndirectKHR = PFN_vkCmdBuildAccelerationStructuresIndirectKHR(
581           vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) );
582         vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR(
583           vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) );
584         vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) );
585         vkCmdClearColorImage  = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) );
586         vkCmdClearDepthStencilImage =
587           PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) );
588 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
589         vkCmdControlVideoCodingKHR =
590           PFN_vkCmdControlVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdControlVideoCodingKHR" ) );
591 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
592         vkCmdCopyAccelerationStructureKHR =
593           PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) );
594         vkCmdCopyAccelerationStructureNV =
595           PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) );
596         vkCmdCopyAccelerationStructureToMemoryKHR = PFN_vkCmdCopyAccelerationStructureToMemoryKHR(
597           vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) );
598         vkCmdCopyBuffer        = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) );
599         vkCmdCopyBuffer2KHR    = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) );
600         vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) );
601         vkCmdCopyBufferToImage2KHR =
602           PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) );
603         vkCmdCopyImage         = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) );
604         vkCmdCopyImage2KHR     = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) );
605         vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) );
606         vkCmdCopyImageToBuffer2KHR =
607           PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) );
608         vkCmdCopyMemoryToAccelerationStructureKHR = PFN_vkCmdCopyMemoryToAccelerationStructureKHR(
609           vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) );
610         vkCmdCopyQueryPoolResults =
611           PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) );
612         vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" ) );
613         vkCmdDebugMarkerBeginEXT =
614           PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) );
615         vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) );
616         vkCmdDebugMarkerInsertEXT =
617           PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) );
618 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
619         vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdDecodeVideoKHR" ) );
620 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
621         vkCmdDispatch        = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) );
622         vkCmdDispatchBase    = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) );
623         vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) );
624         if ( !vkCmdDispatchBase )
625           vkCmdDispatchBase = vkCmdDispatchBaseKHR;
626         vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) );
627         vkCmdDraw             = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) );
628         vkCmdDrawIndexed      = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) );
629         vkCmdDrawIndexedIndirect =
630           PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) );
631         vkCmdDrawIndexedIndirectCount =
632           PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) );
633         vkCmdDrawIndexedIndirectCountAMD =
634           PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) );
635         if ( !vkCmdDrawIndexedIndirectCount )
636           vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD;
637         vkCmdDrawIndexedIndirectCountKHR =
638           PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) );
639         if ( !vkCmdDrawIndexedIndirectCount )
640           vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR;
641         vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) );
642         vkCmdDrawIndirectByteCountEXT =
643           PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) );
644         vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) );
645         vkCmdDrawIndirectCountAMD =
646           PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) );
647         if ( !vkCmdDrawIndirectCount )
648           vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD;
649         vkCmdDrawIndirectCountKHR =
650           PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) );
651         if ( !vkCmdDrawIndirectCount )
652           vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR;
653         vkCmdDrawMeshTasksIndirectCountNV =
654           PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) );
655         vkCmdDrawMeshTasksIndirectNV =
656           PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) );
657         vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) );
658         vkCmdDrawMultiEXT    = PFN_vkCmdDrawMultiEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" ) );
659         vkCmdDrawMultiIndexedEXT =
660           PFN_vkCmdDrawMultiIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" ) );
661 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
662         vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) );
663 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
664         vkCmdEndConditionalRenderingEXT =
665           PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) );
666         vkCmdEndDebugUtilsLabelEXT =
667           PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) );
668         vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) );
669         vkCmdEndQueryIndexedEXT =
670           PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) );
671         vkCmdEndRenderPass     = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) );
672         vkCmdEndRenderPass2    = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) );
673         vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) );
674         if ( !vkCmdEndRenderPass2 )
675           vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR;
676         vkCmdEndTransformFeedbackEXT =
677           PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) );
678 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
679         vkCmdEndVideoCodingKHR = PFN_vkCmdEndVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdEndVideoCodingKHR" ) );
680 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
681         vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) );
682         vkCmdExecuteGeneratedCommandsNV =
683           PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) );
684         vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) );
685         vkCmdInsertDebugUtilsLabelEXT =
686           PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) );
687         vkCmdNextSubpass     = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) );
688         vkCmdNextSubpass2    = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) );
689         vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) );
690         if ( !vkCmdNextSubpass2 )
691           vkCmdNextSubpass2 = vkCmdNextSubpass2KHR;
692         vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) );
693         vkCmdPipelineBarrier2KHR =
694           PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) );
695         vkCmdPreprocessGeneratedCommandsNV =
696           PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) );
697         vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) );
698         vkCmdPushDescriptorSetKHR =
699           PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) );
700         vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR(
701           vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) );
702         vkCmdResetEvent        = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) );
703         vkCmdResetEvent2KHR    = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) );
704         vkCmdResetQueryPool    = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) );
705         vkCmdResolveImage      = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) );
706         vkCmdResolveImage2KHR  = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) );
707         vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) );
708         vkCmdSetCheckpointNV   = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) );
709         vkCmdSetCoarseSampleOrderNV =
710           PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) );
711         vkCmdSetColorWriteEnableEXT =
712           PFN_vkCmdSetColorWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" ) );
713         vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) );
714         vkCmdSetDepthBias   = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) );
715         vkCmdSetDepthBiasEnableEXT =
716           PFN_vkCmdSetDepthBiasEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" ) );
717         vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) );
718         vkCmdSetDepthBoundsTestEnableEXT =
719           PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) );
720         vkCmdSetDepthCompareOpEXT =
721           PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) );
722         vkCmdSetDepthTestEnableEXT =
723           PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) );
724         vkCmdSetDepthWriteEnableEXT =
725           PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) );
726         vkCmdSetDeviceMask    = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) );
727         vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) );
728         if ( !vkCmdSetDeviceMask )
729           vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR;
730         vkCmdSetDiscardRectangleEXT =
731           PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) );
732         vkCmdSetEvent     = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) );
733         vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) );
734         vkCmdSetExclusiveScissorNV =
735           PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) );
736         vkCmdSetFragmentShadingRateEnumNV =
737           PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) );
738         vkCmdSetFragmentShadingRateKHR =
739           PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) );
740         vkCmdSetFrontFaceEXT   = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) );
741         vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) );
742         vkCmdSetLineWidth      = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) );
743         vkCmdSetLogicOpEXT     = PFN_vkCmdSetLogicOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" ) );
744         vkCmdSetPatchControlPointsEXT =
745           PFN_vkCmdSetPatchControlPointsEXT( vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" ) );
746         vkCmdSetPerformanceMarkerINTEL =
747           PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) );
748         vkCmdSetPerformanceOverrideINTEL =
749           PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) );
750         vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkCmdSetPerformanceStreamMarkerINTEL(
751           vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) );
752         vkCmdSetPrimitiveRestartEnableEXT =
753           PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" ) );
754         vkCmdSetPrimitiveTopologyEXT =
755           PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) );
756         vkCmdSetRasterizerDiscardEnableEXT =
757           PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" ) );
758         vkCmdSetRayTracingPipelineStackSizeKHR = PFN_vkCmdSetRayTracingPipelineStackSizeKHR(
759           vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) );
760         vkCmdSetSampleLocationsEXT =
761           PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) );
762         vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) );
763         vkCmdSetScissorWithCountEXT =
764           PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) );
765         vkCmdSetStencilCompareMask =
766           PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) );
767         vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) );
768         vkCmdSetStencilReference =
769           PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) );
770         vkCmdSetStencilTestEnableEXT =
771           PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) );
772         vkCmdSetStencilWriteMask =
773           PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) );
774         vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" ) );
775         vkCmdSetViewport       = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) );
776         vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV(
777           vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) );
778         vkCmdSetViewportWScalingNV =
779           PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) );
780         vkCmdSetViewportWithCountEXT =
781           PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) );
782         vkCmdSubpassShadingHUAWEI =
783           PFN_vkCmdSubpassShadingHUAWEI( vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" ) );
784         vkCmdTraceRaysIndirectKHR =
785           PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) );
786         vkCmdTraceRaysKHR   = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) );
787         vkCmdTraceRaysNV    = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) );
788         vkCmdUpdateBuffer   = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) );
789         vkCmdWaitEvents     = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) );
790         vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) );
791         vkCmdWriteAccelerationStructuresPropertiesKHR = PFN_vkCmdWriteAccelerationStructuresPropertiesKHR(
792           vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) );
793         vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV(
794           vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) );
795         vkCmdWriteBufferMarker2AMD =
796           PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) );
797         vkCmdWriteBufferMarkerAMD =
798           PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) );
799         vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) );
800         vkCmdWriteTimestamp2KHR =
801           PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) );
802         vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) );
803         vkCopyAccelerationStructureKHR =
804           PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) );
805         vkCopyAccelerationStructureToMemoryKHR = PFN_vkCopyAccelerationStructureToMemoryKHR(
806           vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) );
807         vkCopyMemoryToAccelerationStructureKHR = PFN_vkCopyMemoryToAccelerationStructureKHR(
808           vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) );
809         vkCreateAccelerationStructureKHR =
810           PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) );
811         vkCreateAccelerationStructureNV =
812           PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) );
813         vkCreateBuffer      = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) );
814         vkCreateBufferView  = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) );
815         vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) );
816         vkCreateComputePipelines =
817           PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) );
818         vkCreateCuFunctionNVX = PFN_vkCreateCuFunctionNVX( vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" ) );
819         vkCreateCuModuleNVX   = PFN_vkCreateCuModuleNVX( vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" ) );
820         vkCreateDeferredOperationKHR =
821           PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) );
822         vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) );
823         vkCreateDescriptorSetLayout =
824           PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) );
825         vkCreateDescriptorUpdateTemplate =
826           PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) );
827         vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR(
828           vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) );
829         if ( !vkCreateDescriptorUpdateTemplate )
830           vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR;
831         vkCreateEvent       = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) );
832         vkCreateFence       = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) );
833         vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) );
834         vkCreateGraphicsPipelines =
835           PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) );
836         vkCreateImage     = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) );
837         vkCreateImageView = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) );
838         vkCreateIndirectCommandsLayoutNV =
839           PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) );
840         vkCreatePipelineCache  = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) );
841         vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) );
842         vkCreatePrivateDataSlotEXT =
843           PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) );
844         vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) );
845         vkCreateRayTracingPipelinesKHR =
846           PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) );
847         vkCreateRayTracingPipelinesNV =
848           PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) );
849         vkCreateRenderPass     = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) );
850         vkCreateRenderPass2    = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) );
851         vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) );
852         if ( !vkCreateRenderPass2 )
853           vkCreateRenderPass2 = vkCreateRenderPass2KHR;
854         vkCreateSampler = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) );
855         vkCreateSamplerYcbcrConversion =
856           PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) );
857         vkCreateSamplerYcbcrConversionKHR =
858           PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) );
859         if ( !vkCreateSamplerYcbcrConversion )
860           vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR;
861         vkCreateSemaphore    = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) );
862         vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) );
863         vkCreateSharedSwapchainsKHR =
864           PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) );
865         vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) );
866         vkCreateValidationCacheEXT =
867           PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) );
868 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
869         vkCreateVideoSessionKHR =
870           PFN_vkCreateVideoSessionKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionKHR" ) );
871 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
872 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
873         vkCreateVideoSessionParametersKHR =
874           PFN_vkCreateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionParametersKHR" ) );
875 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
876         vkDebugMarkerSetObjectNameEXT =
877           PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) );
878         vkDebugMarkerSetObjectTagEXT =
879           PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) );
880         vkDeferredOperationJoinKHR =
881           PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) );
882         vkDestroyAccelerationStructureKHR =
883           PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) );
884         vkDestroyAccelerationStructureNV =
885           PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) );
886         vkDestroyBuffer        = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) );
887         vkDestroyBufferView    = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) );
888         vkDestroyCommandPool   = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) );
889         vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" ) );
890         vkDestroyCuModuleNVX   = PFN_vkDestroyCuModuleNVX( vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" ) );
891         vkDestroyDeferredOperationKHR =
892           PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) );
893         vkDestroyDescriptorPool =
894           PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) );
895         vkDestroyDescriptorSetLayout =
896           PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) );
897         vkDestroyDescriptorUpdateTemplate =
898           PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) );
899         vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR(
900           vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) );
901         if ( !vkDestroyDescriptorUpdateTemplate )
902           vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR;
903         vkDestroyDevice      = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) );
904         vkDestroyEvent       = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) );
905         vkDestroyFence       = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) );
906         vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) );
907         vkDestroyImage       = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) );
908         vkDestroyImageView   = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) );
909         vkDestroyIndirectCommandsLayoutNV =
910           PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) );
911         vkDestroyPipeline      = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) );
912         vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) );
913         vkDestroyPipelineLayout =
914           PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) );
915         vkDestroyPrivateDataSlotEXT =
916           PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) );
917         vkDestroyQueryPool  = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) );
918         vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) );
919         vkDestroySampler    = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) );
920         vkDestroySamplerYcbcrConversion =
921           PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) );
922         vkDestroySamplerYcbcrConversionKHR =
923           PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) );
924         if ( !vkDestroySamplerYcbcrConversion )
925           vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR;
926         vkDestroySemaphore    = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) );
927         vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) );
928         vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) );
929         vkDestroyValidationCacheEXT =
930           PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) );
931 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
932         vkDestroyVideoSessionKHR =
933           PFN_vkDestroyVideoSessionKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionKHR" ) );
934 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
935 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
936         vkDestroyVideoSessionParametersKHR =
937           PFN_vkDestroyVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionParametersKHR" ) );
938 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
939         vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) );
940         vkDisplayPowerControlEXT =
941           PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) );
942         vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) );
943         vkFlushMappedMemoryRanges =
944           PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) );
945         vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) );
946         vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) );
947         vkFreeMemory         = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) );
948         vkGetAccelerationStructureBuildSizesKHR = PFN_vkGetAccelerationStructureBuildSizesKHR(
949           vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) );
950         vkGetAccelerationStructureDeviceAddressKHR = PFN_vkGetAccelerationStructureDeviceAddressKHR(
951           vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) );
952         vkGetAccelerationStructureHandleNV =
953           PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) );
954         vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV(
955           vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) );
956 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
957         vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID(
958           vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) );
959 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
960         vkGetBufferDeviceAddress =
961           PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) );
962         vkGetBufferDeviceAddressEXT =
963           PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) );
964         if ( !vkGetBufferDeviceAddress )
965           vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT;
966         vkGetBufferDeviceAddressKHR =
967           PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) );
968         if ( !vkGetBufferDeviceAddress )
969           vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR;
970         vkGetBufferMemoryRequirements =
971           PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) );
972         vkGetBufferMemoryRequirements2 =
973           PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) );
974         vkGetBufferMemoryRequirements2KHR =
975           PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) );
976         if ( !vkGetBufferMemoryRequirements2 )
977           vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR;
978         vkGetBufferOpaqueCaptureAddress =
979           PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) );
980         vkGetBufferOpaqueCaptureAddressKHR =
981           PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) );
982         if ( !vkGetBufferOpaqueCaptureAddress )
983           vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR;
984         vkGetCalibratedTimestampsEXT =
985           PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) );
986         vkGetDeferredOperationMaxConcurrencyKHR = PFN_vkGetDeferredOperationMaxConcurrencyKHR(
987           vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) );
988         vkGetDeferredOperationResultKHR =
989           PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) );
990         vkGetDescriptorSetLayoutSupport =
991           PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) );
992         vkGetDescriptorSetLayoutSupportKHR =
993           PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) );
994         if ( !vkGetDescriptorSetLayoutSupport )
995           vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR;
996         vkGetDeviceAccelerationStructureCompatibilityKHR = PFN_vkGetDeviceAccelerationStructureCompatibilityKHR(
997           vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) );
998         vkGetDeviceGroupPeerMemoryFeatures =
999           PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) );
1000         vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR(
1001           vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) );
1002         if ( !vkGetDeviceGroupPeerMemoryFeatures )
1003           vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR;
1004         vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR(
1005           vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) );
1006 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1007         vkGetDeviceGroupSurfacePresentModes2EXT = PFN_vkGetDeviceGroupSurfacePresentModes2EXT(
1008           vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) );
1009 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1010         vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR(
1011           vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) );
1012         vkGetDeviceMemoryCommitment =
1013           PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) );
1014         vkGetDeviceMemoryOpaqueCaptureAddress = PFN_vkGetDeviceMemoryOpaqueCaptureAddress(
1015           vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) );
1016         vkGetDeviceMemoryOpaqueCaptureAddressKHR = PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR(
1017           vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) );
1018         if ( !vkGetDeviceMemoryOpaqueCaptureAddress )
1019           vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR;
1020         vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) );
1021         vkGetDeviceQueue    = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) );
1022         vkGetDeviceQueue2   = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) );
1023         vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
1024           vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) );
1025         vkGetEventStatus = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) );
1026         vkGetFenceFdKHR  = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) );
1027         vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) );
1028 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1029         vkGetFenceWin32HandleKHR =
1030           PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) );
1031 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1032         vkGetGeneratedCommandsMemoryRequirementsNV = PFN_vkGetGeneratedCommandsMemoryRequirementsNV(
1033           vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) );
1034         vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT(
1035           vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) );
1036         vkGetImageMemoryRequirements =
1037           PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) );
1038         vkGetImageMemoryRequirements2 =
1039           PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) );
1040         vkGetImageMemoryRequirements2KHR =
1041           PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) );
1042         if ( !vkGetImageMemoryRequirements2 )
1043           vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR;
1044         vkGetImageSparseMemoryRequirements =
1045           PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) );
1046         vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2(
1047           vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) );
1048         vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR(
1049           vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) );
1050         if ( !vkGetImageSparseMemoryRequirements2 )
1051           vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR;
1052         vkGetImageSubresourceLayout =
1053           PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) );
1054         vkGetImageViewAddressNVX =
1055           PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) );
1056         vkGetImageViewHandleNVX =
1057           PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) );
1058 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
1059         vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID(
1060           vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) );
1061 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1062         vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) );
1063         vkGetMemoryFdPropertiesKHR =
1064           PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) );
1065         vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT(
1066           vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) );
1067         vkGetMemoryRemoteAddressNV =
1068           PFN_vkGetMemoryRemoteAddressNV( vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" ) );
1069 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1070         vkGetMemoryWin32HandleKHR =
1071           PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) );
1072 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1073 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1074         vkGetMemoryWin32HandleNV =
1075           PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) );
1076 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1077 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1078         vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR(
1079           vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) );
1080 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1081 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1082         vkGetMemoryZirconHandleFUCHSIA =
1083           PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandleFUCHSIA" ) );
1084 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1085 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1086         vkGetMemoryZirconHandlePropertiesFUCHSIA = PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA(
1087           vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) );
1088 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1089         vkGetPastPresentationTimingGOOGLE =
1090           PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) );
1091         vkGetPerformanceParameterINTEL =
1092           PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) );
1093         vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) );
1094         vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR(
1095           vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) );
1096         vkGetPipelineExecutablePropertiesKHR = PFN_vkGetPipelineExecutablePropertiesKHR(
1097           vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) );
1098         vkGetPipelineExecutableStatisticsKHR = PFN_vkGetPipelineExecutableStatisticsKHR(
1099           vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) );
1100         vkGetPrivateDataEXT   = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) );
1101         vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) );
1102         vkGetQueueCheckpointData2NV =
1103           PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) );
1104         vkGetQueueCheckpointDataNV =
1105           PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) );
1106         vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
1107           vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) );
1108         vkGetRayTracingShaderGroupHandlesKHR = PFN_vkGetRayTracingShaderGroupHandlesKHR(
1109           vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) );
1110         vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV(
1111           vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) );
1112         if ( !vkGetRayTracingShaderGroupHandlesKHR )
1113           vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV;
1114         vkGetRayTracingShaderGroupStackSizeKHR = PFN_vkGetRayTracingShaderGroupStackSizeKHR(
1115           vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) );
1116         vkGetRefreshCycleDurationGOOGLE =
1117           PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) );
1118         vkGetRenderAreaGranularity =
1119           PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) );
1120         vkGetSemaphoreCounterValue =
1121           PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) );
1122         vkGetSemaphoreCounterValueKHR =
1123           PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) );
1124         if ( !vkGetSemaphoreCounterValue )
1125           vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR;
1126         vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) );
1127 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1128         vkGetSemaphoreWin32HandleKHR =
1129           PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) );
1130 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1131 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1132         vkGetSemaphoreZirconHandleFUCHSIA =
1133           PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetSemaphoreZirconHandleFUCHSIA" ) );
1134 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1135         vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) );
1136         vkGetSwapchainCounterEXT =
1137           PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) );
1138         vkGetSwapchainImagesKHR =
1139           PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) );
1140         vkGetSwapchainStatusKHR =
1141           PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) );
1142         vkGetValidationCacheDataEXT =
1143           PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) );
1144 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1145         vkGetVideoSessionMemoryRequirementsKHR = PFN_vkGetVideoSessionMemoryRequirementsKHR(
1146           vkGetDeviceProcAddr( device, "vkGetVideoSessionMemoryRequirementsKHR" ) );
1147 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1148         vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) );
1149 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1150         vkImportFenceWin32HandleKHR =
1151           PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) );
1152 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1153         vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) );
1154 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1155         vkImportSemaphoreWin32HandleKHR =
1156           PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) );
1157 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1158 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1159         vkImportSemaphoreZirconHandleFUCHSIA = PFN_vkImportSemaphoreZirconHandleFUCHSIA(
1160           vkGetDeviceProcAddr( device, "vkImportSemaphoreZirconHandleFUCHSIA" ) );
1161 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1162         vkInitializePerformanceApiINTEL =
1163           PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) );
1164         vkInvalidateMappedMemoryRanges =
1165           PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) );
1166         vkMapMemory           = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) );
1167         vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) );
1168         vkMergeValidationCachesEXT =
1169           PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) );
1170         vkQueueBeginDebugUtilsLabelEXT =
1171           PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) );
1172         vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) );
1173         vkQueueEndDebugUtilsLabelEXT =
1174           PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) );
1175         vkQueueInsertDebugUtilsLabelEXT =
1176           PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) );
1177         vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) );
1178         vkQueueSetPerformanceConfigurationINTEL = PFN_vkQueueSetPerformanceConfigurationINTEL(
1179           vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) );
1180         vkQueueSubmit     = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) );
1181         vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) );
1182         vkQueueWaitIdle   = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) );
1183         vkRegisterDeviceEventEXT =
1184           PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) );
1185         vkRegisterDisplayEventEXT =
1186           PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) );
1187 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1188         vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT(
1189           vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) );
1190 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1191         vkReleasePerformanceConfigurationINTEL = PFN_vkReleasePerformanceConfigurationINTEL(
1192           vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) );
1193         vkReleaseProfilingLockKHR =
1194           PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) );
1195         vkResetCommandBuffer  = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) );
1196         vkResetCommandPool    = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) );
1197         vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) );
1198         vkResetEvent          = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) );
1199         vkResetFences         = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) );
1200         vkResetQueryPool      = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) );
1201         vkResetQueryPoolEXT   = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) );
1202         if ( !vkResetQueryPool )
1203           vkResetQueryPool = vkResetQueryPoolEXT;
1204         vkSetDebugUtilsObjectNameEXT =
1205           PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) );
1206         vkSetDebugUtilsObjectTagEXT =
1207           PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) );
1208         vkSetEvent           = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) );
1209         vkSetHdrMetadataEXT  = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) );
1210         vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) );
1211         vkSetPrivateDataEXT  = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) );
1212         vkSignalSemaphore    = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) );
1213         vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) );
1214         if ( !vkSignalSemaphore )
1215           vkSignalSemaphore = vkSignalSemaphoreKHR;
1216         vkTrimCommandPool    = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) );
1217         vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) );
1218         if ( !vkTrimCommandPool )
1219           vkTrimCommandPool = vkTrimCommandPoolKHR;
1220         vkUninitializePerformanceApiINTEL =
1221           PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) );
1222         vkUnmapMemory = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) );
1223         vkUpdateDescriptorSetWithTemplate =
1224           PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) );
1225         vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR(
1226           vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) );
1227         if ( !vkUpdateDescriptorSetWithTemplate )
1228           vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR;
1229         vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) );
1230 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1231         vkUpdateVideoSessionParametersKHR =
1232           PFN_vkUpdateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkUpdateVideoSessionParametersKHR" ) );
1233 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1234         vkWaitForFences     = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) );
1235         vkWaitSemaphores    = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) );
1236         vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) );
1237         if ( !vkWaitSemaphores )
1238           vkWaitSemaphores = vkWaitSemaphoresKHR;
1239         vkWriteAccelerationStructuresPropertiesKHR = PFN_vkWriteAccelerationStructuresPropertiesKHR(
1240           vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) );
1241       }
1242 
1243     public:
1244 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1245       PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT = 0;
1246 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1247       PFN_vkAcquireNextImage2KHR                 vkAcquireNextImage2KHR                 = 0;
1248       PFN_vkAcquireNextImageKHR                  vkAcquireNextImageKHR                  = 0;
1249       PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL = 0;
1250       PFN_vkAcquireProfilingLockKHR              vkAcquireProfilingLockKHR              = 0;
1251       PFN_vkAllocateCommandBuffers               vkAllocateCommandBuffers               = 0;
1252       PFN_vkAllocateDescriptorSets               vkAllocateDescriptorSets               = 0;
1253       PFN_vkAllocateMemory                       vkAllocateMemory                       = 0;
1254       PFN_vkBeginCommandBuffer                   vkBeginCommandBuffer                   = 0;
1255       PFN_vkBindAccelerationStructureMemoryNV    vkBindAccelerationStructureMemoryNV    = 0;
1256       PFN_vkBindBufferMemory                     vkBindBufferMemory                     = 0;
1257       PFN_vkBindBufferMemory2                    vkBindBufferMemory2                    = 0;
1258       PFN_vkBindBufferMemory2KHR                 vkBindBufferMemory2KHR                 = 0;
1259       PFN_vkBindImageMemory                      vkBindImageMemory                      = 0;
1260       PFN_vkBindImageMemory2                     vkBindImageMemory2                     = 0;
1261       PFN_vkBindImageMemory2KHR                  vkBindImageMemory2KHR                  = 0;
1262 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1263       PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR = 0;
1264 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1265       PFN_vkBuildAccelerationStructuresKHR  vkBuildAccelerationStructuresKHR  = 0;
1266       PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0;
1267       PFN_vkCmdBeginDebugUtilsLabelEXT      vkCmdBeginDebugUtilsLabelEXT      = 0;
1268       PFN_vkCmdBeginQuery                   vkCmdBeginQuery                   = 0;
1269       PFN_vkCmdBeginQueryIndexedEXT         vkCmdBeginQueryIndexedEXT         = 0;
1270       PFN_vkCmdBeginRenderPass              vkCmdBeginRenderPass              = 0;
1271       PFN_vkCmdBeginRenderPass2             vkCmdBeginRenderPass2             = 0;
1272       PFN_vkCmdBeginRenderPass2KHR          vkCmdBeginRenderPass2KHR          = 0;
1273       PFN_vkCmdBeginTransformFeedbackEXT    vkCmdBeginTransformFeedbackEXT    = 0;
1274 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1275       PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR = 0;
1276 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1277       PFN_vkCmdBindDescriptorSets                     vkCmdBindDescriptorSets                     = 0;
1278       PFN_vkCmdBindIndexBuffer                        vkCmdBindIndexBuffer                        = 0;
1279       PFN_vkCmdBindPipeline                           vkCmdBindPipeline                           = 0;
1280       PFN_vkCmdBindPipelineShaderGroupNV              vkCmdBindPipelineShaderGroupNV              = 0;
1281       PFN_vkCmdBindShadingRateImageNV                 vkCmdBindShadingRateImageNV                 = 0;
1282       PFN_vkCmdBindTransformFeedbackBuffersEXT        vkCmdBindTransformFeedbackBuffersEXT        = 0;
1283       PFN_vkCmdBindVertexBuffers                      vkCmdBindVertexBuffers                      = 0;
1284       PFN_vkCmdBindVertexBuffers2EXT                  vkCmdBindVertexBuffers2EXT                  = 0;
1285       PFN_vkCmdBlitImage                              vkCmdBlitImage                              = 0;
1286       PFN_vkCmdBlitImage2KHR                          vkCmdBlitImage2KHR                          = 0;
1287       PFN_vkCmdBuildAccelerationStructureNV           vkCmdBuildAccelerationStructureNV           = 0;
1288       PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR = 0;
1289       PFN_vkCmdBuildAccelerationStructuresKHR         vkCmdBuildAccelerationStructuresKHR         = 0;
1290       PFN_vkCmdClearAttachments                       vkCmdClearAttachments                       = 0;
1291       PFN_vkCmdClearColorImage                        vkCmdClearColorImage                        = 0;
1292       PFN_vkCmdClearDepthStencilImage                 vkCmdClearDepthStencilImage                 = 0;
1293 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1294       PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR = 0;
1295 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1296       PFN_vkCmdCopyAccelerationStructureKHR         vkCmdCopyAccelerationStructureKHR         = 0;
1297       PFN_vkCmdCopyAccelerationStructureNV          vkCmdCopyAccelerationStructureNV          = 0;
1298       PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR = 0;
1299       PFN_vkCmdCopyBuffer                           vkCmdCopyBuffer                           = 0;
1300       PFN_vkCmdCopyBuffer2KHR                       vkCmdCopyBuffer2KHR                       = 0;
1301       PFN_vkCmdCopyBufferToImage                    vkCmdCopyBufferToImage                    = 0;
1302       PFN_vkCmdCopyBufferToImage2KHR                vkCmdCopyBufferToImage2KHR                = 0;
1303       PFN_vkCmdCopyImage                            vkCmdCopyImage                            = 0;
1304       PFN_vkCmdCopyImage2KHR                        vkCmdCopyImage2KHR                        = 0;
1305       PFN_vkCmdCopyImageToBuffer                    vkCmdCopyImageToBuffer                    = 0;
1306       PFN_vkCmdCopyImageToBuffer2KHR                vkCmdCopyImageToBuffer2KHR                = 0;
1307       PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR = 0;
1308       PFN_vkCmdCopyQueryPoolResults                 vkCmdCopyQueryPoolResults                 = 0;
1309       PFN_vkCmdCuLaunchKernelNVX                    vkCmdCuLaunchKernelNVX                    = 0;
1310       PFN_vkCmdDebugMarkerBeginEXT                  vkCmdDebugMarkerBeginEXT                  = 0;
1311       PFN_vkCmdDebugMarkerEndEXT                    vkCmdDebugMarkerEndEXT                    = 0;
1312       PFN_vkCmdDebugMarkerInsertEXT                 vkCmdDebugMarkerInsertEXT                 = 0;
1313 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1314       PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR = 0;
1315 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1316       PFN_vkCmdDispatch                     vkCmdDispatch                     = 0;
1317       PFN_vkCmdDispatchBase                 vkCmdDispatchBase                 = 0;
1318       PFN_vkCmdDispatchBaseKHR              vkCmdDispatchBaseKHR              = 0;
1319       PFN_vkCmdDispatchIndirect             vkCmdDispatchIndirect             = 0;
1320       PFN_vkCmdDraw                         vkCmdDraw                         = 0;
1321       PFN_vkCmdDrawIndexed                  vkCmdDrawIndexed                  = 0;
1322       PFN_vkCmdDrawIndexedIndirect          vkCmdDrawIndexedIndirect          = 0;
1323       PFN_vkCmdDrawIndexedIndirectCount     vkCmdDrawIndexedIndirectCount     = 0;
1324       PFN_vkCmdDrawIndexedIndirectCountAMD  vkCmdDrawIndexedIndirectCountAMD  = 0;
1325       PFN_vkCmdDrawIndexedIndirectCountKHR  vkCmdDrawIndexedIndirectCountKHR  = 0;
1326       PFN_vkCmdDrawIndirect                 vkCmdDrawIndirect                 = 0;
1327       PFN_vkCmdDrawIndirectByteCountEXT     vkCmdDrawIndirectByteCountEXT     = 0;
1328       PFN_vkCmdDrawIndirectCount            vkCmdDrawIndirectCount            = 0;
1329       PFN_vkCmdDrawIndirectCountAMD         vkCmdDrawIndirectCountAMD         = 0;
1330       PFN_vkCmdDrawIndirectCountKHR         vkCmdDrawIndirectCountKHR         = 0;
1331       PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0;
1332       PFN_vkCmdDrawMeshTasksIndirectNV      vkCmdDrawMeshTasksIndirectNV      = 0;
1333       PFN_vkCmdDrawMeshTasksNV              vkCmdDrawMeshTasksNV              = 0;
1334       PFN_vkCmdDrawMultiEXT                 vkCmdDrawMultiEXT                 = 0;
1335       PFN_vkCmdDrawMultiIndexedEXT          vkCmdDrawMultiIndexedEXT          = 0;
1336 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1337       PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR = 0;
1338 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1339       PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0;
1340       PFN_vkCmdEndDebugUtilsLabelEXT      vkCmdEndDebugUtilsLabelEXT      = 0;
1341       PFN_vkCmdEndQuery                   vkCmdEndQuery                   = 0;
1342       PFN_vkCmdEndQueryIndexedEXT         vkCmdEndQueryIndexedEXT         = 0;
1343       PFN_vkCmdEndRenderPass              vkCmdEndRenderPass              = 0;
1344       PFN_vkCmdEndRenderPass2             vkCmdEndRenderPass2             = 0;
1345       PFN_vkCmdEndRenderPass2KHR          vkCmdEndRenderPass2KHR          = 0;
1346       PFN_vkCmdEndTransformFeedbackEXT    vkCmdEndTransformFeedbackEXT    = 0;
1347 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1348       PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR = 0;
1349 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1350       PFN_vkCmdExecuteCommands                          vkCmdExecuteCommands                          = 0;
1351       PFN_vkCmdExecuteGeneratedCommandsNV               vkCmdExecuteGeneratedCommandsNV               = 0;
1352       PFN_vkCmdFillBuffer                               vkCmdFillBuffer                               = 0;
1353       PFN_vkCmdInsertDebugUtilsLabelEXT                 vkCmdInsertDebugUtilsLabelEXT                 = 0;
1354       PFN_vkCmdNextSubpass                              vkCmdNextSubpass                              = 0;
1355       PFN_vkCmdNextSubpass2                             vkCmdNextSubpass2                             = 0;
1356       PFN_vkCmdNextSubpass2KHR                          vkCmdNextSubpass2KHR                          = 0;
1357       PFN_vkCmdPipelineBarrier                          vkCmdPipelineBarrier                          = 0;
1358       PFN_vkCmdPipelineBarrier2KHR                      vkCmdPipelineBarrier2KHR                      = 0;
1359       PFN_vkCmdPreprocessGeneratedCommandsNV            vkCmdPreprocessGeneratedCommandsNV            = 0;
1360       PFN_vkCmdPushConstants                            vkCmdPushConstants                            = 0;
1361       PFN_vkCmdPushDescriptorSetKHR                     vkCmdPushDescriptorSetKHR                     = 0;
1362       PFN_vkCmdPushDescriptorSetWithTemplateKHR         vkCmdPushDescriptorSetWithTemplateKHR         = 0;
1363       PFN_vkCmdResetEvent                               vkCmdResetEvent                               = 0;
1364       PFN_vkCmdResetEvent2KHR                           vkCmdResetEvent2KHR                           = 0;
1365       PFN_vkCmdResetQueryPool                           vkCmdResetQueryPool                           = 0;
1366       PFN_vkCmdResolveImage                             vkCmdResolveImage                             = 0;
1367       PFN_vkCmdResolveImage2KHR                         vkCmdResolveImage2KHR                         = 0;
1368       PFN_vkCmdSetBlendConstants                        vkCmdSetBlendConstants                        = 0;
1369       PFN_vkCmdSetCheckpointNV                          vkCmdSetCheckpointNV                          = 0;
1370       PFN_vkCmdSetCoarseSampleOrderNV                   vkCmdSetCoarseSampleOrderNV                   = 0;
1371       PFN_vkCmdSetColorWriteEnableEXT                   vkCmdSetColorWriteEnableEXT                   = 0;
1372       PFN_vkCmdSetCullModeEXT                           vkCmdSetCullModeEXT                           = 0;
1373       PFN_vkCmdSetDepthBias                             vkCmdSetDepthBias                             = 0;
1374       PFN_vkCmdSetDepthBiasEnableEXT                    vkCmdSetDepthBiasEnableEXT                    = 0;
1375       PFN_vkCmdSetDepthBounds                           vkCmdSetDepthBounds                           = 0;
1376       PFN_vkCmdSetDepthBoundsTestEnableEXT              vkCmdSetDepthBoundsTestEnableEXT              = 0;
1377       PFN_vkCmdSetDepthCompareOpEXT                     vkCmdSetDepthCompareOpEXT                     = 0;
1378       PFN_vkCmdSetDepthTestEnableEXT                    vkCmdSetDepthTestEnableEXT                    = 0;
1379       PFN_vkCmdSetDepthWriteEnableEXT                   vkCmdSetDepthWriteEnableEXT                   = 0;
1380       PFN_vkCmdSetDeviceMask                            vkCmdSetDeviceMask                            = 0;
1381       PFN_vkCmdSetDeviceMaskKHR                         vkCmdSetDeviceMaskKHR                         = 0;
1382       PFN_vkCmdSetDiscardRectangleEXT                   vkCmdSetDiscardRectangleEXT                   = 0;
1383       PFN_vkCmdSetEvent                                 vkCmdSetEvent                                 = 0;
1384       PFN_vkCmdSetEvent2KHR                             vkCmdSetEvent2KHR                             = 0;
1385       PFN_vkCmdSetExclusiveScissorNV                    vkCmdSetExclusiveScissorNV                    = 0;
1386       PFN_vkCmdSetFragmentShadingRateEnumNV             vkCmdSetFragmentShadingRateEnumNV             = 0;
1387       PFN_vkCmdSetFragmentShadingRateKHR                vkCmdSetFragmentShadingRateKHR                = 0;
1388       PFN_vkCmdSetFrontFaceEXT                          vkCmdSetFrontFaceEXT                          = 0;
1389       PFN_vkCmdSetLineStippleEXT                        vkCmdSetLineStippleEXT                        = 0;
1390       PFN_vkCmdSetLineWidth                             vkCmdSetLineWidth                             = 0;
1391       PFN_vkCmdSetLogicOpEXT                            vkCmdSetLogicOpEXT                            = 0;
1392       PFN_vkCmdSetPatchControlPointsEXT                 vkCmdSetPatchControlPointsEXT                 = 0;
1393       PFN_vkCmdSetPerformanceMarkerINTEL                vkCmdSetPerformanceMarkerINTEL                = 0;
1394       PFN_vkCmdSetPerformanceOverrideINTEL              vkCmdSetPerformanceOverrideINTEL              = 0;
1395       PFN_vkCmdSetPerformanceStreamMarkerINTEL          vkCmdSetPerformanceStreamMarkerINTEL          = 0;
1396       PFN_vkCmdSetPrimitiveRestartEnableEXT             vkCmdSetPrimitiveRestartEnableEXT             = 0;
1397       PFN_vkCmdSetPrimitiveTopologyEXT                  vkCmdSetPrimitiveTopologyEXT                  = 0;
1398       PFN_vkCmdSetRasterizerDiscardEnableEXT            vkCmdSetRasterizerDiscardEnableEXT            = 0;
1399       PFN_vkCmdSetRayTracingPipelineStackSizeKHR        vkCmdSetRayTracingPipelineStackSizeKHR        = 0;
1400       PFN_vkCmdSetSampleLocationsEXT                    vkCmdSetSampleLocationsEXT                    = 0;
1401       PFN_vkCmdSetScissor                               vkCmdSetScissor                               = 0;
1402       PFN_vkCmdSetScissorWithCountEXT                   vkCmdSetScissorWithCountEXT                   = 0;
1403       PFN_vkCmdSetStencilCompareMask                    vkCmdSetStencilCompareMask                    = 0;
1404       PFN_vkCmdSetStencilOpEXT                          vkCmdSetStencilOpEXT                          = 0;
1405       PFN_vkCmdSetStencilReference                      vkCmdSetStencilReference                      = 0;
1406       PFN_vkCmdSetStencilTestEnableEXT                  vkCmdSetStencilTestEnableEXT                  = 0;
1407       PFN_vkCmdSetStencilWriteMask                      vkCmdSetStencilWriteMask                      = 0;
1408       PFN_vkCmdSetVertexInputEXT                        vkCmdSetVertexInputEXT                        = 0;
1409       PFN_vkCmdSetViewport                              vkCmdSetViewport                              = 0;
1410       PFN_vkCmdSetViewportShadingRatePaletteNV          vkCmdSetViewportShadingRatePaletteNV          = 0;
1411       PFN_vkCmdSetViewportWScalingNV                    vkCmdSetViewportWScalingNV                    = 0;
1412       PFN_vkCmdSetViewportWithCountEXT                  vkCmdSetViewportWithCountEXT                  = 0;
1413       PFN_vkCmdSubpassShadingHUAWEI                     vkCmdSubpassShadingHUAWEI                     = 0;
1414       PFN_vkCmdTraceRaysIndirectKHR                     vkCmdTraceRaysIndirectKHR                     = 0;
1415       PFN_vkCmdTraceRaysKHR                             vkCmdTraceRaysKHR                             = 0;
1416       PFN_vkCmdTraceRaysNV                              vkCmdTraceRaysNV                              = 0;
1417       PFN_vkCmdUpdateBuffer                             vkCmdUpdateBuffer                             = 0;
1418       PFN_vkCmdWaitEvents                               vkCmdWaitEvents                               = 0;
1419       PFN_vkCmdWaitEvents2KHR                           vkCmdWaitEvents2KHR                           = 0;
1420       PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR = 0;
1421       PFN_vkCmdWriteAccelerationStructuresPropertiesNV  vkCmdWriteAccelerationStructuresPropertiesNV  = 0;
1422       PFN_vkCmdWriteBufferMarker2AMD                    vkCmdWriteBufferMarker2AMD                    = 0;
1423       PFN_vkCmdWriteBufferMarkerAMD                     vkCmdWriteBufferMarkerAMD                     = 0;
1424       PFN_vkCmdWriteTimestamp                           vkCmdWriteTimestamp                           = 0;
1425       PFN_vkCmdWriteTimestamp2KHR                       vkCmdWriteTimestamp2KHR                       = 0;
1426       PFN_vkCompileDeferredNV                           vkCompileDeferredNV                           = 0;
1427       PFN_vkCopyAccelerationStructureKHR                vkCopyAccelerationStructureKHR                = 0;
1428       PFN_vkCopyAccelerationStructureToMemoryKHR        vkCopyAccelerationStructureToMemoryKHR        = 0;
1429       PFN_vkCopyMemoryToAccelerationStructureKHR        vkCopyMemoryToAccelerationStructureKHR        = 0;
1430       PFN_vkCreateAccelerationStructureKHR              vkCreateAccelerationStructureKHR              = 0;
1431       PFN_vkCreateAccelerationStructureNV               vkCreateAccelerationStructureNV               = 0;
1432       PFN_vkCreateBuffer                                vkCreateBuffer                                = 0;
1433       PFN_vkCreateBufferView                            vkCreateBufferView                            = 0;
1434       PFN_vkCreateCommandPool                           vkCreateCommandPool                           = 0;
1435       PFN_vkCreateComputePipelines                      vkCreateComputePipelines                      = 0;
1436       PFN_vkCreateCuFunctionNVX                         vkCreateCuFunctionNVX                         = 0;
1437       PFN_vkCreateCuModuleNVX                           vkCreateCuModuleNVX                           = 0;
1438       PFN_vkCreateDeferredOperationKHR                  vkCreateDeferredOperationKHR                  = 0;
1439       PFN_vkCreateDescriptorPool                        vkCreateDescriptorPool                        = 0;
1440       PFN_vkCreateDescriptorSetLayout                   vkCreateDescriptorSetLayout                   = 0;
1441       PFN_vkCreateDescriptorUpdateTemplate              vkCreateDescriptorUpdateTemplate              = 0;
1442       PFN_vkCreateDescriptorUpdateTemplateKHR           vkCreateDescriptorUpdateTemplateKHR           = 0;
1443       PFN_vkCreateEvent                                 vkCreateEvent                                 = 0;
1444       PFN_vkCreateFence                                 vkCreateFence                                 = 0;
1445       PFN_vkCreateFramebuffer                           vkCreateFramebuffer                           = 0;
1446       PFN_vkCreateGraphicsPipelines                     vkCreateGraphicsPipelines                     = 0;
1447       PFN_vkCreateImage                                 vkCreateImage                                 = 0;
1448       PFN_vkCreateImageView                             vkCreateImageView                             = 0;
1449       PFN_vkCreateIndirectCommandsLayoutNV              vkCreateIndirectCommandsLayoutNV              = 0;
1450       PFN_vkCreatePipelineCache                         vkCreatePipelineCache                         = 0;
1451       PFN_vkCreatePipelineLayout                        vkCreatePipelineLayout                        = 0;
1452       PFN_vkCreatePrivateDataSlotEXT                    vkCreatePrivateDataSlotEXT                    = 0;
1453       PFN_vkCreateQueryPool                             vkCreateQueryPool                             = 0;
1454       PFN_vkCreateRayTracingPipelinesKHR                vkCreateRayTracingPipelinesKHR                = 0;
1455       PFN_vkCreateRayTracingPipelinesNV                 vkCreateRayTracingPipelinesNV                 = 0;
1456       PFN_vkCreateRenderPass                            vkCreateRenderPass                            = 0;
1457       PFN_vkCreateRenderPass2                           vkCreateRenderPass2                           = 0;
1458       PFN_vkCreateRenderPass2KHR                        vkCreateRenderPass2KHR                        = 0;
1459       PFN_vkCreateSampler                               vkCreateSampler                               = 0;
1460       PFN_vkCreateSamplerYcbcrConversion                vkCreateSamplerYcbcrConversion                = 0;
1461       PFN_vkCreateSamplerYcbcrConversionKHR             vkCreateSamplerYcbcrConversionKHR             = 0;
1462       PFN_vkCreateSemaphore                             vkCreateSemaphore                             = 0;
1463       PFN_vkCreateShaderModule                          vkCreateShaderModule                          = 0;
1464       PFN_vkCreateSharedSwapchainsKHR                   vkCreateSharedSwapchainsKHR                   = 0;
1465       PFN_vkCreateSwapchainKHR                          vkCreateSwapchainKHR                          = 0;
1466       PFN_vkCreateValidationCacheEXT                    vkCreateValidationCacheEXT                    = 0;
1467 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1468       PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR = 0;
1469 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1470 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1471       PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR = 0;
1472 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1473       PFN_vkDebugMarkerSetObjectNameEXT        vkDebugMarkerSetObjectNameEXT        = 0;
1474       PFN_vkDebugMarkerSetObjectTagEXT         vkDebugMarkerSetObjectTagEXT         = 0;
1475       PFN_vkDeferredOperationJoinKHR           vkDeferredOperationJoinKHR           = 0;
1476       PFN_vkDestroyAccelerationStructureKHR    vkDestroyAccelerationStructureKHR    = 0;
1477       PFN_vkDestroyAccelerationStructureNV     vkDestroyAccelerationStructureNV     = 0;
1478       PFN_vkDestroyBuffer                      vkDestroyBuffer                      = 0;
1479       PFN_vkDestroyBufferView                  vkDestroyBufferView                  = 0;
1480       PFN_vkDestroyCommandPool                 vkDestroyCommandPool                 = 0;
1481       PFN_vkDestroyCuFunctionNVX               vkDestroyCuFunctionNVX               = 0;
1482       PFN_vkDestroyCuModuleNVX                 vkDestroyCuModuleNVX                 = 0;
1483       PFN_vkDestroyDeferredOperationKHR        vkDestroyDeferredOperationKHR        = 0;
1484       PFN_vkDestroyDescriptorPool              vkDestroyDescriptorPool              = 0;
1485       PFN_vkDestroyDescriptorSetLayout         vkDestroyDescriptorSetLayout         = 0;
1486       PFN_vkDestroyDescriptorUpdateTemplate    vkDestroyDescriptorUpdateTemplate    = 0;
1487       PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0;
1488       PFN_vkDestroyDevice                      vkDestroyDevice                      = 0;
1489       PFN_vkDestroyEvent                       vkDestroyEvent                       = 0;
1490       PFN_vkDestroyFence                       vkDestroyFence                       = 0;
1491       PFN_vkDestroyFramebuffer                 vkDestroyFramebuffer                 = 0;
1492       PFN_vkDestroyImage                       vkDestroyImage                       = 0;
1493       PFN_vkDestroyImageView                   vkDestroyImageView                   = 0;
1494       PFN_vkDestroyIndirectCommandsLayoutNV    vkDestroyIndirectCommandsLayoutNV    = 0;
1495       PFN_vkDestroyPipeline                    vkDestroyPipeline                    = 0;
1496       PFN_vkDestroyPipelineCache               vkDestroyPipelineCache               = 0;
1497       PFN_vkDestroyPipelineLayout              vkDestroyPipelineLayout              = 0;
1498       PFN_vkDestroyPrivateDataSlotEXT          vkDestroyPrivateDataSlotEXT          = 0;
1499       PFN_vkDestroyQueryPool                   vkDestroyQueryPool                   = 0;
1500       PFN_vkDestroyRenderPass                  vkDestroyRenderPass                  = 0;
1501       PFN_vkDestroySampler                     vkDestroySampler                     = 0;
1502       PFN_vkDestroySamplerYcbcrConversion      vkDestroySamplerYcbcrConversion      = 0;
1503       PFN_vkDestroySamplerYcbcrConversionKHR   vkDestroySamplerYcbcrConversionKHR   = 0;
1504       PFN_vkDestroySemaphore                   vkDestroySemaphore                   = 0;
1505       PFN_vkDestroyShaderModule                vkDestroyShaderModule                = 0;
1506       PFN_vkDestroySwapchainKHR                vkDestroySwapchainKHR                = 0;
1507       PFN_vkDestroyValidationCacheEXT          vkDestroyValidationCacheEXT          = 0;
1508 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1509       PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR = 0;
1510 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1511 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1512       PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR = 0;
1513 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1514       PFN_vkDeviceWaitIdle                               vkDeviceWaitIdle                               = 0;
1515       PFN_vkDisplayPowerControlEXT                       vkDisplayPowerControlEXT                       = 0;
1516       PFN_vkEndCommandBuffer                             vkEndCommandBuffer                             = 0;
1517       PFN_vkFlushMappedMemoryRanges                      vkFlushMappedMemoryRanges                      = 0;
1518       PFN_vkFreeCommandBuffers                           vkFreeCommandBuffers                           = 0;
1519       PFN_vkFreeDescriptorSets                           vkFreeDescriptorSets                           = 0;
1520       PFN_vkFreeMemory                                   vkFreeMemory                                   = 0;
1521       PFN_vkGetAccelerationStructureBuildSizesKHR        vkGetAccelerationStructureBuildSizesKHR        = 0;
1522       PFN_vkGetAccelerationStructureDeviceAddressKHR     vkGetAccelerationStructureDeviceAddressKHR     = 0;
1523       PFN_vkGetAccelerationStructureHandleNV             vkGetAccelerationStructureHandleNV             = 0;
1524       PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0;
1525 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
1526       PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0;
1527 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1528       PFN_vkGetBufferDeviceAddress                         vkGetBufferDeviceAddress                         = 0;
1529       PFN_vkGetBufferDeviceAddressEXT                      vkGetBufferDeviceAddressEXT                      = 0;
1530       PFN_vkGetBufferDeviceAddressKHR                      vkGetBufferDeviceAddressKHR                      = 0;
1531       PFN_vkGetBufferMemoryRequirements                    vkGetBufferMemoryRequirements                    = 0;
1532       PFN_vkGetBufferMemoryRequirements2                   vkGetBufferMemoryRequirements2                   = 0;
1533       PFN_vkGetBufferMemoryRequirements2KHR                vkGetBufferMemoryRequirements2KHR                = 0;
1534       PFN_vkGetBufferOpaqueCaptureAddress                  vkGetBufferOpaqueCaptureAddress                  = 0;
1535       PFN_vkGetBufferOpaqueCaptureAddressKHR               vkGetBufferOpaqueCaptureAddressKHR               = 0;
1536       PFN_vkGetCalibratedTimestampsEXT                     vkGetCalibratedTimestampsEXT                     = 0;
1537       PFN_vkGetDeferredOperationMaxConcurrencyKHR          vkGetDeferredOperationMaxConcurrencyKHR          = 0;
1538       PFN_vkGetDeferredOperationResultKHR                  vkGetDeferredOperationResultKHR                  = 0;
1539       PFN_vkGetDescriptorSetLayoutSupport                  vkGetDescriptorSetLayoutSupport                  = 0;
1540       PFN_vkGetDescriptorSetLayoutSupportKHR               vkGetDescriptorSetLayoutSupportKHR               = 0;
1541       PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0;
1542       PFN_vkGetDeviceGroupPeerMemoryFeatures               vkGetDeviceGroupPeerMemoryFeatures               = 0;
1543       PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR            vkGetDeviceGroupPeerMemoryFeaturesKHR            = 0;
1544       PFN_vkGetDeviceGroupPresentCapabilitiesKHR           vkGetDeviceGroupPresentCapabilitiesKHR           = 0;
1545 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1546       PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0;
1547 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1548       PFN_vkGetDeviceGroupSurfacePresentModesKHR          vkGetDeviceGroupSurfacePresentModesKHR          = 0;
1549       PFN_vkGetDeviceMemoryCommitment                     vkGetDeviceMemoryCommitment                     = 0;
1550       PFN_vkGetDeviceMemoryOpaqueCaptureAddress           vkGetDeviceMemoryOpaqueCaptureAddress           = 0;
1551       PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR        vkGetDeviceMemoryOpaqueCaptureAddressKHR        = 0;
1552       PFN_vkGetDeviceProcAddr                             vkGetDeviceProcAddr                             = 0;
1553       PFN_vkGetDeviceQueue                                vkGetDeviceQueue                                = 0;
1554       PFN_vkGetDeviceQueue2                               vkGetDeviceQueue2                               = 0;
1555       PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 0;
1556       PFN_vkGetEventStatus                                vkGetEventStatus                                = 0;
1557       PFN_vkGetFenceFdKHR                                 vkGetFenceFdKHR                                 = 0;
1558       PFN_vkGetFenceStatus                                vkGetFenceStatus                                = 0;
1559 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1560       PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0;
1561 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1562       PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0;
1563       PFN_vkGetImageDrmFormatModifierPropertiesEXT   vkGetImageDrmFormatModifierPropertiesEXT   = 0;
1564       PFN_vkGetImageMemoryRequirements               vkGetImageMemoryRequirements               = 0;
1565       PFN_vkGetImageMemoryRequirements2              vkGetImageMemoryRequirements2              = 0;
1566       PFN_vkGetImageMemoryRequirements2KHR           vkGetImageMemoryRequirements2KHR           = 0;
1567       PFN_vkGetImageSparseMemoryRequirements         vkGetImageSparseMemoryRequirements         = 0;
1568       PFN_vkGetImageSparseMemoryRequirements2        vkGetImageSparseMemoryRequirements2        = 0;
1569       PFN_vkGetImageSparseMemoryRequirements2KHR     vkGetImageSparseMemoryRequirements2KHR     = 0;
1570       PFN_vkGetImageSubresourceLayout                vkGetImageSubresourceLayout                = 0;
1571       PFN_vkGetImageViewAddressNVX                   vkGetImageViewAddressNVX                   = 0;
1572       PFN_vkGetImageViewHandleNVX                    vkGetImageViewHandleNVX                    = 0;
1573 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
1574       PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0;
1575 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1576       PFN_vkGetMemoryFdKHR                    vkGetMemoryFdKHR                    = 0;
1577       PFN_vkGetMemoryFdPropertiesKHR          vkGetMemoryFdPropertiesKHR          = 0;
1578       PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0;
1579       PFN_vkGetMemoryRemoteAddressNV          vkGetMemoryRemoteAddressNV          = 0;
1580 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1581       PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0;
1582 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1583 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1584       PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0;
1585 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1586 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1587       PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0;
1588 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1589 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1590       PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA = 0;
1591 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1592 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1593       PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA = 0;
1594 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1595       PFN_vkGetPastPresentationTimingGOOGLE                 vkGetPastPresentationTimingGOOGLE                 = 0;
1596       PFN_vkGetPerformanceParameterINTEL                    vkGetPerformanceParameterINTEL                    = 0;
1597       PFN_vkGetPipelineCacheData                            vkGetPipelineCacheData                            = 0;
1598       PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0;
1599       PFN_vkGetPipelineExecutablePropertiesKHR              vkGetPipelineExecutablePropertiesKHR              = 0;
1600       PFN_vkGetPipelineExecutableStatisticsKHR              vkGetPipelineExecutableStatisticsKHR              = 0;
1601       PFN_vkGetPrivateDataEXT                               vkGetPrivateDataEXT                               = 0;
1602       PFN_vkGetQueryPoolResults                             vkGetQueryPoolResults                             = 0;
1603       PFN_vkGetQueueCheckpointData2NV                       vkGetQueueCheckpointData2NV                       = 0;
1604       PFN_vkGetQueueCheckpointDataNV                        vkGetQueueCheckpointDataNV                        = 0;
1605       PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0;
1606       PFN_vkGetRayTracingShaderGroupHandlesKHR              vkGetRayTracingShaderGroupHandlesKHR              = 0;
1607       PFN_vkGetRayTracingShaderGroupHandlesNV               vkGetRayTracingShaderGroupHandlesNV               = 0;
1608       PFN_vkGetRayTracingShaderGroupStackSizeKHR            vkGetRayTracingShaderGroupStackSizeKHR            = 0;
1609       PFN_vkGetRefreshCycleDurationGOOGLE                   vkGetRefreshCycleDurationGOOGLE                   = 0;
1610       PFN_vkGetRenderAreaGranularity                        vkGetRenderAreaGranularity                        = 0;
1611       PFN_vkGetSemaphoreCounterValue                        vkGetSemaphoreCounterValue                        = 0;
1612       PFN_vkGetSemaphoreCounterValueKHR                     vkGetSemaphoreCounterValueKHR                     = 0;
1613       PFN_vkGetSemaphoreFdKHR                               vkGetSemaphoreFdKHR                               = 0;
1614 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1615       PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0;
1616 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1617 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1618       PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA = 0;
1619 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1620       PFN_vkGetShaderInfoAMD          vkGetShaderInfoAMD          = 0;
1621       PFN_vkGetSwapchainCounterEXT    vkGetSwapchainCounterEXT    = 0;
1622       PFN_vkGetSwapchainImagesKHR     vkGetSwapchainImagesKHR     = 0;
1623       PFN_vkGetSwapchainStatusKHR     vkGetSwapchainStatusKHR     = 0;
1624       PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0;
1625 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1626       PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR = 0;
1627 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1628       PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0;
1629 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1630       PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0;
1631 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1632       PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0;
1633 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1634       PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0;
1635 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1636 #  if defined( VK_USE_PLATFORM_FUCHSIA )
1637       PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA = 0;
1638 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
1639       PFN_vkInitializePerformanceApiINTEL         vkInitializePerformanceApiINTEL         = 0;
1640       PFN_vkInvalidateMappedMemoryRanges          vkInvalidateMappedMemoryRanges          = 0;
1641       PFN_vkMapMemory                             vkMapMemory                             = 0;
1642       PFN_vkMergePipelineCaches                   vkMergePipelineCaches                   = 0;
1643       PFN_vkMergeValidationCachesEXT              vkMergeValidationCachesEXT              = 0;
1644       PFN_vkQueueBeginDebugUtilsLabelEXT          vkQueueBeginDebugUtilsLabelEXT          = 0;
1645       PFN_vkQueueBindSparse                       vkQueueBindSparse                       = 0;
1646       PFN_vkQueueEndDebugUtilsLabelEXT            vkQueueEndDebugUtilsLabelEXT            = 0;
1647       PFN_vkQueueInsertDebugUtilsLabelEXT         vkQueueInsertDebugUtilsLabelEXT         = 0;
1648       PFN_vkQueuePresentKHR                       vkQueuePresentKHR                       = 0;
1649       PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0;
1650       PFN_vkQueueSubmit                           vkQueueSubmit                           = 0;
1651       PFN_vkQueueSubmit2KHR                       vkQueueSubmit2KHR                       = 0;
1652       PFN_vkQueueWaitIdle                         vkQueueWaitIdle                         = 0;
1653       PFN_vkRegisterDeviceEventEXT                vkRegisterDeviceEventEXT                = 0;
1654       PFN_vkRegisterDisplayEventEXT               vkRegisterDisplayEventEXT               = 0;
1655 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
1656       PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT = 0;
1657 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
1658       PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL = 0;
1659       PFN_vkReleaseProfilingLockKHR              vkReleaseProfilingLockKHR              = 0;
1660       PFN_vkResetCommandBuffer                   vkResetCommandBuffer                   = 0;
1661       PFN_vkResetCommandPool                     vkResetCommandPool                     = 0;
1662       PFN_vkResetDescriptorPool                  vkResetDescriptorPool                  = 0;
1663       PFN_vkResetEvent                           vkResetEvent                           = 0;
1664       PFN_vkResetFences                          vkResetFences                          = 0;
1665       PFN_vkResetQueryPool                       vkResetQueryPool                       = 0;
1666       PFN_vkResetQueryPoolEXT                    vkResetQueryPoolEXT                    = 0;
1667       PFN_vkSetDebugUtilsObjectNameEXT           vkSetDebugUtilsObjectNameEXT           = 0;
1668       PFN_vkSetDebugUtilsObjectTagEXT            vkSetDebugUtilsObjectTagEXT            = 0;
1669       PFN_vkSetEvent                             vkSetEvent                             = 0;
1670       PFN_vkSetHdrMetadataEXT                    vkSetHdrMetadataEXT                    = 0;
1671       PFN_vkSetLocalDimmingAMD                   vkSetLocalDimmingAMD                   = 0;
1672       PFN_vkSetPrivateDataEXT                    vkSetPrivateDataEXT                    = 0;
1673       PFN_vkSignalSemaphore                      vkSignalSemaphore                      = 0;
1674       PFN_vkSignalSemaphoreKHR                   vkSignalSemaphoreKHR                   = 0;
1675       PFN_vkTrimCommandPool                      vkTrimCommandPool                      = 0;
1676       PFN_vkTrimCommandPoolKHR                   vkTrimCommandPoolKHR                   = 0;
1677       PFN_vkUninitializePerformanceApiINTEL      vkUninitializePerformanceApiINTEL      = 0;
1678       PFN_vkUnmapMemory                          vkUnmapMemory                          = 0;
1679       PFN_vkUpdateDescriptorSetWithTemplate      vkUpdateDescriptorSetWithTemplate      = 0;
1680       PFN_vkUpdateDescriptorSetWithTemplateKHR   vkUpdateDescriptorSetWithTemplateKHR   = 0;
1681       PFN_vkUpdateDescriptorSets                 vkUpdateDescriptorSets                 = 0;
1682 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
1683       PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR = 0;
1684 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
1685       PFN_vkWaitForFences                            vkWaitForFences                            = 0;
1686       PFN_vkWaitSemaphores                           vkWaitSemaphores                           = 0;
1687       PFN_vkWaitSemaphoresKHR                        vkWaitSemaphoresKHR                        = 0;
1688       PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR = 0;
1689     };
1690 
1691     class Context
1692     {
1693     public:
Context()1694       Context() : m_dispatcher( m_dynamicLoader.getProcAddress<PFN_vkGetInstanceProcAddr>( "vkGetInstanceProcAddr" ) )
1695       {}
1696 
1697       ~Context() = default;
1698 
1699       Context( Context const & ) = delete;
Context(Context && rhs)1700       Context( Context && rhs ) VULKAN_HPP_NOEXCEPT
1701         : m_dynamicLoader( std::move( rhs.m_dynamicLoader ) )
1702         , m_dispatcher( std::move( rhs.m_dispatcher ) )
1703       {}
1704       Context & operator=( Context const & ) = delete;
operator =(Context && rhs)1705       Context & operator                     =( Context && rhs ) VULKAN_HPP_NOEXCEPT
1706       {
1707         if ( this != &rhs )
1708         {
1709           m_dynamicLoader = std::move( rhs.m_dynamicLoader );
1710           m_dispatcher    = std::move( rhs.m_dispatcher );
1711         }
1712         return *this;
1713       }
1714 
1715       //=== VK_VERSION_1_0 ===
1716 
1717       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> enumerateInstanceExtensionProperties(
1718         Optional<const std::string> layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
1719 
1720       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> enumerateInstanceLayerProperties() const;
1721 
1722       //=== VK_VERSION_1_1 ===
1723 
1724       VULKAN_HPP_NODISCARD uint32_t enumerateInstanceVersion() const;
1725 
getDispatcher() const1726       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher const * getDispatcher() const
1727       {
1728         return &m_dispatcher;
1729       }
1730 
1731     private:
1732       VULKAN_HPP_NAMESPACE::DynamicLoader                                m_dynamicLoader;
1733       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::ContextDispatcher m_dispatcher;
1734     };
1735 
1736     class Instance
1737     {
1738     public:
1739       using CType = VkInstance;
1740 
1741       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
1742         VULKAN_HPP_NAMESPACE::ObjectType::eInstance;
1743       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
1744         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eInstance;
1745 
1746     public:
Instance(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const & context,VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)1747       Instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const &                context,
1748                 VULKAN_HPP_NAMESPACE::InstanceCreateInfo const &                                createInfo,
1749                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
1750         : m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
1751             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
1752         , m_dispatcher( context.getDispatcher()->vkGetInstanceProcAddr )
1753       {
1754         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
1755           context.getDispatcher()->vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo *>( &createInfo ),
1756                                                      m_allocator,
1757                                                      reinterpret_cast<VkInstance *>( &m_instance ) ) );
1758         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
1759         {
1760           throwResultException( result, "vkCreateInstance" );
1761         }
1762         m_dispatcher.init( static_cast<VkInstance>( m_instance ) );
1763       }
1764 
Instance(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const & context,VkInstance instance,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)1765       Instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Context const &                context,
1766                 VkInstance                                                                      instance,
1767                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
1768         : m_instance( instance )
1769         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
1770             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
1771         , m_dispatcher( context.getDispatcher()->vkGetInstanceProcAddr )
1772       {
1773         m_dispatcher.init( static_cast<VkInstance>( m_instance ) );
1774       }
1775 
~Instance()1776       ~Instance()
1777       {
1778         if ( m_instance )
1779         {
1780           getDispatcher()->vkDestroyInstance( static_cast<VkInstance>( m_instance ), m_allocator );
1781         }
1782       }
1783 
1784 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
1785       Instance() = default;
1786 #  else
1787       Instance()                      = delete;
1788 #  endif
1789       Instance( Instance const & ) = delete;
Instance(Instance && rhs)1790       Instance( Instance && rhs ) VULKAN_HPP_NOEXCEPT
1791         : m_instance( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} ) )
1792         , m_allocator( rhs.m_allocator )
1793         , m_dispatcher( rhs.m_dispatcher )
1794       {}
1795       Instance & operator=( Instance const & ) = delete;
operator =(Instance && rhs)1796       Instance & operator                      =( Instance && rhs ) VULKAN_HPP_NOEXCEPT
1797       {
1798         if ( this != &rhs )
1799         {
1800           if ( m_instance )
1801           {
1802             getDispatcher()->vkDestroyInstance( static_cast<VkInstance>( m_instance ), m_allocator );
1803           }
1804           m_instance   = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_instance, {} );
1805           m_allocator  = rhs.m_allocator;
1806           m_dispatcher = rhs.m_dispatcher;
1807         }
1808         return *this;
1809       }
1810 
operator *() const1811       VULKAN_HPP_NAMESPACE::Instance const & operator*() const VULKAN_HPP_NOEXCEPT
1812       {
1813         return m_instance;
1814       }
1815 
getDispatcher() const1816       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
1817       {
1818         return &m_dispatcher;
1819       }
1820 
1821 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const1822       explicit operator bool() const VULKAN_HPP_NOEXCEPT
1823       {
1824         return m_instance.operator bool();
1825       }
1826 
operator !() const1827       bool operator!() const VULKAN_HPP_NOEXCEPT
1828       {
1829         return m_instance.operator!();
1830       }
1831 #  endif
1832 
1833       //=== VK_VERSION_1_0 ===
1834 
1835       VULKAN_HPP_NODISCARD PFN_vkVoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT;
1836 
1837       //=== VK_VERSION_1_1 ===
1838 
1839       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
1840                            enumeratePhysicalDeviceGroups() const;
1841 
1842       //=== VK_EXT_debug_report ===
1843 
1844       void debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT      flags,
1845                                   VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_,
1846                                   uint64_t                                       object,
1847                                   size_t                                         location,
1848                                   int32_t                                        messageCode,
1849                                   const std::string &                            layerPrefix,
1850                                   const std::string &                            message ) const VULKAN_HPP_NOEXCEPT;
1851 
1852       //=== VK_KHR_device_group_creation ===
1853 
1854       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
1855                            enumeratePhysicalDeviceGroupsKHR() const;
1856 
1857       //=== VK_EXT_debug_utils ===
1858 
1859       void
1860         submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
1861                                     VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT        messageTypes,
1862                                     const DebugUtilsMessengerCallbackDataEXT & callbackData ) const VULKAN_HPP_NOEXCEPT;
1863 
1864     private:
1865       VULKAN_HPP_NAMESPACE::Instance                                      m_instance;
1866       const VkAllocationCallbacks *                                       m_allocator;
1867       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher m_dispatcher;
1868     };
1869 
1870     class PhysicalDevice
1871     {
1872     public:
1873       using CType = VkPhysicalDevice;
1874 
1875       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
1876         VULKAN_HPP_NAMESPACE::ObjectType::ePhysicalDevice;
1877       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
1878         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePhysicalDevice;
1879 
1880     public:
PhysicalDevice(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkPhysicalDevice physicalDevice)1881       PhysicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,
1882                       VkPhysicalDevice                                                  physicalDevice )
1883         : m_physicalDevice( physicalDevice ), m_dispatcher( instance.getDispatcher() )
1884       {}
1885 
PhysicalDevice(VkPhysicalDevice physicalDevice,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher)1886       PhysicalDevice( VkPhysicalDevice                                                            physicalDevice,
1887                       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher )
1888         : m_physicalDevice( physicalDevice ), m_dispatcher( dispatcher )
1889       {}
1890 
1891 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
1892       PhysicalDevice() = default;
1893 #  else
1894       PhysicalDevice()                = delete;
1895 #  endif
1896       PhysicalDevice( PhysicalDevice const & ) = delete;
PhysicalDevice(PhysicalDevice && rhs)1897       PhysicalDevice( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT
1898         : m_physicalDevice( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} ) )
1899         , m_dispatcher( rhs.m_dispatcher )
1900       {}
1901       PhysicalDevice & operator=( PhysicalDevice const & ) = delete;
operator =(PhysicalDevice && rhs)1902       PhysicalDevice & operator                            =( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT
1903       {
1904         if ( this != &rhs )
1905         {
1906           m_physicalDevice = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_physicalDevice, {} );
1907           m_dispatcher     = rhs.m_dispatcher;
1908         }
1909         return *this;
1910       }
1911 
operator *() const1912       VULKAN_HPP_NAMESPACE::PhysicalDevice const & operator*() const VULKAN_HPP_NOEXCEPT
1913       {
1914         return m_physicalDevice;
1915       }
1916 
getDispatcher() const1917       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
1918       {
1919         return m_dispatcher;
1920       }
1921 
1922 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const1923       explicit operator bool() const VULKAN_HPP_NOEXCEPT
1924       {
1925         return m_physicalDevice.operator bool();
1926       }
1927 
operator !() const1928       bool operator!() const VULKAN_HPP_NOEXCEPT
1929       {
1930         return m_physicalDevice.operator!();
1931       }
1932 #  endif
1933 
1934       //=== VK_VERSION_1_0 ===
1935 
1936       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures getFeatures() const VULKAN_HPP_NOEXCEPT;
1937 
1938       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties
1939                            getFormatProperties( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
1940 
1941       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties getImageFormatProperties(
1942         VULKAN_HPP_NAMESPACE::Format           format,
1943         VULKAN_HPP_NAMESPACE::ImageType        type,
1944         VULKAN_HPP_NAMESPACE::ImageTiling      tiling,
1945         VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage,
1946         VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
1947 
1948       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties getProperties() const VULKAN_HPP_NOEXCEPT;
1949 
1950       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties>
1951                            getQueueFamilyProperties() const VULKAN_HPP_NOEXCEPT;
1952 
1953       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties
1954                            getMemoryProperties() const VULKAN_HPP_NOEXCEPT;
1955 
1956       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> enumerateDeviceExtensionProperties(
1957         Optional<const std::string> layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const;
1958 
1959       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> enumerateDeviceLayerProperties() const;
1960 
1961       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties>
1962                            getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format              format,
1963                                                            VULKAN_HPP_NAMESPACE::ImageType           type,
1964                                                            VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,
1965                                                            VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage,
1966                                                            VULKAN_HPP_NAMESPACE::ImageTiling         tiling ) const VULKAN_HPP_NOEXCEPT;
1967 
1968       //=== VK_VERSION_1_1 ===
1969 
1970       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2() const VULKAN_HPP_NOEXCEPT;
1971 
1972       template <typename X, typename Y, typename... Z>
1973       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getFeatures2() const VULKAN_HPP_NOEXCEPT;
1974 
1975       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 getProperties2() const VULKAN_HPP_NOEXCEPT;
1976 
1977       template <typename X, typename Y, typename... Z>
1978       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getProperties2() const VULKAN_HPP_NOEXCEPT;
1979 
1980       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2
1981                            getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
1982 
1983       template <typename X, typename Y, typename... Z>
1984       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
1985                            getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
1986 
1987       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties2
1988                            getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
1989 
1990       template <typename X, typename Y, typename... Z>
1991       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
1992                            getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
1993 
1994       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
1995                            getQueueFamilyProperties2() const VULKAN_HPP_NOEXCEPT;
1996 
1997       template <typename StructureChain>
1998       VULKAN_HPP_NODISCARD std::vector<StructureChain> getQueueFamilyProperties2() const;
1999 
2000       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
2001                            getMemoryProperties2() const VULKAN_HPP_NOEXCEPT;
2002 
2003       template <typename X, typename Y, typename... Z>
2004       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getMemoryProperties2() const VULKAN_HPP_NOEXCEPT;
2005 
2006       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
2007                            getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const
2008         VULKAN_HPP_NOEXCEPT;
2009 
2010       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferProperties(
2011         const PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT;
2012 
2013       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFenceProperties(
2014         const PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT;
2015 
2016       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphoreProperties(
2017         const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT;
2018 
2019       //=== VK_KHR_surface ===
2020 
2021       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2022                            getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2023 
2024       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR
2025                            getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2026 
2027       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>
2028                            getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2029 
2030       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
2031                            getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2032 
2033       //=== VK_KHR_swapchain ===
2034 
2035       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::Rect2D>
2036                            getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2037 
2038       //=== VK_KHR_display ===
2039 
2040       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR> getDisplayPropertiesKHR() const;
2041 
2042       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR>
2043                            getDisplayPlanePropertiesKHR() const;
2044 
2045 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
2046       //=== VK_KHR_xlib_surface ===
2047 
2048       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getXlibPresentationSupportKHR(
2049         uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT;
2050 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
2051 
2052 #  if defined( VK_USE_PLATFORM_XCB_KHR )
2053       //=== VK_KHR_xcb_surface ===
2054 
2055       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32 getXcbPresentationSupportKHR(
2056         uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT;
2057 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
2058 
2059 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
2060       //=== VK_KHR_wayland_surface ===
2061 
2062       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2063                            getWaylandPresentationSupportKHR( uint32_t            queueFamilyIndex,
2064                                                              struct wl_display & display ) const VULKAN_HPP_NOEXCEPT;
2065 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
2066 
2067 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2068       //=== VK_KHR_win32_surface ===
2069 
2070       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2071                            getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT;
2072 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2073 
2074 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
2075       //=== VK_KHR_video_queue ===
2076 
2077       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR
2078                            getVideoCapabilitiesKHR( const VideoProfileKHR & videoProfile ) const;
2079 
2080       template <typename X, typename Y, typename... Z>
2081       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2082                            getVideoCapabilitiesKHR( const VideoProfileKHR & videoProfile ) const;
2083 
2084       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR>
2085                            getVideoFormatPropertiesKHR( const PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const;
2086 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
2087 
2088       //=== VK_NV_external_memory_capabilities ===
2089 
2090       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV getExternalImageFormatPropertiesNV(
2091         VULKAN_HPP_NAMESPACE::Format           format,
2092         VULKAN_HPP_NAMESPACE::ImageType        type,
2093         VULKAN_HPP_NAMESPACE::ImageTiling      tiling,
2094         VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage,
2095         VULKAN_HPP_NAMESPACE::ImageCreateFlags flags          VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
2096         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType
2097                                                               VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
2098 
2099       //=== VK_KHR_get_physical_device_properties2 ===
2100 
2101       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2KHR() const VULKAN_HPP_NOEXCEPT;
2102 
2103       template <typename X, typename Y, typename... Z>
2104       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getFeatures2KHR() const VULKAN_HPP_NOEXCEPT;
2105 
2106       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2
2107                            getProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2108 
2109       template <typename X, typename Y, typename... Z>
2110       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2111 
2112       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2
2113                            getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
2114 
2115       template <typename X, typename Y, typename... Z>
2116       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2117                            getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT;
2118 
2119       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageFormatProperties2
2120                            getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
2121 
2122       template <typename X, typename Y, typename... Z>
2123       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2124                            getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const;
2125 
2126       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
2127                            getQueueFamilyProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2128 
2129       template <typename StructureChain>
2130       VULKAN_HPP_NODISCARD std::vector<StructureChain> getQueueFamilyProperties2KHR() const;
2131 
2132       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
2133                            getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2134 
2135       template <typename X, typename Y, typename... Z>
2136       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT;
2137 
2138       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
2139                            getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const
2140         VULKAN_HPP_NOEXCEPT;
2141 
2142       //=== VK_KHR_external_memory_capabilities ===
2143 
2144       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferPropertiesKHR(
2145         const PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT;
2146 
2147       //=== VK_KHR_external_semaphore_capabilities ===
2148 
2149       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphorePropertiesKHR(
2150         const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT;
2151 
2152 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
2153       //=== VK_EXT_acquire_xlib_display ===
2154 
2155       void acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const;
2156 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
2157 
2158       //=== VK_EXT_display_surface_counter ===
2159 
2160       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT
2161                            getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2162 
2163       //=== VK_KHR_external_fence_capabilities ===
2164 
2165       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFencePropertiesKHR(
2166         const PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT;
2167 
2168       //=== VK_KHR_performance_query ===
2169 
2170       VULKAN_HPP_NODISCARD std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>>
2171                            enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const;
2172 
2173       VULKAN_HPP_NODISCARD uint32_t getQueueFamilyPerformanceQueryPassesKHR(
2174         const QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const VULKAN_HPP_NOEXCEPT;
2175 
2176       //=== VK_KHR_get_surface_capabilities2 ===
2177 
2178       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR
2179                            getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2180 
2181       template <typename X, typename Y, typename... Z>
2182       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2183                            getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2184 
2185       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>
2186                            getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2187 
2188       //=== VK_KHR_get_display_properties2 ===
2189 
2190       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR> getDisplayProperties2KHR() const;
2191 
2192       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR>
2193                            getDisplayPlaneProperties2KHR() const;
2194 
2195       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR
2196                            getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo ) const;
2197 
2198       //=== VK_EXT_sample_locations ===
2199 
2200       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT
2201                            getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT;
2202 
2203       //=== VK_EXT_calibrated_timestamps ===
2204 
2205       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::TimeDomainEXT> getCalibrateableTimeDomainsEXT() const;
2206 
2207       //=== VK_KHR_fragment_shading_rate ===
2208 
2209       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR>
2210                            getFragmentShadingRatesKHR() const;
2211 
2212       //=== VK_EXT_tooling_info ===
2213 
2214       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT>
2215                            getToolPropertiesEXT() const;
2216 
2217       //=== VK_NV_cooperative_matrix ===
2218 
2219       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV>
2220                            getCooperativeMatrixPropertiesNV() const;
2221 
2222       //=== VK_NV_coverage_reduction_mode ===
2223 
2224       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV>
2225                            getSupportedFramebufferMixedSamplesCombinationsNV() const;
2226 
2227 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2228       //=== VK_EXT_full_screen_exclusive ===
2229 
2230       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
2231                            getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2232 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2233 
2234       //=== VK_EXT_acquire_drm_display ===
2235 
2236       void acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const;
2237 
2238 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
2239       //=== VK_EXT_directfb_surface ===
2240 
2241       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2242                            getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT;
2243 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
2244 
2245 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
2246       //=== VK_QNX_screen_surface ===
2247 
2248       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Bool32
2249                            getScreenPresentationSupportQNX( uint32_t                queueFamilyIndex,
2250                                                             struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT;
2251 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
2252 
2253     private:
2254       VULKAN_HPP_NAMESPACE::PhysicalDevice                                        m_physicalDevice;
2255       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher;
2256     };
2257 
2258     class PhysicalDevices : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice>
2259     {
2260     public:
PhysicalDevices(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance)2261       PhysicalDevices( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance )
2262       {
2263         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher =
2264           instance.getDispatcher();
2265         std::vector<VkPhysicalDevice> physicalDevices;
2266         uint32_t                      physicalDeviceCount;
2267         VULKAN_HPP_NAMESPACE::Result  result;
2268         do
2269         {
2270           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkEnumeratePhysicalDevices(
2271             static_cast<VkInstance>( *instance ), &physicalDeviceCount, nullptr ) );
2272           if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceCount )
2273           {
2274             physicalDevices.resize( physicalDeviceCount );
2275             result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkEnumeratePhysicalDevices(
2276               static_cast<VkInstance>( *instance ), &physicalDeviceCount, physicalDevices.data() ) );
2277             VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() );
2278           }
2279         } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
2280         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
2281         {
2282           this->reserve( physicalDeviceCount );
2283           for ( auto const & physicalDevice : physicalDevices )
2284           {
2285             this->emplace_back( physicalDevice, dispatcher );
2286           }
2287         }
2288         else
2289         {
2290           throwResultException( result, "vkEnumeratePhysicalDevices" );
2291         }
2292       }
2293 
2294 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
2295       PhysicalDevices() = default;
2296 #  else
2297       PhysicalDevices()               = delete;
2298 #  endif
2299       PhysicalDevices( PhysicalDevices const & ) = delete;
2300       PhysicalDevices( PhysicalDevices && rhs )  = default;
2301       PhysicalDevices & operator=( PhysicalDevices const & ) = delete;
2302       PhysicalDevices & operator=( PhysicalDevices && rhs ) = default;
2303     };
2304 
2305     class Device
2306     {
2307     public:
2308       using CType = VkDevice;
2309 
2310       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
2311         VULKAN_HPP_NAMESPACE::ObjectType::eDevice;
2312       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
2313         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDevice;
2314 
2315     public:
Device(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2316       Device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const &         physicalDevice,
2317               VULKAN_HPP_NAMESPACE::DeviceCreateInfo const &                                  createInfo,
2318               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2319         : m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2320             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2321         , m_dispatcher( physicalDevice.getDispatcher()->vkGetDeviceProcAddr )
2322       {
2323         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
2324           physicalDevice.getDispatcher()->vkCreateDevice( static_cast<VkPhysicalDevice>( *physicalDevice ),
2325                                                           reinterpret_cast<const VkDeviceCreateInfo *>( &createInfo ),
2326                                                           m_allocator,
2327                                                           reinterpret_cast<VkDevice *>( &m_device ) ) );
2328         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
2329         {
2330           throwResultException( result, "vkCreateDevice" );
2331         }
2332         m_dispatcher.init( static_cast<VkDevice>( m_device ) );
2333       }
2334 
Device(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VkDevice device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2335       Device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const &         physicalDevice,
2336               VkDevice                                                                        device,
2337               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2338         : m_device( device )
2339         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2340             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2341         , m_dispatcher( physicalDevice.getDispatcher()->vkGetDeviceProcAddr )
2342       {
2343         m_dispatcher.init( static_cast<VkDevice>( m_device ) );
2344       }
2345 
~Device()2346       ~Device()
2347       {
2348         if ( m_device )
2349         {
2350           getDispatcher()->vkDestroyDevice( static_cast<VkDevice>( m_device ), m_allocator );
2351         }
2352       }
2353 
2354 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
2355       Device() = default;
2356 #  else
2357       Device()                        = delete;
2358 #  endif
2359       Device( Device const & ) = delete;
Device(Device && rhs)2360       Device( Device && rhs ) VULKAN_HPP_NOEXCEPT
2361         : m_device( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} ) )
2362         , m_allocator( rhs.m_allocator )
2363         , m_dispatcher( rhs.m_dispatcher )
2364       {}
2365       Device & operator=( Device const & ) = delete;
operator =(Device && rhs)2366       Device & operator                    =( Device && rhs ) VULKAN_HPP_NOEXCEPT
2367       {
2368         if ( this != &rhs )
2369         {
2370           if ( m_device )
2371           {
2372             getDispatcher()->vkDestroyDevice( static_cast<VkDevice>( m_device ), m_allocator );
2373           }
2374           m_device     = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_device, {} );
2375           m_allocator  = rhs.m_allocator;
2376           m_dispatcher = rhs.m_dispatcher;
2377         }
2378         return *this;
2379       }
2380 
operator *() const2381       VULKAN_HPP_NAMESPACE::Device const & operator*() const VULKAN_HPP_NOEXCEPT
2382       {
2383         return m_device;
2384       }
2385 
getDispatcher() const2386       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
2387       {
2388         return &m_dispatcher;
2389       }
2390 
2391 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const2392       explicit operator bool() const VULKAN_HPP_NOEXCEPT
2393       {
2394         return m_device.operator bool();
2395       }
2396 
operator !() const2397       bool operator!() const VULKAN_HPP_NOEXCEPT
2398       {
2399         return m_device.operator!();
2400       }
2401 #  endif
2402 
2403       //=== VK_VERSION_1_0 ===
2404 
2405       VULKAN_HPP_NODISCARD PFN_vkVoidFunction getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT;
2406 
2407       void waitIdle() const;
2408 
2409       void
2410         flushMappedMemoryRanges( ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const;
2411 
2412       void invalidateMappedMemoryRanges(
2413         ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const;
2414 
2415       void resetFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences ) const;
2416 
2417       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
2418                            waitForFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,
2419                                           VULKAN_HPP_NAMESPACE::Bool32                          waitAll,
2420                                           uint64_t                                              timeout ) const;
2421 
2422       void updateDescriptorSets(
2423         ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,
2424         ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const &  descriptorCopies ) const VULKAN_HPP_NOEXCEPT;
2425 
2426       //=== VK_VERSION_1_1 ===
2427 
2428       void bindBufferMemory2( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const;
2429 
2430       void bindImageMemory2( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const;
2431 
2432       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags getGroupPeerMemoryFeatures(
2433         uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT;
2434 
2435       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
2436                            getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2437 
2438       template <typename X, typename Y, typename... Z>
2439       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2440                            getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2441 
2442       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
2443                            getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2444 
2445       template <typename X, typename Y, typename... Z>
2446       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2447                            getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2448 
2449       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
2450                            getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2451 
2452       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
2453                            getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
2454 
2455       template <typename X, typename Y, typename... Z>
2456       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2457                            getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
2458 
2459       //=== VK_VERSION_1_2 ===
2460 
2461       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result waitSemaphores( const SemaphoreWaitInfo & waitInfo,
2462                                                                         uint64_t                  timeout ) const;
2463 
2464       void signalSemaphore( const SemaphoreSignalInfo & signalInfo ) const;
2465 
2466       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
2467                            getBufferAddress( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2468 
2469       VULKAN_HPP_NODISCARD uint64_t
2470                            getBufferOpaqueCaptureAddress( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2471 
2472       VULKAN_HPP_NODISCARD uint64_t
2473                            getMemoryOpaqueCaptureAddress( const DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2474 
2475       //=== VK_KHR_swapchain ===
2476 
2477       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR
2478                            getGroupPresentCapabilitiesKHR() const;
2479 
2480       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
2481                            getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const;
2482 
2483       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
2484                            acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo ) const;
2485 
2486       //=== VK_EXT_debug_marker ===
2487 
2488       void debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
2489 
2490       void debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
2491 
2492       //=== VK_NVX_image_view_handle ===
2493 
2494       VULKAN_HPP_NODISCARD uint32_t
2495                            getImageViewHandleNVX( const ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT;
2496 
2497       //=== VK_KHR_device_group ===
2498 
2499       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR(
2500         uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT;
2501 
2502 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2503       //=== VK_KHR_external_memory_win32 ===
2504 
2505       VULKAN_HPP_NODISCARD HANDLE
2506                            getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
2507 
2508       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR
2509                            getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
2510                                                               HANDLE                                                 handle ) const;
2511 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2512 
2513       //=== VK_KHR_external_memory_fd ===
2514 
2515       VULKAN_HPP_NODISCARD int getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
2516 
2517       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR
2518                            getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd ) const;
2519 
2520 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2521       //=== VK_KHR_external_semaphore_win32 ===
2522 
2523       void
2524         importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
2525 
2526       VULKAN_HPP_NODISCARD HANDLE
2527                            getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
2528 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2529 
2530       //=== VK_KHR_external_semaphore_fd ===
2531 
2532       void importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
2533 
2534       VULKAN_HPP_NODISCARD int getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
2535 
2536       //=== VK_KHR_descriptor_update_template ===
2537 
2538       void destroyDescriptorUpdateTemplateKHR(
2539         VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
2540         Optional<const AllocationCallbacks>                                     allocator
2541                                                                                 VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
2542 
2543       //=== VK_EXT_display_control ===
2544 
2545       void displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display,
2546                                    const DisplayPowerInfoEXT &      displayPowerInfo ) const;
2547 
2548       //=== VK_EXT_hdr_metadata ===
2549 
2550       void setHdrMetadataEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const &   swapchains,
2551                               ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata ) const
2552         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
2553 
2554 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2555       //=== VK_KHR_external_fence_win32 ===
2556 
2557       void importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
2558 
2559       VULKAN_HPP_NODISCARD HANDLE getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
2560 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2561 
2562       //=== VK_KHR_external_fence_fd ===
2563 
2564       void importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
2565 
2566       VULKAN_HPP_NODISCARD int getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
2567 
2568       //=== VK_KHR_performance_query ===
2569 
2570       void acquireProfilingLockKHR( const AcquireProfilingLockInfoKHR & info ) const;
2571 
2572       void releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT;
2573 
2574       //=== VK_EXT_debug_utils ===
2575 
2576       void setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo ) const;
2577 
2578       void setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo ) const;
2579 
2580 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
2581       //=== VK_ANDROID_external_memory_android_hardware_buffer ===
2582 
2583       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID
2584                            getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const;
2585 
2586       template <typename X, typename Y, typename... Z>
2587       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2588                            getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const;
2589 
2590       VULKAN_HPP_NODISCARD struct AHardwareBuffer *
2591         getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info ) const;
2592 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
2593 
2594       //=== VK_KHR_get_memory_requirements2 ===
2595 
2596       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
2597                            getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2598 
2599       template <typename X, typename Y, typename... Z>
2600       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2601                            getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2602 
2603       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2
2604                            getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2605 
2606       template <typename X, typename Y, typename... Z>
2607       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2608                            getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT;
2609 
2610       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
2611                            getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info ) const
2612         VULKAN_HPP_NOEXCEPT;
2613 
2614       //=== VK_KHR_acceleration_structure ===
2615 
2616       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result buildAccelerationStructuresKHR(
2617         VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                                deferredOperation,
2618         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
2619         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const &
2620           pBuildRangeInfos ) const;
2621 
2622       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
2623                            copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
2624                                                          const CopyAccelerationStructureInfoKHR &   info ) const;
2625 
2626       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
2627                            copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR       deferredOperation,
2628                                                                  const CopyAccelerationStructureToMemoryInfoKHR & info ) const;
2629 
2630       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result
2631                            copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR       deferredOperation,
2632                                                                  const CopyMemoryToAccelerationStructureInfoKHR & info ) const;
2633 
2634       template <typename T>
2635       VULKAN_HPP_NODISCARD std::vector<T> writeAccelerationStructuresPropertiesKHR(
2636         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
2637         VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
2638         size_t                                                                   dataSize,
2639         size_t                                                                   stride ) const;
2640 
2641       template <typename T>
2642       VULKAN_HPP_NODISCARD T writeAccelerationStructuresPropertyKHR(
2643         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
2644         VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
2645         size_t                                                                   stride ) const;
2646 
2647       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress getAccelerationStructureAddressKHR(
2648         const AccelerationStructureDeviceAddressInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
2649 
2650       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR
2651                            getAccelerationStructureCompatibilityKHR( const AccelerationStructureVersionInfoKHR & versionInfo ) const
2652         VULKAN_HPP_NOEXCEPT;
2653 
2654       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR
2655                            getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType,
2656                                                                   const AccelerationStructureBuildGeometryInfoKHR &       buildInfo,
2657                                                                   ArrayProxy<const uint32_t> const & maxPrimitiveCounts
2658                                                                                                      VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const
2659         VULKAN_HPP_NOEXCEPT;
2660 
2661       //=== VK_KHR_sampler_ycbcr_conversion ===
2662 
2663       void destroySamplerYcbcrConversionKHR(
2664         VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
2665         Optional<const AllocationCallbacks>                          allocator
2666                                                                      VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
2667 
2668       //=== VK_KHR_bind_memory2 ===
2669 
2670       void bindBufferMemory2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const;
2671 
2672       void bindImageMemory2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const;
2673 
2674       //=== VK_NV_ray_tracing ===
2675 
2676       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV(
2677         const AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
2678 
2679       template <typename X, typename Y, typename... Z>
2680       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getAccelerationStructureMemoryRequirementsNV(
2681         const AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
2682 
2683       void bindAccelerationStructureMemoryNV(
2684         ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos ) const;
2685 
2686       //=== VK_KHR_maintenance3 ===
2687 
2688       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
2689                            getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
2690 
2691       template <typename X, typename Y, typename... Z>
2692       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
2693                            getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT;
2694 
2695       //=== VK_EXT_external_memory_host ===
2696 
2697       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT
2698                            getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
2699                                                               const void *                                           pHostPointer ) const;
2700 
2701       //=== VK_EXT_calibrated_timestamps ===
2702 
2703       VULKAN_HPP_NODISCARD std::pair<std::vector<uint64_t>, uint64_t> getCalibratedTimestampsEXT(
2704         ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT> const & timestampInfos ) const;
2705 
2706       //=== VK_KHR_timeline_semaphore ===
2707 
2708       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result waitSemaphoresKHR( const SemaphoreWaitInfo & waitInfo,
2709                                                                            uint64_t                  timeout ) const;
2710 
2711       void signalSemaphoreKHR( const SemaphoreSignalInfo & signalInfo ) const;
2712 
2713       //=== VK_INTEL_performance_query ===
2714 
2715       void initializePerformanceApiINTEL( const InitializePerformanceApiInfoINTEL & initializeInfo ) const;
2716 
2717       void uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT;
2718 
2719       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PerformanceValueINTEL
2720                            getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter ) const;
2721 
2722       //=== VK_EXT_buffer_device_address ===
2723 
2724       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
2725                            getBufferAddressEXT( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2726 
2727 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
2728       //=== VK_EXT_full_screen_exclusive ===
2729 
2730       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
2731                            getGroupSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
2732 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
2733 
2734       //=== VK_KHR_buffer_device_address ===
2735 
2736       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceAddress
2737                            getBufferAddressKHR( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2738 
2739       VULKAN_HPP_NODISCARD uint64_t
2740                            getBufferOpaqueCaptureAddressKHR( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2741 
2742       VULKAN_HPP_NODISCARD uint64_t
2743                            getMemoryOpaqueCaptureAddressKHR( const DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT;
2744 
2745       //=== VK_KHR_pipeline_executable_properties ===
2746 
2747       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>
2748                            getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo ) const;
2749 
2750       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR>
2751                            getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo ) const;
2752 
2753       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>
2754                            getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo ) const;
2755 
2756       //=== VK_NV_device_generated_commands ===
2757 
2758       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getGeneratedCommandsMemoryRequirementsNV(
2759         const GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
2760 
2761       template <typename X, typename Y, typename... Z>
2762       VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...> getGeneratedCommandsMemoryRequirementsNV(
2763         const GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT;
2764 
2765       //=== VK_EXT_private_data ===
2766 
2767       void setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType         objectType_,
2768                               uint64_t                                 objectHandle,
2769                               VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot,
2770                               uint64_t                                 data ) const;
2771 
2772       VULKAN_HPP_NODISCARD uint64_t
2773                            getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType         objectType_,
2774                                               uint64_t                                 objectHandle,
2775                                               VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot ) const VULKAN_HPP_NOEXCEPT;
2776 
2777 #  if defined( VK_USE_PLATFORM_FUCHSIA )
2778       //=== VK_FUCHSIA_external_memory ===
2779 
2780       VULKAN_HPP_NODISCARD zx_handle_t
2781                            getMemoryZirconHandleFUCHSIA( const MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const;
2782 
2783       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA
2784                            getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
2785                                                                    zx_handle_t zirconHandle ) const;
2786 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
2787 
2788 #  if defined( VK_USE_PLATFORM_FUCHSIA )
2789       //=== VK_FUCHSIA_external_semaphore ===
2790 
2791       void importSemaphoreZirconHandleFUCHSIA(
2792         const ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const;
2793 
2794       VULKAN_HPP_NODISCARD zx_handle_t
2795                            getSemaphoreZirconHandleFUCHSIA( const SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const;
2796 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
2797 
2798       //=== VK_NV_external_memory_rdma ===
2799 
2800       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::RemoteAddressNV
2801                            getMemoryRemoteAddressNV( const MemoryGetRemoteAddressInfoNV & getMemoryRemoteAddressInfo ) const;
2802 
2803     private:
2804       VULKAN_HPP_NAMESPACE::Device                                      m_device;
2805       const VkAllocationCallbacks *                                     m_allocator;
2806       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher m_dispatcher;
2807     };
2808 
2809     class AccelerationStructureKHR
2810     {
2811     public:
2812       using CType = VkAccelerationStructureKHR;
2813 
2814       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
2815         VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureKHR;
2816       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
2817         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureKHR;
2818 
2819     public:
AccelerationStructureKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2820       AccelerationStructureKHR(
2821         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
2822         VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const &                createInfo,
2823         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2824         : m_device( *device )
2825         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2826             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2827         , m_dispatcher( device.getDispatcher() )
2828       {
2829         VULKAN_HPP_NAMESPACE::Result result =
2830           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAccelerationStructureKHR(
2831             static_cast<VkDevice>( *device ),
2832             reinterpret_cast<const VkAccelerationStructureCreateInfoKHR *>( &createInfo ),
2833             m_allocator,
2834             reinterpret_cast<VkAccelerationStructureKHR *>( &m_accelerationStructureKHR ) ) );
2835         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
2836         {
2837           throwResultException( result, "vkCreateAccelerationStructureKHR" );
2838         }
2839       }
2840 
AccelerationStructureKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkAccelerationStructureKHR accelerationStructureKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2841       AccelerationStructureKHR(
2842         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
2843         VkAccelerationStructureKHR                                                      accelerationStructureKHR,
2844         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2845         : m_accelerationStructureKHR( accelerationStructureKHR )
2846         , m_device( *device )
2847         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2848             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2849         , m_dispatcher( device.getDispatcher() )
2850       {}
2851 
~AccelerationStructureKHR()2852       ~AccelerationStructureKHR()
2853       {
2854         if ( m_accelerationStructureKHR )
2855         {
2856           getDispatcher()->vkDestroyAccelerationStructureKHR(
2857             m_device, static_cast<VkAccelerationStructureKHR>( m_accelerationStructureKHR ), m_allocator );
2858         }
2859       }
2860 
2861 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
2862       AccelerationStructureKHR() = default;
2863 #  else
2864       AccelerationStructureKHR()      = delete;
2865 #  endif
2866       AccelerationStructureKHR( AccelerationStructureKHR const & ) = delete;
AccelerationStructureKHR(AccelerationStructureKHR && rhs)2867       AccelerationStructureKHR( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT
2868         : m_accelerationStructureKHR(
2869             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructureKHR, {} ) )
2870         , m_device( rhs.m_device )
2871         , m_allocator( rhs.m_allocator )
2872         , m_dispatcher( rhs.m_dispatcher )
2873       {}
2874       AccelerationStructureKHR & operator=( AccelerationStructureKHR const & ) = delete;
operator =(AccelerationStructureKHR && rhs)2875       AccelerationStructureKHR & operator=( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT
2876       {
2877         if ( this != &rhs )
2878         {
2879           if ( m_accelerationStructureKHR )
2880           {
2881             getDispatcher()->vkDestroyAccelerationStructureKHR(
2882               m_device, static_cast<VkAccelerationStructureKHR>( m_accelerationStructureKHR ), m_allocator );
2883           }
2884           m_accelerationStructureKHR =
2885             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructureKHR, {} );
2886           m_device     = rhs.m_device;
2887           m_allocator  = rhs.m_allocator;
2888           m_dispatcher = rhs.m_dispatcher;
2889         }
2890         return *this;
2891       }
2892 
operator *() const2893       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & operator*() const VULKAN_HPP_NOEXCEPT
2894       {
2895         return m_accelerationStructureKHR;
2896       }
2897 
getDispatcher() const2898       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
2899       {
2900         return m_dispatcher;
2901       }
2902 
2903 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const2904       explicit operator bool() const VULKAN_HPP_NOEXCEPT
2905       {
2906         return m_accelerationStructureKHR.operator bool();
2907       }
2908 
operator !() const2909       bool operator!() const VULKAN_HPP_NOEXCEPT
2910       {
2911         return m_accelerationStructureKHR.operator!();
2912       }
2913 #  endif
2914 
2915     private:
2916       VULKAN_HPP_NAMESPACE::AccelerationStructureKHR                            m_accelerationStructureKHR;
2917       VkDevice                                                                  m_device;
2918       const VkAllocationCallbacks *                                             m_allocator;
2919       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
2920     };
2921 
2922     class AccelerationStructureNV
2923     {
2924     public:
2925       using CType = VkAccelerationStructureNV;
2926 
2927       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
2928         VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureNV;
2929       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
2930         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureNV;
2931 
2932     public:
AccelerationStructureNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2933       AccelerationStructureNV(
2934         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
2935         VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const &                 createInfo,
2936         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2937         : m_device( *device )
2938         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2939             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2940         , m_dispatcher( device.getDispatcher() )
2941       {
2942         VULKAN_HPP_NAMESPACE::Result result =
2943           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAccelerationStructureNV(
2944             static_cast<VkDevice>( *device ),
2945             reinterpret_cast<const VkAccelerationStructureCreateInfoNV *>( &createInfo ),
2946             m_allocator,
2947             reinterpret_cast<VkAccelerationStructureNV *>( &m_accelerationStructureNV ) ) );
2948         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
2949         {
2950           throwResultException( result, "vkCreateAccelerationStructureNV" );
2951         }
2952       }
2953 
AccelerationStructureNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkAccelerationStructureNV accelerationStructureNV,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)2954       AccelerationStructureNV(
2955         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
2956         VkAccelerationStructureNV                                                       accelerationStructureNV,
2957         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
2958         : m_accelerationStructureNV( accelerationStructureNV )
2959         , m_device( *device )
2960         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
2961             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
2962         , m_dispatcher( device.getDispatcher() )
2963       {}
2964 
~AccelerationStructureNV()2965       ~AccelerationStructureNV()
2966       {
2967         if ( m_accelerationStructureNV )
2968         {
2969           getDispatcher()->vkDestroyAccelerationStructureNV(
2970             m_device, static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ), m_allocator );
2971         }
2972       }
2973 
2974 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
2975       AccelerationStructureNV() = default;
2976 #  else
2977       AccelerationStructureNV()       = delete;
2978 #  endif
2979       AccelerationStructureNV( AccelerationStructureNV const & ) = delete;
AccelerationStructureNV(AccelerationStructureNV && rhs)2980       AccelerationStructureNV( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT
2981         : m_accelerationStructureNV(
2982             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructureNV, {} ) )
2983         , m_device( rhs.m_device )
2984         , m_allocator( rhs.m_allocator )
2985         , m_dispatcher( rhs.m_dispatcher )
2986       {}
2987       AccelerationStructureNV & operator=( AccelerationStructureNV const & ) = delete;
operator =(AccelerationStructureNV && rhs)2988       AccelerationStructureNV & operator=( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT
2989       {
2990         if ( this != &rhs )
2991         {
2992           if ( m_accelerationStructureNV )
2993           {
2994             getDispatcher()->vkDestroyAccelerationStructureNV(
2995               m_device, static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ), m_allocator );
2996           }
2997           m_accelerationStructureNV =
2998             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_accelerationStructureNV, {} );
2999           m_device     = rhs.m_device;
3000           m_allocator  = rhs.m_allocator;
3001           m_dispatcher = rhs.m_dispatcher;
3002         }
3003         return *this;
3004       }
3005 
operator *() const3006       VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & operator*() const VULKAN_HPP_NOEXCEPT
3007       {
3008         return m_accelerationStructureNV;
3009       }
3010 
getDispatcher() const3011       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3012       {
3013         return m_dispatcher;
3014       }
3015 
3016 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const3017       explicit operator bool() const VULKAN_HPP_NOEXCEPT
3018       {
3019         return m_accelerationStructureNV.operator bool();
3020       }
3021 
operator !() const3022       bool operator!() const VULKAN_HPP_NOEXCEPT
3023       {
3024         return m_accelerationStructureNV.operator!();
3025       }
3026 #  endif
3027 
3028       //=== VK_NV_ray_tracing ===
3029 
3030       template <typename T>
3031       VULKAN_HPP_NODISCARD std::vector<T> getHandle( size_t dataSize ) const;
3032 
3033       template <typename T>
3034       VULKAN_HPP_NODISCARD T getHandle() const;
3035 
3036     private:
3037       VULKAN_HPP_NAMESPACE::AccelerationStructureNV                             m_accelerationStructureNV;
3038       VkDevice                                                                  m_device;
3039       const VkAllocationCallbacks *                                             m_allocator;
3040       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
3041     };
3042 
3043     class Buffer
3044     {
3045     public:
3046       using CType = VkBuffer;
3047 
3048       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3049         VULKAN_HPP_NAMESPACE::ObjectType::eBuffer;
3050       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3051         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBuffer;
3052 
3053     public:
Buffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::BufferCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3054       Buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3055               VULKAN_HPP_NAMESPACE::BufferCreateInfo const &                                  createInfo,
3056               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3057         : m_device( *device )
3058         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3059             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3060         , m_dispatcher( device.getDispatcher() )
3061       {
3062         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
3063           getDispatcher()->vkCreateBuffer( static_cast<VkDevice>( *device ),
3064                                            reinterpret_cast<const VkBufferCreateInfo *>( &createInfo ),
3065                                            m_allocator,
3066                                            reinterpret_cast<VkBuffer *>( &m_buffer ) ) );
3067         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3068         {
3069           throwResultException( result, "vkCreateBuffer" );
3070         }
3071       }
3072 
Buffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkBuffer buffer,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3073       Buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3074               VkBuffer                                                                        buffer,
3075               VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3076         : m_buffer( buffer )
3077         , m_device( *device )
3078         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3079             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3080         , m_dispatcher( device.getDispatcher() )
3081       {}
3082 
~Buffer()3083       ~Buffer()
3084       {
3085         if ( m_buffer )
3086         {
3087           getDispatcher()->vkDestroyBuffer( m_device, static_cast<VkBuffer>( m_buffer ), m_allocator );
3088         }
3089       }
3090 
3091 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
3092       Buffer() = default;
3093 #  else
3094       Buffer()                        = delete;
3095 #  endif
3096       Buffer( Buffer const & ) = delete;
Buffer(Buffer && rhs)3097       Buffer( Buffer && rhs ) VULKAN_HPP_NOEXCEPT
3098         : m_buffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_buffer, {} ) )
3099         , m_device( rhs.m_device )
3100         , m_allocator( rhs.m_allocator )
3101         , m_dispatcher( rhs.m_dispatcher )
3102       {}
3103       Buffer & operator=( Buffer const & ) = delete;
operator =(Buffer && rhs)3104       Buffer & operator                    =( Buffer && rhs ) VULKAN_HPP_NOEXCEPT
3105       {
3106         if ( this != &rhs )
3107         {
3108           if ( m_buffer )
3109           {
3110             getDispatcher()->vkDestroyBuffer( m_device, static_cast<VkBuffer>( m_buffer ), m_allocator );
3111           }
3112           m_buffer     = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_buffer, {} );
3113           m_device     = rhs.m_device;
3114           m_allocator  = rhs.m_allocator;
3115           m_dispatcher = rhs.m_dispatcher;
3116         }
3117         return *this;
3118       }
3119 
operator *() const3120       VULKAN_HPP_NAMESPACE::Buffer const & operator*() const VULKAN_HPP_NOEXCEPT
3121       {
3122         return m_buffer;
3123       }
3124 
getDispatcher() const3125       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3126       {
3127         return m_dispatcher;
3128       }
3129 
3130 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const3131       explicit operator bool() const VULKAN_HPP_NOEXCEPT
3132       {
3133         return m_buffer.operator bool();
3134       }
3135 
operator !() const3136       bool operator!() const VULKAN_HPP_NOEXCEPT
3137       {
3138         return m_buffer.operator!();
3139       }
3140 #  endif
3141 
3142       //=== VK_VERSION_1_0 ===
3143 
3144       void bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const;
3145 
3146       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
3147 
3148     private:
3149       VULKAN_HPP_NAMESPACE::Buffer                                              m_buffer;
3150       VkDevice                                                                  m_device;
3151       const VkAllocationCallbacks *                                             m_allocator;
3152       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
3153     };
3154 
3155     class BufferView
3156     {
3157     public:
3158       using CType = VkBufferView;
3159 
3160       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3161         VULKAN_HPP_NAMESPACE::ObjectType::eBufferView;
3162       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3163         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferView;
3164 
3165     public:
BufferView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3166       BufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3167                   VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const &                              createInfo,
3168                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3169         : m_device( *device )
3170         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3171             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3172         , m_dispatcher( device.getDispatcher() )
3173       {
3174         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
3175           getDispatcher()->vkCreateBufferView( static_cast<VkDevice>( *device ),
3176                                                reinterpret_cast<const VkBufferViewCreateInfo *>( &createInfo ),
3177                                                m_allocator,
3178                                                reinterpret_cast<VkBufferView *>( &m_bufferView ) ) );
3179         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3180         {
3181           throwResultException( result, "vkCreateBufferView" );
3182         }
3183       }
3184 
BufferView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkBufferView bufferView,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3185       BufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3186                   VkBufferView                                                                    bufferView,
3187                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3188         : m_bufferView( bufferView )
3189         , m_device( *device )
3190         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3191             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3192         , m_dispatcher( device.getDispatcher() )
3193       {}
3194 
~BufferView()3195       ~BufferView()
3196       {
3197         if ( m_bufferView )
3198         {
3199           getDispatcher()->vkDestroyBufferView( m_device, static_cast<VkBufferView>( m_bufferView ), m_allocator );
3200         }
3201       }
3202 
3203 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
3204       BufferView() = default;
3205 #  else
3206       BufferView()                    = delete;
3207 #  endif
3208       BufferView( BufferView const & ) = delete;
BufferView(BufferView && rhs)3209       BufferView( BufferView && rhs ) VULKAN_HPP_NOEXCEPT
3210         : m_bufferView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferView, {} ) )
3211         , m_device( rhs.m_device )
3212         , m_allocator( rhs.m_allocator )
3213         , m_dispatcher( rhs.m_dispatcher )
3214       {}
3215       BufferView & operator=( BufferView const & ) = delete;
operator =(BufferView && rhs)3216       BufferView & operator                        =( BufferView && rhs ) VULKAN_HPP_NOEXCEPT
3217       {
3218         if ( this != &rhs )
3219         {
3220           if ( m_bufferView )
3221           {
3222             getDispatcher()->vkDestroyBufferView( m_device, static_cast<VkBufferView>( m_bufferView ), m_allocator );
3223           }
3224           m_bufferView = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_bufferView, {} );
3225           m_device     = rhs.m_device;
3226           m_allocator  = rhs.m_allocator;
3227           m_dispatcher = rhs.m_dispatcher;
3228         }
3229         return *this;
3230       }
3231 
operator *() const3232       VULKAN_HPP_NAMESPACE::BufferView const & operator*() const VULKAN_HPP_NOEXCEPT
3233       {
3234         return m_bufferView;
3235       }
3236 
getDispatcher() const3237       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3238       {
3239         return m_dispatcher;
3240       }
3241 
3242 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const3243       explicit operator bool() const VULKAN_HPP_NOEXCEPT
3244       {
3245         return m_bufferView.operator bool();
3246       }
3247 
operator !() const3248       bool operator!() const VULKAN_HPP_NOEXCEPT
3249       {
3250         return m_bufferView.operator!();
3251       }
3252 #  endif
3253 
3254     private:
3255       VULKAN_HPP_NAMESPACE::BufferView                                          m_bufferView;
3256       VkDevice                                                                  m_device;
3257       const VkAllocationCallbacks *                                             m_allocator;
3258       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
3259     };
3260 
3261     class CommandPool
3262     {
3263     public:
3264       using CType = VkCommandPool;
3265 
3266       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3267         VULKAN_HPP_NAMESPACE::ObjectType::eCommandPool;
3268       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3269         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandPool;
3270 
3271     public:
CommandPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3272       CommandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3273                    VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const &                             createInfo,
3274                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3275         : m_device( *device )
3276         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3277             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3278         , m_dispatcher( device.getDispatcher() )
3279       {
3280         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
3281           getDispatcher()->vkCreateCommandPool( static_cast<VkDevice>( *device ),
3282                                                 reinterpret_cast<const VkCommandPoolCreateInfo *>( &createInfo ),
3283                                                 m_allocator,
3284                                                 reinterpret_cast<VkCommandPool *>( &m_commandPool ) ) );
3285         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
3286         {
3287           throwResultException( result, "vkCreateCommandPool" );
3288         }
3289       }
3290 
CommandPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCommandPool commandPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)3291       CommandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
3292                    VkCommandPool                                                                   commandPool,
3293                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
3294         : m_commandPool( commandPool )
3295         , m_device( *device )
3296         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
3297             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
3298         , m_dispatcher( device.getDispatcher() )
3299       {}
3300 
~CommandPool()3301       ~CommandPool()
3302       {
3303         if ( m_commandPool )
3304         {
3305           getDispatcher()->vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( m_commandPool ), m_allocator );
3306         }
3307       }
3308 
3309 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
3310       CommandPool() = default;
3311 #  else
3312       CommandPool()                   = delete;
3313 #  endif
3314       CommandPool( CommandPool const & ) = delete;
CommandPool(CommandPool && rhs)3315       CommandPool( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT
3316         : m_commandPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} ) )
3317         , m_device( rhs.m_device )
3318         , m_allocator( rhs.m_allocator )
3319         , m_dispatcher( rhs.m_dispatcher )
3320       {}
3321       CommandPool & operator=( CommandPool const & ) = delete;
operator =(CommandPool && rhs)3322       CommandPool & operator                         =( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT
3323       {
3324         if ( this != &rhs )
3325         {
3326           if ( m_commandPool )
3327           {
3328             getDispatcher()->vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( m_commandPool ), m_allocator );
3329           }
3330           m_commandPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandPool, {} );
3331           m_device      = rhs.m_device;
3332           m_allocator   = rhs.m_allocator;
3333           m_dispatcher  = rhs.m_dispatcher;
3334         }
3335         return *this;
3336       }
3337 
operator *() const3338       VULKAN_HPP_NAMESPACE::CommandPool const & operator*() const VULKAN_HPP_NOEXCEPT
3339       {
3340         return m_commandPool;
3341       }
3342 
getDispatcher() const3343       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3344       {
3345         return m_dispatcher;
3346       }
3347 
3348 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const3349       explicit operator bool() const VULKAN_HPP_NOEXCEPT
3350       {
3351         return m_commandPool.operator bool();
3352       }
3353 
operator !() const3354       bool operator!() const VULKAN_HPP_NOEXCEPT
3355       {
3356         return m_commandPool.operator!();
3357       }
3358 #  endif
3359 
3360       //=== VK_VERSION_1_0 ===
3361 
3362       void reset( VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
3363 
3364       //=== VK_VERSION_1_1 ===
3365 
3366       void trim( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
3367         VULKAN_HPP_NOEXCEPT;
3368 
3369       //=== VK_KHR_maintenance1 ===
3370 
3371       void trimKHR( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
3372         VULKAN_HPP_NOEXCEPT;
3373 
3374     private:
3375       VULKAN_HPP_NAMESPACE::CommandPool                                         m_commandPool;
3376       VkDevice                                                                  m_device;
3377       const VkAllocationCallbacks *                                             m_allocator;
3378       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
3379     };
3380 
3381     class CommandBuffer
3382     {
3383     public:
3384       using CType = VkCommandBuffer;
3385 
3386       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
3387         VULKAN_HPP_NAMESPACE::ObjectType::eCommandBuffer;
3388       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
3389         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandBuffer;
3390 
3391     public:
CommandBuffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCommandBuffer commandBuffer,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool const & commandPool)3392       CommandBuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &      device,
3393                      VkCommandBuffer                                                      commandBuffer,
3394                      VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandPool const & commandPool )
3395         : m_commandBuffer( commandBuffer )
3396         , m_device( *device )
3397         , m_commandPool( *commandPool )
3398         , m_dispatcher( device.getDispatcher() )
3399       {}
3400 
CommandBuffer(VkCommandBuffer commandBuffer,VkDevice device,VkCommandPool commandPool,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher)3401       CommandBuffer( VkCommandBuffer                                                           commandBuffer,
3402                      VkDevice                                                                  device,
3403                      VkCommandPool                                                             commandPool,
3404                      VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher )
3405         : m_commandBuffer( commandBuffer ), m_device( device ), m_commandPool( commandPool ), m_dispatcher( dispatcher )
3406       {}
3407 
~CommandBuffer()3408       ~CommandBuffer()
3409       {
3410         if ( m_commandBuffer )
3411         {
3412           getDispatcher()->vkFreeCommandBuffers(
3413             m_device, m_commandPool, 1, reinterpret_cast<VkCommandBuffer const *>( &m_commandBuffer ) );
3414         }
3415       }
3416 
3417 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
3418       CommandBuffer() = default;
3419 #  else
3420       CommandBuffer()                 = delete;
3421 #  endif
3422       CommandBuffer( CommandBuffer const & ) = delete;
CommandBuffer(CommandBuffer && rhs)3423       CommandBuffer( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT
3424         : m_commandBuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandBuffer, {} ) )
3425         , m_device( rhs.m_device )
3426         , m_commandPool( rhs.m_commandPool )
3427         , m_dispatcher( rhs.m_dispatcher )
3428       {}
3429       CommandBuffer & operator=( CommandBuffer const & ) = delete;
operator =(CommandBuffer && rhs)3430       CommandBuffer & operator                           =( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT
3431       {
3432         if ( this != &rhs )
3433         {
3434           if ( m_commandBuffer )
3435           {
3436             getDispatcher()->vkFreeCommandBuffers(
3437               m_device, m_commandPool, 1, reinterpret_cast<VkCommandBuffer const *>( &m_commandBuffer ) );
3438           }
3439           m_commandBuffer = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_commandBuffer, {} );
3440           m_device        = rhs.m_device;
3441           m_commandPool   = rhs.m_commandPool;
3442           m_dispatcher    = rhs.m_dispatcher;
3443         }
3444         return *this;
3445       }
3446 
operator *() const3447       VULKAN_HPP_NAMESPACE::CommandBuffer const & operator*() const VULKAN_HPP_NOEXCEPT
3448       {
3449         return m_commandBuffer;
3450       }
3451 
getDispatcher() const3452       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
3453       {
3454         return m_dispatcher;
3455       }
3456 
3457 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const3458       explicit operator bool() const VULKAN_HPP_NOEXCEPT
3459       {
3460         return m_commandBuffer.operator bool();
3461       }
3462 
operator !() const3463       bool operator!() const VULKAN_HPP_NOEXCEPT
3464       {
3465         return m_commandBuffer.operator!();
3466       }
3467 #  endif
3468 
3469       //=== VK_VERSION_1_0 ===
3470 
3471       void begin( const CommandBufferBeginInfo & beginInfo ) const;
3472 
3473       void end() const;
3474 
3475       void reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
3476 
3477       void bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
3478                          VULKAN_HPP_NAMESPACE::Pipeline          pipeline ) const VULKAN_HPP_NOEXCEPT;
3479 
3480       void setViewport( uint32_t                                                 firstViewport,
3481                         ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT;
3482 
3483       void setScissor( uint32_t                                               firstScissor,
3484                        ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT;
3485 
3486       void setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT;
3487 
3488       void setDepthBias( float depthBiasConstantFactor,
3489                          float depthBiasClamp,
3490                          float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT;
3491 
3492       void setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT;
3493 
3494       void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT;
3495 
3496       void setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
3497                                   uint32_t                               compareMask ) const VULKAN_HPP_NOEXCEPT;
3498 
3499       void setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
3500                                 uint32_t                               writeMask ) const VULKAN_HPP_NOEXCEPT;
3501 
3502       void setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
3503                                 uint32_t                               reference ) const VULKAN_HPP_NOEXCEPT;
3504 
3505       void bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint                       pipelineBindPoint,
3506                                VULKAN_HPP_NAMESPACE::PipelineLayout                          layout,
3507                                uint32_t                                                      firstSet,
3508                                ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,
3509                                ArrayProxy<const uint32_t> const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT;
3510 
3511       void bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3512                             VULKAN_HPP_NAMESPACE::DeviceSize offset,
3513                             VULKAN_HPP_NAMESPACE::IndexType  indexType ) const VULKAN_HPP_NOEXCEPT;
3514 
3515       void bindVertexBuffers( uint32_t                                                   firstBinding,
3516                               ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
3517                               ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets ) const
3518         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3519 
3520       void draw( uint32_t vertexCount,
3521                  uint32_t instanceCount,
3522                  uint32_t firstVertex,
3523                  uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
3524 
3525       void drawIndexed( uint32_t indexCount,
3526                         uint32_t instanceCount,
3527                         uint32_t firstIndex,
3528                         int32_t  vertexOffset,
3529                         uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT;
3530 
3531       void drawIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3532                          VULKAN_HPP_NAMESPACE::DeviceSize offset,
3533                          uint32_t                         drawCount,
3534                          uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3535 
3536       void drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3537                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
3538                                 uint32_t                         drawCount,
3539                                 uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3540 
3541       void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
3542 
3543       void dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3544                              VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT;
3545 
3546       void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer                               srcBuffer,
3547                        VULKAN_HPP_NAMESPACE::Buffer                               dstBuffer,
3548                        ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
3549 
3550       void copyImage( VULKAN_HPP_NAMESPACE::Image                               srcImage,
3551                       VULKAN_HPP_NAMESPACE::ImageLayout                         srcImageLayout,
3552                       VULKAN_HPP_NAMESPACE::Image                               dstImage,
3553                       VULKAN_HPP_NAMESPACE::ImageLayout                         dstImageLayout,
3554                       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT;
3555 
3556       void blitImage( VULKAN_HPP_NAMESPACE::Image                               srcImage,
3557                       VULKAN_HPP_NAMESPACE::ImageLayout                         srcImageLayout,
3558                       VULKAN_HPP_NAMESPACE::Image                               dstImage,
3559                       VULKAN_HPP_NAMESPACE::ImageLayout                         dstImageLayout,
3560                       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,
3561                       VULKAN_HPP_NAMESPACE::Filter                              filter ) const VULKAN_HPP_NOEXCEPT;
3562 
3563       void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer                                    srcBuffer,
3564                               VULKAN_HPP_NAMESPACE::Image                                     dstImage,
3565                               VULKAN_HPP_NAMESPACE::ImageLayout                               dstImageLayout,
3566                               ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const
3567         VULKAN_HPP_NOEXCEPT;
3568 
3569       void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image                                     srcImage,
3570                               VULKAN_HPP_NAMESPACE::ImageLayout                               srcImageLayout,
3571                               VULKAN_HPP_NAMESPACE::Buffer                                    dstBuffer,
3572                               ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const
3573         VULKAN_HPP_NOEXCEPT;
3574 
3575       template <typename T>
3576       void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
3577                          VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
3578                          ArrayProxy<const T> const &      data ) const VULKAN_HPP_NOEXCEPT;
3579 
3580       void fillBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
3581                        VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
3582                        VULKAN_HPP_NAMESPACE::DeviceSize size,
3583                        uint32_t                         data ) const VULKAN_HPP_NOEXCEPT;
3584 
3585       void clearColorImage( VULKAN_HPP_NAMESPACE::Image                                           image,
3586                             VULKAN_HPP_NAMESPACE::ImageLayout                                     imageLayout,
3587                             const ClearColorValue &                                               color,
3588                             ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const
3589         VULKAN_HPP_NOEXCEPT;
3590 
3591       void clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image                                           image,
3592                                    VULKAN_HPP_NAMESPACE::ImageLayout                                     imageLayout,
3593                                    const ClearDepthStencilValue &                                        depthStencil,
3594                                    ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const
3595         VULKAN_HPP_NOEXCEPT;
3596 
3597       void
3598         clearAttachments( ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,
3599                           ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const & rects ) const VULKAN_HPP_NOEXCEPT;
3600 
3601       void
3602         resolveImage( VULKAN_HPP_NAMESPACE::Image                                  srcImage,
3603                       VULKAN_HPP_NAMESPACE::ImageLayout                            srcImageLayout,
3604                       VULKAN_HPP_NAMESPACE::Image                                  dstImage,
3605                       VULKAN_HPP_NAMESPACE::ImageLayout                            dstImageLayout,
3606                       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions ) const VULKAN_HPP_NOEXCEPT;
3607 
3608       void setEvent( VULKAN_HPP_NAMESPACE::Event              event,
3609                      VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT;
3610 
3611       void resetEvent( VULKAN_HPP_NAMESPACE::Event              event,
3612                        VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT;
3613 
3614       void waitEvents( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &               events,
3615                        VULKAN_HPP_NAMESPACE::PipelineStageFlags                            srcStageMask,
3616                        VULKAN_HPP_NAMESPACE::PipelineStageFlags                            dstStageMask,
3617                        ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
3618                        ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
3619                        ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const &  imageMemoryBarriers ) const
3620         VULKAN_HPP_NOEXCEPT;
3621 
3622       void pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags                            srcStageMask,
3623                             VULKAN_HPP_NAMESPACE::PipelineStageFlags                            dstStageMask,
3624                             VULKAN_HPP_NAMESPACE::DependencyFlags                               dependencyFlags,
3625                             ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
3626                             ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
3627                             ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const &  imageMemoryBarriers )
3628         const VULKAN_HPP_NOEXCEPT;
3629 
3630       void beginQuery( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
3631                        uint32_t                                query,
3632                        VULKAN_HPP_NAMESPACE::QueryControlFlags flags
3633                                                                VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
3634 
3635       void endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT;
3636 
3637       void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
3638                            uint32_t                        firstQuery,
3639                            uint32_t                        queryCount ) const VULKAN_HPP_NOEXCEPT;
3640 
3641       void writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
3642                            VULKAN_HPP_NAMESPACE::QueryPool             queryPool,
3643                            uint32_t                                    query ) const VULKAN_HPP_NOEXCEPT;
3644 
3645       void copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool        queryPool,
3646                                  uint32_t                               firstQuery,
3647                                  uint32_t                               queryCount,
3648                                  VULKAN_HPP_NAMESPACE::Buffer           dstBuffer,
3649                                  VULKAN_HPP_NAMESPACE::DeviceSize       dstOffset,
3650                                  VULKAN_HPP_NAMESPACE::DeviceSize       stride,
3651                                  VULKAN_HPP_NAMESPACE::QueryResultFlags flags
3652                                                                         VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
3653 
3654       template <typename T>
3655       void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout   layout,
3656                           VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags,
3657                           uint32_t                               offset,
3658                           ArrayProxy<const T> const &            values ) const VULKAN_HPP_NOEXCEPT;
3659 
3660       void beginRenderPass( const RenderPassBeginInfo &           renderPassBegin,
3661                             VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT;
3662 
3663       void nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT;
3664 
3665       void endRenderPass() const VULKAN_HPP_NOEXCEPT;
3666 
3667       void executeCommands( ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers ) const
3668         VULKAN_HPP_NOEXCEPT;
3669 
3670       //=== VK_VERSION_1_1 ===
3671 
3672       void setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT;
3673 
3674       void dispatchBase( uint32_t baseGroupX,
3675                          uint32_t baseGroupY,
3676                          uint32_t baseGroupZ,
3677                          uint32_t groupCountX,
3678                          uint32_t groupCountY,
3679                          uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
3680 
3681       //=== VK_VERSION_1_2 ===
3682 
3683       void drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3684                               VULKAN_HPP_NAMESPACE::DeviceSize offset,
3685                               VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
3686                               VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
3687                               uint32_t                         maxDrawCount,
3688                               uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3689 
3690       void drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3691                                      VULKAN_HPP_NAMESPACE::DeviceSize offset,
3692                                      VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
3693                                      VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
3694                                      uint32_t                         maxDrawCount,
3695                                      uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3696 
3697       void beginRenderPass2( const RenderPassBeginInfo & renderPassBegin,
3698                              const SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT;
3699 
3700       void nextSubpass2( const SubpassBeginInfo & subpassBeginInfo,
3701                          const SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
3702 
3703       void endRenderPass2( const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
3704 
3705       //=== VK_EXT_debug_marker ===
3706 
3707       void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT;
3708 
3709       void debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT;
3710 
3711       void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT;
3712 
3713 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
3714       //=== VK_KHR_video_queue ===
3715 
3716       void beginVideoCodingKHR( const VideoBeginCodingInfoKHR & beginInfo ) const VULKAN_HPP_NOEXCEPT;
3717 
3718       void endVideoCodingKHR( const VideoEndCodingInfoKHR & endCodingInfo ) const VULKAN_HPP_NOEXCEPT;
3719 
3720       void controlVideoCodingKHR( const VideoCodingControlInfoKHR & codingControlInfo ) const VULKAN_HPP_NOEXCEPT;
3721 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
3722 
3723 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
3724       //=== VK_KHR_video_decode_queue ===
3725 
3726       void decodeVideoKHR( const VideoDecodeInfoKHR & frameInfo ) const VULKAN_HPP_NOEXCEPT;
3727 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
3728 
3729       //=== VK_EXT_transform_feedback ===
3730 
3731       void bindTransformFeedbackBuffersEXT( uint32_t                                                   firstBinding,
3732                                             ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
3733                                             ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
3734                                             ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes
3735                                                                                                        VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const
3736         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3737 
3738       void beginTransformFeedbackEXT( uint32_t                                                   firstCounterBuffer,
3739                                       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     counterBuffers,
3740                                       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets
3741                                                                                                  VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const
3742         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3743 
3744       void endTransformFeedbackEXT( uint32_t                                                   firstCounterBuffer,
3745                                     ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     counterBuffers,
3746                                     ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets
3747                                                                                                VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const
3748         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3749 
3750       void beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
3751                                  uint32_t                                query,
3752                                  VULKAN_HPP_NAMESPACE::QueryControlFlags flags,
3753                                  uint32_t                                index ) const VULKAN_HPP_NOEXCEPT;
3754 
3755       void endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
3756                                uint32_t                        query,
3757                                uint32_t                        index ) const VULKAN_HPP_NOEXCEPT;
3758 
3759       void drawIndirectByteCountEXT( uint32_t                         instanceCount,
3760                                      uint32_t                         firstInstance,
3761                                      VULKAN_HPP_NAMESPACE::Buffer     counterBuffer,
3762                                      VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,
3763                                      uint32_t                         counterOffset,
3764                                      uint32_t                         vertexStride ) const VULKAN_HPP_NOEXCEPT;
3765 
3766       //=== VK_NVX_binary_import ===
3767 
3768       void cuLaunchKernelNVX( const CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT;
3769 
3770       //=== VK_AMD_draw_indirect_count ===
3771 
3772       void drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3773                                  VULKAN_HPP_NAMESPACE::DeviceSize offset,
3774                                  VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
3775                                  VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
3776                                  uint32_t                         maxDrawCount,
3777                                  uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3778 
3779       void drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3780                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
3781                                         VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
3782                                         VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
3783                                         uint32_t                         maxDrawCount,
3784                                         uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3785 
3786       //=== VK_KHR_device_group ===
3787 
3788       void setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT;
3789 
3790       void dispatchBaseKHR( uint32_t baseGroupX,
3791                             uint32_t baseGroupY,
3792                             uint32_t baseGroupZ,
3793                             uint32_t groupCountX,
3794                             uint32_t groupCountY,
3795                             uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT;
3796 
3797       //=== VK_KHR_push_descriptor ===
3798 
3799       void pushDescriptorSetKHR(
3800         VULKAN_HPP_NAMESPACE::PipelineBindPoint                            pipelineBindPoint,
3801         VULKAN_HPP_NAMESPACE::PipelineLayout                               layout,
3802         uint32_t                                                           set,
3803         ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT;
3804 
3805       void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
3806                                              VULKAN_HPP_NAMESPACE::PipelineLayout           layout,
3807                                              uint32_t                                       set,
3808                                              const void * pData ) const VULKAN_HPP_NOEXCEPT;
3809 
3810       //=== VK_EXT_conditional_rendering ===
3811 
3812       void beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin ) const
3813         VULKAN_HPP_NOEXCEPT;
3814 
3815       void endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT;
3816 
3817       //=== VK_NV_clip_space_w_scaling ===
3818 
3819       void setViewportWScalingNV( uint32_t                                                           firstViewport,
3820                                   ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings )
3821         const VULKAN_HPP_NOEXCEPT;
3822 
3823       //=== VK_EXT_discard_rectangles ===
3824 
3825       void setDiscardRectangleEXT( uint32_t                                               firstDiscardRectangle,
3826                                    ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles ) const
3827         VULKAN_HPP_NOEXCEPT;
3828 
3829       //=== VK_KHR_create_renderpass2 ===
3830 
3831       void beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin,
3832                                 const SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT;
3833 
3834       void nextSubpass2KHR( const SubpassBeginInfo & subpassBeginInfo,
3835                             const SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
3836 
3837       void endRenderPass2KHR( const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT;
3838 
3839       //=== VK_EXT_debug_utils ===
3840 
3841       void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
3842 
3843       void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT;
3844 
3845       void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
3846 
3847       //=== VK_EXT_sample_locations ===
3848 
3849       void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT;
3850 
3851       //=== VK_KHR_acceleration_structure ===
3852 
3853       void buildAccelerationStructuresKHR(
3854         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
3855         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const &
3856           pBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3857 
3858       void buildAccelerationStructuresIndirectKHR(
3859         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
3860         ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const & indirectDeviceAddresses,
3861         ArrayProxy<const uint32_t> const &                            indirectStrides,
3862         ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
3863 
3864       void copyAccelerationStructureKHR( const CopyAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT;
3865 
3866       void copyAccelerationStructureToMemoryKHR( const CopyAccelerationStructureToMemoryInfoKHR & info ) const
3867         VULKAN_HPP_NOEXCEPT;
3868 
3869       void copyMemoryToAccelerationStructureKHR( const CopyMemoryToAccelerationStructureInfoKHR & info ) const
3870         VULKAN_HPP_NOEXCEPT;
3871 
3872       void writeAccelerationStructuresPropertiesKHR(
3873         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
3874         VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
3875         VULKAN_HPP_NAMESPACE::QueryPool                                          queryPool,
3876         uint32_t                                                                 firstQuery ) const VULKAN_HPP_NOEXCEPT;
3877 
3878       //=== VK_NV_shading_rate_image ===
3879 
3880       void bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView   imageView,
3881                                    VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT;
3882 
3883       void setViewportShadingRatePaletteNV( uint32_t firstViewport,
3884                                             ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const &
3885                                               shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT;
3886 
3887       void setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType,
3888                                    ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const &
3889                                      customSampleOrders ) const VULKAN_HPP_NOEXCEPT;
3890 
3891       //=== VK_NV_ray_tracing ===
3892 
3893       void buildAccelerationStructureNV( const AccelerationStructureInfoNV &           info,
3894                                          VULKAN_HPP_NAMESPACE::Buffer                  instanceData,
3895                                          VULKAN_HPP_NAMESPACE::DeviceSize              instanceOffset,
3896                                          VULKAN_HPP_NAMESPACE::Bool32                  update,
3897                                          VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,
3898                                          VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,
3899                                          VULKAN_HPP_NAMESPACE::Buffer                  scratch,
3900                                          VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT;
3901 
3902       void copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV          dst,
3903                                         VULKAN_HPP_NAMESPACE::AccelerationStructureNV          src,
3904                                         VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode ) const
3905         VULKAN_HPP_NOEXCEPT;
3906 
3907       void traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer     raygenShaderBindingTableBuffer,
3908                         VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset,
3909                         VULKAN_HPP_NAMESPACE::Buffer     missShaderBindingTableBuffer,
3910                         VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset,
3911                         VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride,
3912                         VULKAN_HPP_NAMESPACE::Buffer     hitShaderBindingTableBuffer,
3913                         VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset,
3914                         VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride,
3915                         VULKAN_HPP_NAMESPACE::Buffer     callableShaderBindingTableBuffer,
3916                         VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset,
3917                         VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride,
3918                         uint32_t                         width,
3919                         uint32_t                         height,
3920                         uint32_t                         depth ) const VULKAN_HPP_NOEXCEPT;
3921 
3922       void writeAccelerationStructuresPropertiesNV(
3923         ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,
3924         VULKAN_HPP_NAMESPACE::QueryType                                         queryType,
3925         VULKAN_HPP_NAMESPACE::QueryPool                                         queryPool,
3926         uint32_t                                                                firstQuery ) const VULKAN_HPP_NOEXCEPT;
3927 
3928       //=== VK_KHR_draw_indirect_count ===
3929 
3930       void drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3931                                  VULKAN_HPP_NAMESPACE::DeviceSize offset,
3932                                  VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
3933                                  VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
3934                                  uint32_t                         maxDrawCount,
3935                                  uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3936 
3937       void drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3938                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
3939                                         VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
3940                                         VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
3941                                         uint32_t                         maxDrawCount,
3942                                         uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3943 
3944       //=== VK_AMD_buffer_marker ===
3945 
3946       void writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
3947                                  VULKAN_HPP_NAMESPACE::Buffer                dstBuffer,
3948                                  VULKAN_HPP_NAMESPACE::DeviceSize            dstOffset,
3949                                  uint32_t                                    marker ) const VULKAN_HPP_NOEXCEPT;
3950 
3951       //=== VK_NV_mesh_shader ===
3952 
3953       void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT;
3954 
3955       void drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3956                                     VULKAN_HPP_NAMESPACE::DeviceSize offset,
3957                                     uint32_t                         drawCount,
3958                                     uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3959 
3960       void drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
3961                                          VULKAN_HPP_NAMESPACE::DeviceSize offset,
3962                                          VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
3963                                          VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
3964                                          uint32_t                         maxDrawCount,
3965                                          uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT;
3966 
3967       //=== VK_NV_scissor_exclusive ===
3968 
3969       void setExclusiveScissorNV( uint32_t                                               firstExclusiveScissor,
3970                                   ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors ) const
3971         VULKAN_HPP_NOEXCEPT;
3972 
3973       //=== VK_NV_device_diagnostic_checkpoints ===
3974 
3975       void setCheckpointNV( const void * pCheckpointMarker ) const VULKAN_HPP_NOEXCEPT;
3976 
3977       //=== VK_INTEL_performance_query ===
3978 
3979       void setPerformanceMarkerINTEL( const PerformanceMarkerInfoINTEL & markerInfo ) const;
3980 
3981       void setPerformanceStreamMarkerINTEL( const PerformanceStreamMarkerInfoINTEL & markerInfo ) const;
3982 
3983       void setPerformanceOverrideINTEL( const PerformanceOverrideInfoINTEL & overrideInfo ) const;
3984 
3985       //=== VK_KHR_fragment_shading_rate ===
3986 
3987       void setFragmentShadingRateKHR(
3988         const Extent2D &                                             fragmentSize,
3989         const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT;
3990 
3991       //=== VK_EXT_line_rasterization ===
3992 
3993       void setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT;
3994 
3995       //=== VK_EXT_extended_dynamic_state ===
3996 
3997       void setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
3998         VULKAN_HPP_NOEXCEPT;
3999 
4000       void setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT;
4001 
4002       void
4003         setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT;
4004 
4005       void setViewportWithCountEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const
4006         VULKAN_HPP_NOEXCEPT;
4007 
4008       void setScissorWithCountEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const
4009         VULKAN_HPP_NOEXCEPT;
4010 
4011       void bindVertexBuffers2EXT(
4012         uint32_t                                                   firstBinding,
4013         ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
4014         ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
4015         ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT,
4016         ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const &       strides
4017                                                                          VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4018 
4019       void setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT;
4020 
4021       void setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT;
4022 
4023       void setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT;
4024 
4025       void setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT;
4026 
4027       void setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT;
4028 
4029       void setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
4030                             VULKAN_HPP_NAMESPACE::StencilOp        failOp,
4031                             VULKAN_HPP_NAMESPACE::StencilOp        passOp,
4032                             VULKAN_HPP_NAMESPACE::StencilOp        depthFailOp,
4033                             VULKAN_HPP_NAMESPACE::CompareOp        compareOp ) const VULKAN_HPP_NOEXCEPT;
4034 
4035       //=== VK_NV_device_generated_commands ===
4036 
4037       void preprocessGeneratedCommandsNV( const GeneratedCommandsInfoNV & generatedCommandsInfo ) const
4038         VULKAN_HPP_NOEXCEPT;
4039 
4040       void
4041         executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32    isPreprocessed,
4042                                     const GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT;
4043 
4044       void bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
4045                                       VULKAN_HPP_NAMESPACE::Pipeline          pipeline,
4046                                       uint32_t                                groupIndex ) const VULKAN_HPP_NOEXCEPT;
4047 
4048 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
4049       //=== VK_KHR_video_encode_queue ===
4050 
4051       void encodeVideoKHR( const VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT;
4052 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
4053 
4054       //=== VK_KHR_synchronization2 ===
4055 
4056       void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event,
4057                          const DependencyInfoKHR &   dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
4058 
4059       void resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event                  event,
4060                            VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask ) const VULKAN_HPP_NOEXCEPT;
4061 
4062       void waitEvents2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &             events,
4063                            ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfoKHR> const & dependencyInfos ) const
4064         VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS;
4065 
4066       void pipelineBarrier2KHR( const DependencyInfoKHR & dependencyInfo ) const VULKAN_HPP_NOEXCEPT;
4067 
4068       void writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,
4069                                VULKAN_HPP_NAMESPACE::QueryPool              queryPool,
4070                                uint32_t                                     query ) const VULKAN_HPP_NOEXCEPT;
4071 
4072       void writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,
4073                                   VULKAN_HPP_NAMESPACE::Buffer                 dstBuffer,
4074                                   VULKAN_HPP_NAMESPACE::DeviceSize             dstOffset,
4075                                   uint32_t                                     marker ) const VULKAN_HPP_NOEXCEPT;
4076 
4077       //=== VK_NV_fragment_shading_rate_enums ===
4078 
4079       void setFragmentShadingRateEnumNV(
4080         VULKAN_HPP_NAMESPACE::FragmentShadingRateNV                  shadingRate,
4081         const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT;
4082 
4083       //=== VK_KHR_copy_commands2 ===
4084 
4085       void copyBuffer2KHR( const CopyBufferInfo2KHR & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT;
4086 
4087       void copyImage2KHR( const CopyImageInfo2KHR & copyImageInfo ) const VULKAN_HPP_NOEXCEPT;
4088 
4089       void copyBufferToImage2KHR( const CopyBufferToImageInfo2KHR & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT;
4090 
4091       void copyImageToBuffer2KHR( const CopyImageToBufferInfo2KHR & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT;
4092 
4093       void blitImage2KHR( const BlitImageInfo2KHR & blitImageInfo ) const VULKAN_HPP_NOEXCEPT;
4094 
4095       void resolveImage2KHR( const ResolveImageInfo2KHR & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT;
4096 
4097       //=== VK_KHR_ray_tracing_pipeline ===
4098 
4099       void traceRaysKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
4100                          const StridedDeviceAddressRegionKHR & missShaderBindingTable,
4101                          const StridedDeviceAddressRegionKHR & hitShaderBindingTable,
4102                          const StridedDeviceAddressRegionKHR & callableShaderBindingTable,
4103                          uint32_t                              width,
4104                          uint32_t                              height,
4105                          uint32_t                              depth ) const VULKAN_HPP_NOEXCEPT;
4106 
4107       void traceRaysIndirectKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
4108                                  const StridedDeviceAddressRegionKHR & missShaderBindingTable,
4109                                  const StridedDeviceAddressRegionKHR & hitShaderBindingTable,
4110                                  const StridedDeviceAddressRegionKHR & callableShaderBindingTable,
4111                                  VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT;
4112 
4113       void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT;
4114 
4115       //=== VK_EXT_vertex_input_dynamic_state ===
4116 
4117       void setVertexInputEXT(
4118         ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const & vertexBindingDescriptions,
4119         ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const &
4120           vertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT;
4121 
4122       //=== VK_HUAWEI_subpass_shading ===
4123 
4124       void subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT;
4125 
4126       //=== VK_EXT_extended_dynamic_state2 ===
4127 
4128       void setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT;
4129 
4130       void
4131         setRasterizerDiscardEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT;
4132 
4133       void setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT;
4134 
4135       void setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT;
4136 
4137       void
4138         setPrimitiveRestartEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT;
4139 
4140       //=== VK_EXT_color_write_enable ===
4141 
4142       void setColorWriteEnableEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables ) const
4143         VULKAN_HPP_NOEXCEPT;
4144 
4145       //=== VK_EXT_multi_draw ===
4146 
4147       void drawMultiEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,
4148                          uint32_t                                                         instanceCount,
4149                          uint32_t                                                         firstInstance,
4150                          uint32_t stride ) const VULKAN_HPP_NOEXCEPT;
4151 
4152       void drawMultiIndexedEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,
4153                                 uint32_t                                                                instanceCount,
4154                                 uint32_t                                                                firstInstance,
4155                                 uint32_t                                                                stride,
4156                                 Optional<const int32_t>                                                 vertexOffset
4157                                                                                                         VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT;
4158 
4159     private:
4160       VULKAN_HPP_NAMESPACE::CommandBuffer                                       m_commandBuffer;
4161       VkDevice                                                                  m_device;
4162       VkCommandPool                                                             m_commandPool;
4163       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
4164     };
4165 
4166     class CommandBuffers : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::CommandBuffer>
4167     {
4168     public:
CommandBuffers(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & allocateInfo)4169       CommandBuffers( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
4170                       VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const &         allocateInfo )
4171       {
4172         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
4173         std::vector<VkCommandBuffer> commandBuffers( allocateInfo.commandBufferCount );
4174         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
4175           dispatcher->vkAllocateCommandBuffers( static_cast<VkDevice>( *device ),
4176                                                 reinterpret_cast<const VkCommandBufferAllocateInfo *>( &allocateInfo ),
4177                                                 commandBuffers.data() ) );
4178         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
4179         {
4180           this->reserve( allocateInfo.commandBufferCount );
4181           for ( auto const & commandBuffer : commandBuffers )
4182           {
4183             this->emplace_back( commandBuffer,
4184                                 static_cast<VkDevice>( *device ),
4185                                 static_cast<VkCommandPool>( allocateInfo.commandPool ),
4186                                 dispatcher );
4187           }
4188         }
4189         else
4190         {
4191           throwResultException( result, "vkAllocateCommandBuffers" );
4192         }
4193       }
4194 
4195 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
4196       CommandBuffers() = default;
4197 #  else
4198       CommandBuffers()                = delete;
4199 #  endif
4200       CommandBuffers( CommandBuffers const & ) = delete;
4201       CommandBuffers( CommandBuffers && rhs )  = default;
4202       CommandBuffers & operator=( CommandBuffers const & ) = delete;
4203       CommandBuffers & operator=( CommandBuffers && rhs ) = default;
4204     };
4205 
4206     class CuFunctionNVX
4207     {
4208     public:
4209       using CType = VkCuFunctionNVX;
4210 
4211       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4212         VULKAN_HPP_NAMESPACE::ObjectType::eCuFunctionNVX;
4213       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4214         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuFunctionNVX;
4215 
4216     public:
CuFunctionNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4217       CuFunctionNVX(
4218         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4219         VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const &                           createInfo,
4220         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4221         : m_device( *device )
4222         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4223             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4224         , m_dispatcher( device.getDispatcher() )
4225       {
4226         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
4227           getDispatcher()->vkCreateCuFunctionNVX( static_cast<VkDevice>( *device ),
4228                                                   reinterpret_cast<const VkCuFunctionCreateInfoNVX *>( &createInfo ),
4229                                                   m_allocator,
4230                                                   reinterpret_cast<VkCuFunctionNVX *>( &m_cuFunctionNVX ) ) );
4231         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4232         {
4233           throwResultException( result, "vkCreateCuFunctionNVX" );
4234         }
4235       }
4236 
CuFunctionNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCuFunctionNVX cuFunctionNVX,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4237       CuFunctionNVX(
4238         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4239         VkCuFunctionNVX                                                                 cuFunctionNVX,
4240         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4241         : m_cuFunctionNVX( cuFunctionNVX )
4242         , m_device( *device )
4243         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4244             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4245         , m_dispatcher( device.getDispatcher() )
4246       {}
4247 
~CuFunctionNVX()4248       ~CuFunctionNVX()
4249       {
4250         if ( m_cuFunctionNVX )
4251         {
4252           getDispatcher()->vkDestroyCuFunctionNVX(
4253             m_device, static_cast<VkCuFunctionNVX>( m_cuFunctionNVX ), m_allocator );
4254         }
4255       }
4256 
4257 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
4258       CuFunctionNVX() = default;
4259 #  else
4260       CuFunctionNVX()                 = delete;
4261 #  endif
4262       CuFunctionNVX( CuFunctionNVX const & ) = delete;
CuFunctionNVX(CuFunctionNVX && rhs)4263       CuFunctionNVX( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT
4264         : m_cuFunctionNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_cuFunctionNVX, {} ) )
4265         , m_device( rhs.m_device )
4266         , m_allocator( rhs.m_allocator )
4267         , m_dispatcher( rhs.m_dispatcher )
4268       {}
4269       CuFunctionNVX & operator=( CuFunctionNVX const & ) = delete;
operator =(CuFunctionNVX && rhs)4270       CuFunctionNVX & operator                           =( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT
4271       {
4272         if ( this != &rhs )
4273         {
4274           if ( m_cuFunctionNVX )
4275           {
4276             getDispatcher()->vkDestroyCuFunctionNVX(
4277               m_device, static_cast<VkCuFunctionNVX>( m_cuFunctionNVX ), m_allocator );
4278           }
4279           m_cuFunctionNVX = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_cuFunctionNVX, {} );
4280           m_device        = rhs.m_device;
4281           m_allocator     = rhs.m_allocator;
4282           m_dispatcher    = rhs.m_dispatcher;
4283         }
4284         return *this;
4285       }
4286 
operator *() const4287       VULKAN_HPP_NAMESPACE::CuFunctionNVX const & operator*() const VULKAN_HPP_NOEXCEPT
4288       {
4289         return m_cuFunctionNVX;
4290       }
4291 
getDispatcher() const4292       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4293       {
4294         return m_dispatcher;
4295       }
4296 
4297 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const4298       explicit operator bool() const VULKAN_HPP_NOEXCEPT
4299       {
4300         return m_cuFunctionNVX.operator bool();
4301       }
4302 
operator !() const4303       bool operator!() const VULKAN_HPP_NOEXCEPT
4304       {
4305         return m_cuFunctionNVX.operator!();
4306       }
4307 #  endif
4308 
4309     private:
4310       VULKAN_HPP_NAMESPACE::CuFunctionNVX                                       m_cuFunctionNVX;
4311       VkDevice                                                                  m_device;
4312       const VkAllocationCallbacks *                                             m_allocator;
4313       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
4314     };
4315 
4316     class CuModuleNVX
4317     {
4318     public:
4319       using CType = VkCuModuleNVX;
4320 
4321       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4322         VULKAN_HPP_NAMESPACE::ObjectType::eCuModuleNVX;
4323       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4324         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCuModuleNVX;
4325 
4326     public:
CuModuleNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4327       CuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4328                    VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const &                             createInfo,
4329                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4330         : m_device( *device )
4331         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4332             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4333         , m_dispatcher( device.getDispatcher() )
4334       {
4335         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
4336           getDispatcher()->vkCreateCuModuleNVX( static_cast<VkDevice>( *device ),
4337                                                 reinterpret_cast<const VkCuModuleCreateInfoNVX *>( &createInfo ),
4338                                                 m_allocator,
4339                                                 reinterpret_cast<VkCuModuleNVX *>( &m_cuModuleNVX ) ) );
4340         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4341         {
4342           throwResultException( result, "vkCreateCuModuleNVX" );
4343         }
4344       }
4345 
CuModuleNVX(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkCuModuleNVX cuModuleNVX,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4346       CuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4347                    VkCuModuleNVX                                                                   cuModuleNVX,
4348                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4349         : m_cuModuleNVX( cuModuleNVX )
4350         , m_device( *device )
4351         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4352             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4353         , m_dispatcher( device.getDispatcher() )
4354       {}
4355 
~CuModuleNVX()4356       ~CuModuleNVX()
4357       {
4358         if ( m_cuModuleNVX )
4359         {
4360           getDispatcher()->vkDestroyCuModuleNVX( m_device, static_cast<VkCuModuleNVX>( m_cuModuleNVX ), m_allocator );
4361         }
4362       }
4363 
4364 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
4365       CuModuleNVX() = default;
4366 #  else
4367       CuModuleNVX()                   = delete;
4368 #  endif
4369       CuModuleNVX( CuModuleNVX const & ) = delete;
CuModuleNVX(CuModuleNVX && rhs)4370       CuModuleNVX( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT
4371         : m_cuModuleNVX( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_cuModuleNVX, {} ) )
4372         , m_device( rhs.m_device )
4373         , m_allocator( rhs.m_allocator )
4374         , m_dispatcher( rhs.m_dispatcher )
4375       {}
4376       CuModuleNVX & operator=( CuModuleNVX const & ) = delete;
operator =(CuModuleNVX && rhs)4377       CuModuleNVX & operator                         =( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT
4378       {
4379         if ( this != &rhs )
4380         {
4381           if ( m_cuModuleNVX )
4382           {
4383             getDispatcher()->vkDestroyCuModuleNVX( m_device, static_cast<VkCuModuleNVX>( m_cuModuleNVX ), m_allocator );
4384           }
4385           m_cuModuleNVX = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_cuModuleNVX, {} );
4386           m_device      = rhs.m_device;
4387           m_allocator   = rhs.m_allocator;
4388           m_dispatcher  = rhs.m_dispatcher;
4389         }
4390         return *this;
4391       }
4392 
operator *() const4393       VULKAN_HPP_NAMESPACE::CuModuleNVX const & operator*() const VULKAN_HPP_NOEXCEPT
4394       {
4395         return m_cuModuleNVX;
4396       }
4397 
getDispatcher() const4398       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4399       {
4400         return m_dispatcher;
4401       }
4402 
4403 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const4404       explicit operator bool() const VULKAN_HPP_NOEXCEPT
4405       {
4406         return m_cuModuleNVX.operator bool();
4407       }
4408 
operator !() const4409       bool operator!() const VULKAN_HPP_NOEXCEPT
4410       {
4411         return m_cuModuleNVX.operator!();
4412       }
4413 #  endif
4414 
4415     private:
4416       VULKAN_HPP_NAMESPACE::CuModuleNVX                                         m_cuModuleNVX;
4417       VkDevice                                                                  m_device;
4418       const VkAllocationCallbacks *                                             m_allocator;
4419       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
4420     };
4421 
4422     class DebugReportCallbackEXT
4423     {
4424     public:
4425       using CType = VkDebugReportCallbackEXT;
4426 
4427       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4428         VULKAN_HPP_NAMESPACE::ObjectType::eDebugReportCallbackEXT;
4429       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4430         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDebugReportCallbackEXT;
4431 
4432     public:
DebugReportCallbackEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4433       DebugReportCallbackEXT(
4434         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
4435         VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const &                  createInfo,
4436         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4437         : m_instance( *instance )
4438         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4439             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4440         , m_dispatcher( instance.getDispatcher() )
4441       {
4442         VULKAN_HPP_NAMESPACE::Result result =
4443           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDebugReportCallbackEXT(
4444             static_cast<VkInstance>( *instance ),
4445             reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT *>( &createInfo ),
4446             m_allocator,
4447             reinterpret_cast<VkDebugReportCallbackEXT *>( &m_debugReportCallbackEXT ) ) );
4448         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4449         {
4450           throwResultException( result, "vkCreateDebugReportCallbackEXT" );
4451         }
4452       }
4453 
DebugReportCallbackEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkDebugReportCallbackEXT debugReportCallbackEXT,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4454       DebugReportCallbackEXT(
4455         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
4456         VkDebugReportCallbackEXT                                                        debugReportCallbackEXT,
4457         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4458         : m_debugReportCallbackEXT( debugReportCallbackEXT )
4459         , m_instance( *instance )
4460         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4461             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4462         , m_dispatcher( instance.getDispatcher() )
4463       {}
4464 
~DebugReportCallbackEXT()4465       ~DebugReportCallbackEXT()
4466       {
4467         if ( m_debugReportCallbackEXT )
4468         {
4469           getDispatcher()->vkDestroyDebugReportCallbackEXT(
4470             m_instance, static_cast<VkDebugReportCallbackEXT>( m_debugReportCallbackEXT ), m_allocator );
4471         }
4472       }
4473 
4474 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
4475       DebugReportCallbackEXT() = default;
4476 #  else
4477       DebugReportCallbackEXT()        = delete;
4478 #  endif
4479       DebugReportCallbackEXT( DebugReportCallbackEXT const & ) = delete;
DebugReportCallbackEXT(DebugReportCallbackEXT && rhs)4480       DebugReportCallbackEXT( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT
4481         : m_debugReportCallbackEXT(
4482             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_debugReportCallbackEXT, {} ) )
4483         , m_instance( rhs.m_instance )
4484         , m_allocator( rhs.m_allocator )
4485         , m_dispatcher( rhs.m_dispatcher )
4486       {}
4487       DebugReportCallbackEXT & operator=( DebugReportCallbackEXT const & ) = delete;
operator =(DebugReportCallbackEXT && rhs)4488       DebugReportCallbackEXT & operator=( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT
4489       {
4490         if ( this != &rhs )
4491         {
4492           if ( m_debugReportCallbackEXT )
4493           {
4494             getDispatcher()->vkDestroyDebugReportCallbackEXT(
4495               m_instance, static_cast<VkDebugReportCallbackEXT>( m_debugReportCallbackEXT ), m_allocator );
4496           }
4497           m_debugReportCallbackEXT =
4498             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_debugReportCallbackEXT, {} );
4499           m_instance   = rhs.m_instance;
4500           m_allocator  = rhs.m_allocator;
4501           m_dispatcher = rhs.m_dispatcher;
4502         }
4503         return *this;
4504       }
4505 
operator *() const4506       VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & operator*() const VULKAN_HPP_NOEXCEPT
4507       {
4508         return m_debugReportCallbackEXT;
4509       }
4510 
getDispatcher() const4511       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
4512       {
4513         return m_dispatcher;
4514       }
4515 
4516 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const4517       explicit operator bool() const VULKAN_HPP_NOEXCEPT
4518       {
4519         return m_debugReportCallbackEXT.operator bool();
4520       }
4521 
operator !() const4522       bool operator!() const VULKAN_HPP_NOEXCEPT
4523       {
4524         return m_debugReportCallbackEXT.operator!();
4525       }
4526 #  endif
4527 
4528     private:
4529       VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT                                m_debugReportCallbackEXT;
4530       VkInstance                                                                  m_instance;
4531       const VkAllocationCallbacks *                                               m_allocator;
4532       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher;
4533     };
4534 
4535     class DebugUtilsMessengerEXT
4536     {
4537     public:
4538       using CType = VkDebugUtilsMessengerEXT;
4539 
4540       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4541         VULKAN_HPP_NAMESPACE::ObjectType::eDebugUtilsMessengerEXT;
4542       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4543         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
4544 
4545     public:
DebugUtilsMessengerEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4546       DebugUtilsMessengerEXT(
4547         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
4548         VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const &                  createInfo,
4549         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4550         : m_instance( *instance )
4551         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4552             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4553         , m_dispatcher( instance.getDispatcher() )
4554       {
4555         VULKAN_HPP_NAMESPACE::Result result =
4556           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDebugUtilsMessengerEXT(
4557             static_cast<VkInstance>( *instance ),
4558             reinterpret_cast<const VkDebugUtilsMessengerCreateInfoEXT *>( &createInfo ),
4559             m_allocator,
4560             reinterpret_cast<VkDebugUtilsMessengerEXT *>( &m_debugUtilsMessengerEXT ) ) );
4561         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4562         {
4563           throwResultException( result, "vkCreateDebugUtilsMessengerEXT" );
4564         }
4565       }
4566 
DebugUtilsMessengerEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkDebugUtilsMessengerEXT debugUtilsMessengerEXT,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4567       DebugUtilsMessengerEXT(
4568         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
4569         VkDebugUtilsMessengerEXT                                                        debugUtilsMessengerEXT,
4570         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4571         : m_debugUtilsMessengerEXT( debugUtilsMessengerEXT )
4572         , m_instance( *instance )
4573         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4574             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4575         , m_dispatcher( instance.getDispatcher() )
4576       {}
4577 
~DebugUtilsMessengerEXT()4578       ~DebugUtilsMessengerEXT()
4579       {
4580         if ( m_debugUtilsMessengerEXT )
4581         {
4582           getDispatcher()->vkDestroyDebugUtilsMessengerEXT(
4583             m_instance, static_cast<VkDebugUtilsMessengerEXT>( m_debugUtilsMessengerEXT ), m_allocator );
4584         }
4585       }
4586 
4587 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
4588       DebugUtilsMessengerEXT() = default;
4589 #  else
4590       DebugUtilsMessengerEXT()        = delete;
4591 #  endif
4592       DebugUtilsMessengerEXT( DebugUtilsMessengerEXT const & ) = delete;
DebugUtilsMessengerEXT(DebugUtilsMessengerEXT && rhs)4593       DebugUtilsMessengerEXT( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT
4594         : m_debugUtilsMessengerEXT(
4595             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_debugUtilsMessengerEXT, {} ) )
4596         , m_instance( rhs.m_instance )
4597         , m_allocator( rhs.m_allocator )
4598         , m_dispatcher( rhs.m_dispatcher )
4599       {}
4600       DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT const & ) = delete;
operator =(DebugUtilsMessengerEXT && rhs)4601       DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT
4602       {
4603         if ( this != &rhs )
4604         {
4605           if ( m_debugUtilsMessengerEXT )
4606           {
4607             getDispatcher()->vkDestroyDebugUtilsMessengerEXT(
4608               m_instance, static_cast<VkDebugUtilsMessengerEXT>( m_debugUtilsMessengerEXT ), m_allocator );
4609           }
4610           m_debugUtilsMessengerEXT =
4611             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_debugUtilsMessengerEXT, {} );
4612           m_instance   = rhs.m_instance;
4613           m_allocator  = rhs.m_allocator;
4614           m_dispatcher = rhs.m_dispatcher;
4615         }
4616         return *this;
4617       }
4618 
operator *() const4619       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & operator*() const VULKAN_HPP_NOEXCEPT
4620       {
4621         return m_debugUtilsMessengerEXT;
4622       }
4623 
getDispatcher() const4624       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
4625       {
4626         return m_dispatcher;
4627       }
4628 
4629 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const4630       explicit operator bool() const VULKAN_HPP_NOEXCEPT
4631       {
4632         return m_debugUtilsMessengerEXT.operator bool();
4633       }
4634 
operator !() const4635       bool operator!() const VULKAN_HPP_NOEXCEPT
4636       {
4637         return m_debugUtilsMessengerEXT.operator!();
4638       }
4639 #  endif
4640 
4641     private:
4642       VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT                                m_debugUtilsMessengerEXT;
4643       VkInstance                                                                  m_instance;
4644       const VkAllocationCallbacks *                                               m_allocator;
4645       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher;
4646     };
4647 
4648     class DeferredOperationKHR
4649     {
4650     public:
4651       using CType = VkDeferredOperationKHR;
4652 
4653       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4654         VULKAN_HPP_NAMESPACE::ObjectType::eDeferredOperationKHR;
4655       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4656         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
4657 
4658     public:
DeferredOperationKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4659       DeferredOperationKHR(
4660         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4661         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4662         : m_device( *device )
4663         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4664             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4665         , m_dispatcher( device.getDispatcher() )
4666       {
4667         VULKAN_HPP_NAMESPACE::Result result =
4668           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDeferredOperationKHR(
4669             static_cast<VkDevice>( *device ),
4670             m_allocator,
4671             reinterpret_cast<VkDeferredOperationKHR *>( &m_deferredOperationKHR ) ) );
4672         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4673         {
4674           throwResultException( result, "vkCreateDeferredOperationKHR" );
4675         }
4676       }
4677 
DeferredOperationKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDeferredOperationKHR deferredOperationKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4678       DeferredOperationKHR(
4679         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4680         VkDeferredOperationKHR                                                          deferredOperationKHR,
4681         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4682         : m_deferredOperationKHR( deferredOperationKHR )
4683         , m_device( *device )
4684         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4685             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4686         , m_dispatcher( device.getDispatcher() )
4687       {}
4688 
~DeferredOperationKHR()4689       ~DeferredOperationKHR()
4690       {
4691         if ( m_deferredOperationKHR )
4692         {
4693           getDispatcher()->vkDestroyDeferredOperationKHR(
4694             m_device, static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ), m_allocator );
4695         }
4696       }
4697 
4698 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
4699       DeferredOperationKHR() = default;
4700 #  else
4701       DeferredOperationKHR()          = delete;
4702 #  endif
4703       DeferredOperationKHR( DeferredOperationKHR const & ) = delete;
DeferredOperationKHR(DeferredOperationKHR && rhs)4704       DeferredOperationKHR( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT
4705         : m_deferredOperationKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_deferredOperationKHR,
4706                                                                                              {} ) )
4707         , m_device( rhs.m_device )
4708         , m_allocator( rhs.m_allocator )
4709         , m_dispatcher( rhs.m_dispatcher )
4710       {}
4711       DeferredOperationKHR & operator=( DeferredOperationKHR const & ) = delete;
operator =(DeferredOperationKHR && rhs)4712       DeferredOperationKHR & operator=( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT
4713       {
4714         if ( this != &rhs )
4715         {
4716           if ( m_deferredOperationKHR )
4717           {
4718             getDispatcher()->vkDestroyDeferredOperationKHR(
4719               m_device, static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ), m_allocator );
4720           }
4721           m_deferredOperationKHR =
4722             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_deferredOperationKHR, {} );
4723           m_device     = rhs.m_device;
4724           m_allocator  = rhs.m_allocator;
4725           m_dispatcher = rhs.m_dispatcher;
4726         }
4727         return *this;
4728       }
4729 
operator *() const4730       VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & operator*() const VULKAN_HPP_NOEXCEPT
4731       {
4732         return m_deferredOperationKHR;
4733       }
4734 
getDispatcher() const4735       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4736       {
4737         return m_dispatcher;
4738       }
4739 
4740 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const4741       explicit operator bool() const VULKAN_HPP_NOEXCEPT
4742       {
4743         return m_deferredOperationKHR.operator bool();
4744       }
4745 
operator !() const4746       bool operator!() const VULKAN_HPP_NOEXCEPT
4747       {
4748         return m_deferredOperationKHR.operator!();
4749       }
4750 #  endif
4751 
4752       //=== VK_KHR_deferred_host_operations ===
4753 
4754       VULKAN_HPP_NODISCARD uint32_t getMaxConcurrency() const VULKAN_HPP_NOEXCEPT;
4755 
4756       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getResult() const VULKAN_HPP_NOEXCEPT;
4757 
4758       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result join() const;
4759 
4760     private:
4761       VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                m_deferredOperationKHR;
4762       VkDevice                                                                  m_device;
4763       const VkAllocationCallbacks *                                             m_allocator;
4764       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
4765     };
4766 
4767     class DescriptorPool
4768     {
4769     public:
4770       using CType = VkDescriptorPool;
4771 
4772       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4773         VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorPool;
4774       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4775         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorPool;
4776 
4777     public:
DescriptorPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4778       DescriptorPool(
4779         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4780         VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const &                          createInfo,
4781         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4782         : m_device( *device )
4783         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4784             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4785         , m_dispatcher( device.getDispatcher() )
4786       {
4787         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
4788           getDispatcher()->vkCreateDescriptorPool( static_cast<VkDevice>( *device ),
4789                                                    reinterpret_cast<const VkDescriptorPoolCreateInfo *>( &createInfo ),
4790                                                    m_allocator,
4791                                                    reinterpret_cast<VkDescriptorPool *>( &m_descriptorPool ) ) );
4792         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
4793         {
4794           throwResultException( result, "vkCreateDescriptorPool" );
4795         }
4796       }
4797 
DescriptorPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorPool descriptorPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)4798       DescriptorPool(
4799         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
4800         VkDescriptorPool                                                                descriptorPool,
4801         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
4802         : m_descriptorPool( descriptorPool )
4803         , m_device( *device )
4804         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
4805             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
4806         , m_dispatcher( device.getDispatcher() )
4807       {}
4808 
~DescriptorPool()4809       ~DescriptorPool()
4810       {
4811         if ( m_descriptorPool )
4812         {
4813           getDispatcher()->vkDestroyDescriptorPool(
4814             m_device, static_cast<VkDescriptorPool>( m_descriptorPool ), m_allocator );
4815         }
4816       }
4817 
4818 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
4819       DescriptorPool() = default;
4820 #  else
4821       DescriptorPool()                = delete;
4822 #  endif
4823       DescriptorPool( DescriptorPool const & ) = delete;
DescriptorPool(DescriptorPool && rhs)4824       DescriptorPool( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT
4825         : m_descriptorPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} ) )
4826         , m_device( rhs.m_device )
4827         , m_allocator( rhs.m_allocator )
4828         , m_dispatcher( rhs.m_dispatcher )
4829       {}
4830       DescriptorPool & operator=( DescriptorPool const & ) = delete;
operator =(DescriptorPool && rhs)4831       DescriptorPool & operator                            =( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT
4832       {
4833         if ( this != &rhs )
4834         {
4835           if ( m_descriptorPool )
4836           {
4837             getDispatcher()->vkDestroyDescriptorPool(
4838               m_device, static_cast<VkDescriptorPool>( m_descriptorPool ), m_allocator );
4839           }
4840           m_descriptorPool = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorPool, {} );
4841           m_device         = rhs.m_device;
4842           m_allocator      = rhs.m_allocator;
4843           m_dispatcher     = rhs.m_dispatcher;
4844         }
4845         return *this;
4846       }
4847 
operator *() const4848       VULKAN_HPP_NAMESPACE::DescriptorPool const & operator*() const VULKAN_HPP_NOEXCEPT
4849       {
4850         return m_descriptorPool;
4851       }
4852 
getDispatcher() const4853       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4854       {
4855         return m_dispatcher;
4856       }
4857 
4858 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const4859       explicit operator bool() const VULKAN_HPP_NOEXCEPT
4860       {
4861         return m_descriptorPool.operator bool();
4862       }
4863 
operator !() const4864       bool operator!() const VULKAN_HPP_NOEXCEPT
4865       {
4866         return m_descriptorPool.operator!();
4867       }
4868 #  endif
4869 
4870       //=== VK_VERSION_1_0 ===
4871 
4872       void reset( VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const
4873         VULKAN_HPP_NOEXCEPT;
4874 
4875     private:
4876       VULKAN_HPP_NAMESPACE::DescriptorPool                                      m_descriptorPool;
4877       VkDevice                                                                  m_device;
4878       const VkAllocationCallbacks *                                             m_allocator;
4879       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
4880     };
4881 
4882     class DescriptorSet
4883     {
4884     public:
4885       using CType = VkDescriptorSet;
4886 
4887       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
4888         VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSet;
4889       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
4890         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSet;
4891 
4892     public:
DescriptorSet(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorSet descriptorSet,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool const & descriptorPool)4893       DescriptorSet( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &         device,
4894                      VkDescriptorSet                                                         descriptorSet,
4895                      VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorPool const & descriptorPool )
4896         : m_descriptorSet( descriptorSet )
4897         , m_device( *device )
4898         , m_descriptorPool( *descriptorPool )
4899         , m_dispatcher( device.getDispatcher() )
4900       {}
4901 
DescriptorSet(VkDescriptorSet descriptorSet,VkDevice device,VkDescriptorPool descriptorPool,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher)4902       DescriptorSet( VkDescriptorSet                                                           descriptorSet,
4903                      VkDevice                                                                  device,
4904                      VkDescriptorPool                                                          descriptorPool,
4905                      VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher )
4906         : m_descriptorSet( descriptorSet )
4907         , m_device( device )
4908         , m_descriptorPool( descriptorPool )
4909         , m_dispatcher( dispatcher )
4910       {}
4911 
~DescriptorSet()4912       ~DescriptorSet()
4913       {
4914         if ( m_descriptorSet )
4915         {
4916           getDispatcher()->vkFreeDescriptorSets(
4917             m_device, m_descriptorPool, 1, reinterpret_cast<VkDescriptorSet const *>( &m_descriptorSet ) );
4918         }
4919       }
4920 
4921 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
4922       DescriptorSet() = default;
4923 #  else
4924       DescriptorSet()                 = delete;
4925 #  endif
4926       DescriptorSet( DescriptorSet const & ) = delete;
DescriptorSet(DescriptorSet && rhs)4927       DescriptorSet( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT
4928         : m_descriptorSet( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSet, {} ) )
4929         , m_device( rhs.m_device )
4930         , m_descriptorPool( rhs.m_descriptorPool )
4931         , m_dispatcher( rhs.m_dispatcher )
4932       {}
4933       DescriptorSet & operator=( DescriptorSet const & ) = delete;
operator =(DescriptorSet && rhs)4934       DescriptorSet & operator                           =( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT
4935       {
4936         if ( this != &rhs )
4937         {
4938           if ( m_descriptorSet )
4939           {
4940             getDispatcher()->vkFreeDescriptorSets(
4941               m_device, m_descriptorPool, 1, reinterpret_cast<VkDescriptorSet const *>( &m_descriptorSet ) );
4942           }
4943           m_descriptorSet  = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSet, {} );
4944           m_device         = rhs.m_device;
4945           m_descriptorPool = rhs.m_descriptorPool;
4946           m_dispatcher     = rhs.m_dispatcher;
4947         }
4948         return *this;
4949       }
4950 
operator *() const4951       VULKAN_HPP_NAMESPACE::DescriptorSet const & operator*() const VULKAN_HPP_NOEXCEPT
4952       {
4953         return m_descriptorSet;
4954       }
4955 
getDispatcher() const4956       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
4957       {
4958         return m_dispatcher;
4959       }
4960 
4961 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const4962       explicit operator bool() const VULKAN_HPP_NOEXCEPT
4963       {
4964         return m_descriptorSet.operator bool();
4965       }
4966 
operator !() const4967       bool operator!() const VULKAN_HPP_NOEXCEPT
4968       {
4969         return m_descriptorSet.operator!();
4970       }
4971 #  endif
4972 
4973       //=== VK_VERSION_1_1 ===
4974 
4975       void updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
4976                                const void *                                   pData ) const VULKAN_HPP_NOEXCEPT;
4977 
4978       //=== VK_KHR_descriptor_update_template ===
4979 
4980       void updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
4981                                   const void *                                   pData ) const VULKAN_HPP_NOEXCEPT;
4982 
4983     private:
4984       VULKAN_HPP_NAMESPACE::DescriptorSet                                       m_descriptorSet;
4985       VkDevice                                                                  m_device;
4986       VkDescriptorPool                                                          m_descriptorPool;
4987       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
4988     };
4989 
4990     class DescriptorSets : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DescriptorSet>
4991     {
4992     public:
DescriptorSets(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & allocateInfo)4993       DescriptorSets( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
4994                       VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const &         allocateInfo )
4995       {
4996         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
4997         std::vector<VkDescriptorSet> descriptorSets( allocateInfo.descriptorSetCount );
4998         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
4999           dispatcher->vkAllocateDescriptorSets( static_cast<VkDevice>( *device ),
5000                                                 reinterpret_cast<const VkDescriptorSetAllocateInfo *>( &allocateInfo ),
5001                                                 descriptorSets.data() ) );
5002         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
5003         {
5004           this->reserve( allocateInfo.descriptorSetCount );
5005           for ( auto const & descriptorSet : descriptorSets )
5006           {
5007             this->emplace_back( descriptorSet,
5008                                 static_cast<VkDevice>( *device ),
5009                                 static_cast<VkDescriptorPool>( allocateInfo.descriptorPool ),
5010                                 dispatcher );
5011           }
5012         }
5013         else
5014         {
5015           throwResultException( result, "vkAllocateDescriptorSets" );
5016         }
5017       }
5018 
5019 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5020       DescriptorSets() = default;
5021 #  else
5022       DescriptorSets()                = delete;
5023 #  endif
5024       DescriptorSets( DescriptorSets const & ) = delete;
5025       DescriptorSets( DescriptorSets && rhs )  = default;
5026       DescriptorSets & operator=( DescriptorSets const & ) = delete;
5027       DescriptorSets & operator=( DescriptorSets && rhs ) = default;
5028     };
5029 
5030     class DescriptorSetLayout
5031     {
5032     public:
5033       using CType = VkDescriptorSetLayout;
5034 
5035       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5036         VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSetLayout;
5037       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5038         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSetLayout;
5039 
5040     public:
DescriptorSetLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5041       DescriptorSetLayout(
5042         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5043         VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const &                     createInfo,
5044         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5045         : m_device( *device )
5046         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5047             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5048         , m_dispatcher( device.getDispatcher() )
5049       {
5050         VULKAN_HPP_NAMESPACE::Result result =
5051           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDescriptorSetLayout(
5052             static_cast<VkDevice>( *device ),
5053             reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
5054             m_allocator,
5055             reinterpret_cast<VkDescriptorSetLayout *>( &m_descriptorSetLayout ) ) );
5056         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5057         {
5058           throwResultException( result, "vkCreateDescriptorSetLayout" );
5059         }
5060       }
5061 
DescriptorSetLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorSetLayout descriptorSetLayout,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5062       DescriptorSetLayout(
5063         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5064         VkDescriptorSetLayout                                                           descriptorSetLayout,
5065         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5066         : m_descriptorSetLayout( descriptorSetLayout )
5067         , m_device( *device )
5068         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5069             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5070         , m_dispatcher( device.getDispatcher() )
5071       {}
5072 
~DescriptorSetLayout()5073       ~DescriptorSetLayout()
5074       {
5075         if ( m_descriptorSetLayout )
5076         {
5077           getDispatcher()->vkDestroyDescriptorSetLayout(
5078             m_device, static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ), m_allocator );
5079         }
5080       }
5081 
5082 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5083       DescriptorSetLayout() = default;
5084 #  else
5085       DescriptorSetLayout()           = delete;
5086 #  endif
5087       DescriptorSetLayout( DescriptorSetLayout const & ) = delete;
DescriptorSetLayout(DescriptorSetLayout && rhs)5088       DescriptorSetLayout( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT
5089         : m_descriptorSetLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSetLayout,
5090                                                                                             {} ) )
5091         , m_device( rhs.m_device )
5092         , m_allocator( rhs.m_allocator )
5093         , m_dispatcher( rhs.m_dispatcher )
5094       {}
5095       DescriptorSetLayout & operator=( DescriptorSetLayout const & ) = delete;
operator =(DescriptorSetLayout && rhs)5096       DescriptorSetLayout & operator                                 =( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT
5097       {
5098         if ( this != &rhs )
5099         {
5100           if ( m_descriptorSetLayout )
5101           {
5102             getDispatcher()->vkDestroyDescriptorSetLayout(
5103               m_device, static_cast<VkDescriptorSetLayout>( m_descriptorSetLayout ), m_allocator );
5104           }
5105           m_descriptorSetLayout =
5106             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorSetLayout, {} );
5107           m_device     = rhs.m_device;
5108           m_allocator  = rhs.m_allocator;
5109           m_dispatcher = rhs.m_dispatcher;
5110         }
5111         return *this;
5112       }
5113 
operator *() const5114       VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & operator*() const VULKAN_HPP_NOEXCEPT
5115       {
5116         return m_descriptorSetLayout;
5117       }
5118 
getDispatcher() const5119       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5120       {
5121         return m_dispatcher;
5122       }
5123 
5124 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const5125       explicit operator bool() const VULKAN_HPP_NOEXCEPT
5126       {
5127         return m_descriptorSetLayout.operator bool();
5128       }
5129 
operator !() const5130       bool operator!() const VULKAN_HPP_NOEXCEPT
5131       {
5132         return m_descriptorSetLayout.operator!();
5133       }
5134 #  endif
5135 
5136     private:
5137       VULKAN_HPP_NAMESPACE::DescriptorSetLayout                                 m_descriptorSetLayout;
5138       VkDevice                                                                  m_device;
5139       const VkAllocationCallbacks *                                             m_allocator;
5140       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
5141     };
5142 
5143     class DescriptorUpdateTemplate
5144     {
5145     public:
5146       using CType = VkDescriptorUpdateTemplate;
5147 
5148       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5149         VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorUpdateTemplate;
5150       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5151         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorUpdateTemplate;
5152 
5153     public:
DescriptorUpdateTemplate(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5154       DescriptorUpdateTemplate(
5155         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5156         VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const &                createInfo,
5157         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5158         : m_device( *device )
5159         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5160             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5161         , m_dispatcher( device.getDispatcher() )
5162       {
5163         VULKAN_HPP_NAMESPACE::Result result =
5164           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDescriptorUpdateTemplate(
5165             static_cast<VkDevice>( *device ),
5166             reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfo *>( &createInfo ),
5167             m_allocator,
5168             reinterpret_cast<VkDescriptorUpdateTemplate *>( &m_descriptorUpdateTemplate ) ) );
5169         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5170         {
5171           throwResultException( result, "vkCreateDescriptorUpdateTemplate" );
5172         }
5173       }
5174 
DescriptorUpdateTemplate(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5175       DescriptorUpdateTemplate(
5176         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5177         VkDescriptorUpdateTemplate                                                      descriptorUpdateTemplate,
5178         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5179         : m_descriptorUpdateTemplate( descriptorUpdateTemplate )
5180         , m_device( *device )
5181         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5182             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5183         , m_dispatcher( device.getDispatcher() )
5184       {}
5185 
~DescriptorUpdateTemplate()5186       ~DescriptorUpdateTemplate()
5187       {
5188         if ( m_descriptorUpdateTemplate )
5189         {
5190           getDispatcher()->vkDestroyDescriptorUpdateTemplate(
5191             m_device, static_cast<VkDescriptorUpdateTemplate>( m_descriptorUpdateTemplate ), m_allocator );
5192         }
5193       }
5194 
5195 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5196       DescriptorUpdateTemplate() = default;
5197 #  else
5198       DescriptorUpdateTemplate()      = delete;
5199 #  endif
5200       DescriptorUpdateTemplate( DescriptorUpdateTemplate const & ) = delete;
DescriptorUpdateTemplate(DescriptorUpdateTemplate && rhs)5201       DescriptorUpdateTemplate( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT
5202         : m_descriptorUpdateTemplate(
5203             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorUpdateTemplate, {} ) )
5204         , m_device( rhs.m_device )
5205         , m_allocator( rhs.m_allocator )
5206         , m_dispatcher( rhs.m_dispatcher )
5207       {}
5208       DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate const & ) = delete;
operator =(DescriptorUpdateTemplate && rhs)5209       DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT
5210       {
5211         if ( this != &rhs )
5212         {
5213           if ( m_descriptorUpdateTemplate )
5214           {
5215             getDispatcher()->vkDestroyDescriptorUpdateTemplate(
5216               m_device, static_cast<VkDescriptorUpdateTemplate>( m_descriptorUpdateTemplate ), m_allocator );
5217           }
5218           m_descriptorUpdateTemplate =
5219             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_descriptorUpdateTemplate, {} );
5220           m_device     = rhs.m_device;
5221           m_allocator  = rhs.m_allocator;
5222           m_dispatcher = rhs.m_dispatcher;
5223         }
5224         return *this;
5225       }
5226 
operator *() const5227       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & operator*() const VULKAN_HPP_NOEXCEPT
5228       {
5229         return m_descriptorUpdateTemplate;
5230       }
5231 
getDispatcher() const5232       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5233       {
5234         return m_dispatcher;
5235       }
5236 
5237 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const5238       explicit operator bool() const VULKAN_HPP_NOEXCEPT
5239       {
5240         return m_descriptorUpdateTemplate.operator bool();
5241       }
5242 
operator !() const5243       bool operator!() const VULKAN_HPP_NOEXCEPT
5244       {
5245         return m_descriptorUpdateTemplate.operator!();
5246       }
5247 #  endif
5248 
5249     private:
5250       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate                            m_descriptorUpdateTemplate;
5251       VkDevice                                                                  m_device;
5252       const VkAllocationCallbacks *                                             m_allocator;
5253       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
5254     };
5255 
5256     class DeviceMemory
5257     {
5258     public:
5259       using CType = VkDeviceMemory;
5260 
5261       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5262         VULKAN_HPP_NAMESPACE::ObjectType::eDeviceMemory;
5263       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5264         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDeviceMemory;
5265 
5266     public:
DeviceMemory(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & allocateInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5267       DeviceMemory(
5268         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5269         VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const &                                allocateInfo,
5270         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5271         : m_device( *device )
5272         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5273             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5274         , m_dispatcher( device.getDispatcher() )
5275       {
5276         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5277           getDispatcher()->vkAllocateMemory( static_cast<VkDevice>( *device ),
5278                                              reinterpret_cast<const VkMemoryAllocateInfo *>( &allocateInfo ),
5279                                              m_allocator,
5280                                              reinterpret_cast<VkDeviceMemory *>( &m_deviceMemory ) ) );
5281         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5282         {
5283           throwResultException( result, "vkAllocateMemory" );
5284         }
5285       }
5286 
DeviceMemory(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkDeviceMemory deviceMemory,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5287       DeviceMemory(
5288         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5289         VkDeviceMemory                                                                  deviceMemory,
5290         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5291         : m_deviceMemory( deviceMemory )
5292         , m_device( *device )
5293         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5294             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5295         , m_dispatcher( device.getDispatcher() )
5296       {}
5297 
~DeviceMemory()5298       ~DeviceMemory()
5299       {
5300         if ( m_deviceMemory )
5301         {
5302           getDispatcher()->vkFreeMemory( m_device, static_cast<VkDeviceMemory>( m_deviceMemory ), m_allocator );
5303         }
5304       }
5305 
5306 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5307       DeviceMemory() = default;
5308 #  else
5309       DeviceMemory()                  = delete;
5310 #  endif
5311       DeviceMemory( DeviceMemory const & ) = delete;
DeviceMemory(DeviceMemory && rhs)5312       DeviceMemory( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT
5313         : m_deviceMemory( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_deviceMemory, {} ) )
5314         , m_device( rhs.m_device )
5315         , m_allocator( rhs.m_allocator )
5316         , m_dispatcher( rhs.m_dispatcher )
5317       {}
5318       DeviceMemory & operator=( DeviceMemory const & ) = delete;
operator =(DeviceMemory && rhs)5319       DeviceMemory & operator                          =( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT
5320       {
5321         if ( this != &rhs )
5322         {
5323           if ( m_deviceMemory )
5324           {
5325             getDispatcher()->vkFreeMemory( m_device, static_cast<VkDeviceMemory>( m_deviceMemory ), m_allocator );
5326           }
5327           m_deviceMemory = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_deviceMemory, {} );
5328           m_device       = rhs.m_device;
5329           m_allocator    = rhs.m_allocator;
5330           m_dispatcher   = rhs.m_dispatcher;
5331         }
5332         return *this;
5333       }
5334 
operator *() const5335       VULKAN_HPP_NAMESPACE::DeviceMemory const & operator*() const VULKAN_HPP_NOEXCEPT
5336       {
5337         return m_deviceMemory;
5338       }
5339 
getDispatcher() const5340       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5341       {
5342         return m_dispatcher;
5343       }
5344 
5345 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const5346       explicit operator bool() const VULKAN_HPP_NOEXCEPT
5347       {
5348         return m_deviceMemory.operator bool();
5349       }
5350 
operator !() const5351       bool operator!() const VULKAN_HPP_NOEXCEPT
5352       {
5353         return m_deviceMemory.operator!();
5354       }
5355 #  endif
5356 
5357       //=== VK_VERSION_1_0 ===
5358 
5359       VULKAN_HPP_NODISCARD void *
5360         mapMemory( VULKAN_HPP_NAMESPACE::DeviceSize     offset,
5361                    VULKAN_HPP_NAMESPACE::DeviceSize     size,
5362                    VULKAN_HPP_NAMESPACE::MemoryMapFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
5363 
5364       void unmapMemory() const VULKAN_HPP_NOEXCEPT;
5365 
5366       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getCommitment() const VULKAN_HPP_NOEXCEPT;
5367 
5368 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
5369       //=== VK_NV_external_memory_win32 ===
5370 
5371       VULKAN_HPP_NODISCARD HANDLE
5372                            getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType ) const;
5373 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
5374 
5375     private:
5376       VULKAN_HPP_NAMESPACE::DeviceMemory                                        m_deviceMemory;
5377       VkDevice                                                                  m_device;
5378       const VkAllocationCallbacks *                                             m_allocator;
5379       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
5380     };
5381 
5382     class DisplayKHR
5383     {
5384     public:
5385       using CType = VkDisplayKHR;
5386 
5387       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5388         VULKAN_HPP_NAMESPACE::ObjectType::eDisplayKHR;
5389       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5390         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayKHR;
5391 
5392     public:
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,int32_t drmFd,uint32_t connectorId)5393       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5394                   int32_t                                                                 drmFd,
5395                   uint32_t                                                                connectorId )
5396         : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() )
5397       {
5398         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5399           getDispatcher()->vkGetDrmDisplayEXT( static_cast<VkPhysicalDevice>( *physicalDevice ),
5400                                                drmFd,
5401                                                connectorId,
5402                                                reinterpret_cast<VkDisplayKHR *>( &m_displayKHR ) ) );
5403         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5404         {
5405           throwResultException( result, "vkGetDrmDisplayEXT" );
5406         }
5407       }
5408 
5409 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,Display & dpy,RROutput rrOutput)5410       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5411                   Display &                                                               dpy,
5412                   RROutput                                                                rrOutput )
5413         : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() )
5414       {
5415         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5416           getDispatcher()->vkGetRandROutputDisplayEXT( static_cast<VkPhysicalDevice>( *physicalDevice ),
5417                                                        &dpy,
5418                                                        rrOutput,
5419                                                        reinterpret_cast<VkDisplayKHR *>( &m_displayKHR ) ) );
5420         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5421         {
5422           throwResultException( result, "vkGetRandROutputDisplayEXT" );
5423         }
5424       }
5425 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
5426 
5427 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,uint32_t deviceRelativeId)5428       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5429                   uint32_t                                                                deviceRelativeId )
5430         : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() )
5431       {
5432         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5433           getDispatcher()->vkGetWinrtDisplayNV( static_cast<VkPhysicalDevice>( *physicalDevice ),
5434                                                 deviceRelativeId,
5435                                                 reinterpret_cast<VkDisplayKHR *>( &m_displayKHR ) ) );
5436         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5437         {
5438           throwResultException( result, "vkGetWinrtDisplayNV" );
5439         }
5440       }
5441 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
5442 
DisplayKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VkDisplayKHR displayKHR)5443       DisplayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5444                   VkDisplayKHR                                                            displayKHR )
5445         : m_displayKHR( displayKHR )
5446         , m_physicalDevice( *physicalDevice )
5447         , m_dispatcher( physicalDevice.getDispatcher() )
5448       {}
5449 
DisplayKHR(VkDisplayKHR displayKHR,VkPhysicalDevice physicalDevice,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher)5450       DisplayKHR( VkDisplayKHR                                                                displayKHR,
5451                   VkPhysicalDevice                                                            physicalDevice,
5452                   VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher )
5453         : m_displayKHR( displayKHR ), m_physicalDevice( physicalDevice ), m_dispatcher( dispatcher )
5454       {}
5455 
~DisplayKHR()5456       ~DisplayKHR()
5457       {
5458         if ( m_displayKHR )
5459         {
5460           getDispatcher()->vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( m_displayKHR ) );
5461         }
5462       }
5463 
5464 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5465       DisplayKHR() = default;
5466 #  else
5467       DisplayKHR()                    = delete;
5468 #  endif
5469       DisplayKHR( DisplayKHR const & ) = delete;
DisplayKHR(DisplayKHR && rhs)5470       DisplayKHR( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT
5471         : m_displayKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayKHR, {} ) )
5472         , m_physicalDevice( rhs.m_physicalDevice )
5473         , m_dispatcher( rhs.m_dispatcher )
5474       {}
5475       DisplayKHR & operator=( DisplayKHR const & ) = delete;
operator =(DisplayKHR && rhs)5476       DisplayKHR & operator                        =( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT
5477       {
5478         if ( this != &rhs )
5479         {
5480           if ( m_displayKHR )
5481           {
5482             getDispatcher()->vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( m_displayKHR ) );
5483           }
5484           m_displayKHR     = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayKHR, {} );
5485           m_physicalDevice = rhs.m_physicalDevice;
5486           m_dispatcher     = rhs.m_dispatcher;
5487         }
5488         return *this;
5489       }
5490 
operator *() const5491       VULKAN_HPP_NAMESPACE::DisplayKHR const & operator*() const VULKAN_HPP_NOEXCEPT
5492       {
5493         return m_displayKHR;
5494       }
5495 
getDispatcher() const5496       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
5497       {
5498         return m_dispatcher;
5499       }
5500 
5501 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const5502       explicit operator bool() const VULKAN_HPP_NOEXCEPT
5503       {
5504         return m_displayKHR.operator bool();
5505       }
5506 
operator !() const5507       bool operator!() const VULKAN_HPP_NOEXCEPT
5508       {
5509         return m_displayKHR.operator!();
5510       }
5511 #  endif
5512 
5513       //=== VK_KHR_display ===
5514 
5515       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR> getModeProperties() const;
5516 
5517       //=== VK_KHR_get_display_properties2 ===
5518 
5519       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR> getModeProperties2() const;
5520 
5521 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
5522       //=== VK_NV_acquire_winrt_display ===
5523 
5524       void acquireWinrtNV() const;
5525 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
5526 
5527     private:
5528       VULKAN_HPP_NAMESPACE::DisplayKHR                                            m_displayKHR;
5529       VkPhysicalDevice                                                            m_physicalDevice;
5530       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher;
5531     };
5532 
5533     class DisplayKHRs : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR>
5534     {
5535     public:
DisplayKHRs(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,uint32_t planeIndex)5536       DisplayKHRs( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5537                    uint32_t                                                                planeIndex )
5538       {
5539         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * dispatcher =
5540           physicalDevice.getDispatcher();
5541         std::vector<VkDisplayKHR>    displays;
5542         uint32_t                     displayCount;
5543         VULKAN_HPP_NAMESPACE::Result result;
5544         do
5545         {
5546           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkGetDisplayPlaneSupportedDisplaysKHR(
5547             static_cast<VkPhysicalDevice>( *physicalDevice ), planeIndex, &displayCount, nullptr ) );
5548           if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && displayCount )
5549           {
5550             displays.resize( displayCount );
5551             result = static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkGetDisplayPlaneSupportedDisplaysKHR(
5552               static_cast<VkPhysicalDevice>( *physicalDevice ), planeIndex, &displayCount, displays.data() ) );
5553             VULKAN_HPP_ASSERT( displayCount <= displays.size() );
5554           }
5555         } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
5556         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
5557         {
5558           this->reserve( displayCount );
5559           for ( auto const & displayKHR : displays )
5560           {
5561             this->emplace_back( displayKHR, static_cast<VkPhysicalDevice>( *physicalDevice ), dispatcher );
5562           }
5563         }
5564         else
5565         {
5566           throwResultException( result, "vkGetDisplayPlaneSupportedDisplaysKHR" );
5567         }
5568       }
5569 
5570 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5571       DisplayKHRs() = default;
5572 #  else
5573       DisplayKHRs()                   = delete;
5574 #  endif
5575       DisplayKHRs( DisplayKHRs const & ) = delete;
5576       DisplayKHRs( DisplayKHRs && rhs )  = default;
5577       DisplayKHRs & operator=( DisplayKHRs const & ) = delete;
5578       DisplayKHRs & operator=( DisplayKHRs && rhs ) = default;
5579     };
5580 
5581     class DisplayModeKHR
5582     {
5583     public:
5584       using CType = VkDisplayModeKHR;
5585 
5586       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5587         VULKAN_HPP_NAMESPACE::ObjectType::eDisplayModeKHR;
5588       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5589         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayModeKHR;
5590 
5591     public:
DisplayModeKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const & display,VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5592       DisplayModeKHR(
5593         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const &         physicalDevice,
5594         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const &             display,
5595         VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const &                          createInfo,
5596         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5597         : m_physicalDevice( *physicalDevice ), m_dispatcher( physicalDevice.getDispatcher() )
5598       {
5599         VULKAN_HPP_NAMESPACE::Result result =
5600           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDisplayModeKHR(
5601             static_cast<VkPhysicalDevice>( *physicalDevice ),
5602             static_cast<VkDisplayKHR>( *display ),
5603             reinterpret_cast<const VkDisplayModeCreateInfoKHR *>( &createInfo ),
5604             reinterpret_cast<const VkAllocationCallbacks *>(
5605               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
5606             reinterpret_cast<VkDisplayModeKHR *>( &m_displayModeKHR ) ) );
5607         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5608         {
5609           throwResultException( result, "vkCreateDisplayModeKHR" );
5610         }
5611       }
5612 
DisplayModeKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,VkDisplayModeKHR displayModeKHR)5613       DisplayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PhysicalDevice const & physicalDevice,
5614                       VkDisplayModeKHR                                                        displayModeKHR )
5615         : m_displayModeKHR( displayModeKHR )
5616         , m_physicalDevice( *physicalDevice )
5617         , m_dispatcher( physicalDevice.getDispatcher() )
5618       {}
5619 
5620 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5621       DisplayModeKHR() = default;
5622 #  else
5623       DisplayModeKHR()                = delete;
5624 #  endif
5625       DisplayModeKHR( DisplayModeKHR const & ) = delete;
DisplayModeKHR(DisplayModeKHR && rhs)5626       DisplayModeKHR( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT
5627         : m_displayModeKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayModeKHR, {} ) )
5628         , m_dispatcher( rhs.m_dispatcher )
5629       {}
5630       DisplayModeKHR & operator=( DisplayModeKHR const & ) = delete;
operator =(DisplayModeKHR && rhs)5631       DisplayModeKHR & operator                            =( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT
5632       {
5633         if ( this != &rhs )
5634         {
5635           m_displayModeKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_displayModeKHR, {} );
5636           m_dispatcher     = rhs.m_dispatcher;
5637         }
5638         return *this;
5639       }
5640 
operator *() const5641       VULKAN_HPP_NAMESPACE::DisplayModeKHR const & operator*() const VULKAN_HPP_NOEXCEPT
5642       {
5643         return m_displayModeKHR;
5644       }
5645 
getDispatcher() const5646       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
5647       {
5648         return m_dispatcher;
5649       }
5650 
5651 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const5652       explicit operator bool() const VULKAN_HPP_NOEXCEPT
5653       {
5654         return m_displayModeKHR.operator bool();
5655       }
5656 
operator !() const5657       bool operator!() const VULKAN_HPP_NOEXCEPT
5658       {
5659         return m_displayModeKHR.operator!();
5660       }
5661 #  endif
5662 
5663       //=== VK_KHR_display ===
5664 
5665       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR
5666                            getDisplayPlaneCapabilities( uint32_t planeIndex ) const;
5667 
5668     private:
5669       VULKAN_HPP_NAMESPACE::DisplayModeKHR                                        m_displayModeKHR;
5670       VULKAN_HPP_NAMESPACE::PhysicalDevice                                        m_physicalDevice;
5671       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher;
5672     };
5673 
5674     class Event
5675     {
5676     public:
5677       using CType = VkEvent;
5678 
5679       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5680         VULKAN_HPP_NAMESPACE::ObjectType::eEvent;
5681       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5682         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eEvent;
5683 
5684     public:
Event(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::EventCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5685       Event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5686              VULKAN_HPP_NAMESPACE::EventCreateInfo const &                                   createInfo,
5687              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5688         : m_device( *device )
5689         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5690             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5691         , m_dispatcher( device.getDispatcher() )
5692       {
5693         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5694           getDispatcher()->vkCreateEvent( static_cast<VkDevice>( *device ),
5695                                           reinterpret_cast<const VkEventCreateInfo *>( &createInfo ),
5696                                           m_allocator,
5697                                           reinterpret_cast<VkEvent *>( &m_event ) ) );
5698         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5699         {
5700           throwResultException( result, "vkCreateEvent" );
5701         }
5702       }
5703 
Event(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkEvent event,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5704       Event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5705              VkEvent                                                                         event,
5706              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5707         : m_event( event )
5708         , m_device( *device )
5709         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5710             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5711         , m_dispatcher( device.getDispatcher() )
5712       {}
5713 
~Event()5714       ~Event()
5715       {
5716         if ( m_event )
5717         {
5718           getDispatcher()->vkDestroyEvent( m_device, static_cast<VkEvent>( m_event ), m_allocator );
5719         }
5720       }
5721 
5722 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5723       Event() = default;
5724 #  else
5725       Event()                         = delete;
5726 #  endif
5727       Event( Event const & ) = delete;
Event(Event && rhs)5728       Event( Event && rhs ) VULKAN_HPP_NOEXCEPT
5729         : m_event( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_event, {} ) )
5730         , m_device( rhs.m_device )
5731         , m_allocator( rhs.m_allocator )
5732         , m_dispatcher( rhs.m_dispatcher )
5733       {}
5734       Event & operator=( Event const & ) = delete;
operator =(Event && rhs)5735       Event & operator                   =( Event && rhs ) VULKAN_HPP_NOEXCEPT
5736       {
5737         if ( this != &rhs )
5738         {
5739           if ( m_event )
5740           {
5741             getDispatcher()->vkDestroyEvent( m_device, static_cast<VkEvent>( m_event ), m_allocator );
5742           }
5743           m_event      = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_event, {} );
5744           m_device     = rhs.m_device;
5745           m_allocator  = rhs.m_allocator;
5746           m_dispatcher = rhs.m_dispatcher;
5747         }
5748         return *this;
5749       }
5750 
operator *() const5751       VULKAN_HPP_NAMESPACE::Event const & operator*() const VULKAN_HPP_NOEXCEPT
5752       {
5753         return m_event;
5754       }
5755 
getDispatcher() const5756       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5757       {
5758         return m_dispatcher;
5759       }
5760 
5761 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const5762       explicit operator bool() const VULKAN_HPP_NOEXCEPT
5763       {
5764         return m_event.operator bool();
5765       }
5766 
operator !() const5767       bool operator!() const VULKAN_HPP_NOEXCEPT
5768       {
5769         return m_event.operator!();
5770       }
5771 #  endif
5772 
5773       //=== VK_VERSION_1_0 ===
5774 
5775       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
5776 
5777       void set() const;
5778 
5779       void reset() const;
5780 
5781     private:
5782       VULKAN_HPP_NAMESPACE::Event                                               m_event;
5783       VkDevice                                                                  m_device;
5784       const VkAllocationCallbacks *                                             m_allocator;
5785       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
5786     };
5787 
5788     class Fence
5789     {
5790     public:
5791       using CType = VkFence;
5792 
5793       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5794         VULKAN_HPP_NAMESPACE::ObjectType::eFence;
5795       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5796         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFence;
5797 
5798     public:
Fence(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::FenceCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5799       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5800              VULKAN_HPP_NAMESPACE::FenceCreateInfo const &                                   createInfo,
5801              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5802         : m_device( *device )
5803         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5804             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5805         , m_dispatcher( device.getDispatcher() )
5806       {
5807         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5808           getDispatcher()->vkCreateFence( static_cast<VkDevice>( *device ),
5809                                           reinterpret_cast<const VkFenceCreateInfo *>( &createInfo ),
5810                                           m_allocator,
5811                                           reinterpret_cast<VkFence *>( &m_fence ) ) );
5812         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5813         {
5814           throwResultException( result, "vkCreateFence" );
5815         }
5816       }
5817 
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)5818       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5819              VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const &                                deviceEventInfo,
5820              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5821         : m_device( *device )
5822         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5823             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5824         , m_dispatcher( device.getDispatcher() )
5825       {
5826         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5827           getDispatcher()->vkRegisterDeviceEventEXT( static_cast<VkDevice>( *device ),
5828                                                      reinterpret_cast<const VkDeviceEventInfoEXT *>( &deviceEventInfo ),
5829                                                      m_allocator,
5830                                                      reinterpret_cast<VkFence *>( &m_fence ) ) );
5831         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5832         {
5833           throwResultException( result, "vkRegisterDeviceEventEXT" );
5834         }
5835       }
5836 
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)5837       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5838              VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DisplayKHR const &             display,
5839              VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const &                               displayEventInfo,
5840              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5841         : m_device( *device )
5842         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5843             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5844         , m_dispatcher( device.getDispatcher() )
5845       {
5846         VULKAN_HPP_NAMESPACE::Result result =
5847           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkRegisterDisplayEventEXT(
5848             static_cast<VkDevice>( *device ),
5849             static_cast<VkDisplayKHR>( *display ),
5850             reinterpret_cast<const VkDisplayEventInfoEXT *>( &displayEventInfo ),
5851             m_allocator,
5852             reinterpret_cast<VkFence *>( &m_fence ) ) );
5853         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5854         {
5855           throwResultException( result, "vkRegisterDisplayEventEXT" );
5856         }
5857       }
5858 
Fence(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkFence fence,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5859       Fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5860              VkFence                                                                         fence,
5861              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5862         : m_fence( fence )
5863         , m_device( *device )
5864         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5865             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5866         , m_dispatcher( device.getDispatcher() )
5867       {}
5868 
~Fence()5869       ~Fence()
5870       {
5871         if ( m_fence )
5872         {
5873           getDispatcher()->vkDestroyFence( m_device, static_cast<VkFence>( m_fence ), m_allocator );
5874         }
5875       }
5876 
5877 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5878       Fence() = default;
5879 #  else
5880       Fence()                         = delete;
5881 #  endif
5882       Fence( Fence const & ) = delete;
Fence(Fence && rhs)5883       Fence( Fence && rhs ) VULKAN_HPP_NOEXCEPT
5884         : m_fence( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_fence, {} ) )
5885         , m_device( rhs.m_device )
5886         , m_allocator( rhs.m_allocator )
5887         , m_dispatcher( rhs.m_dispatcher )
5888       {}
5889       Fence & operator=( Fence const & ) = delete;
operator =(Fence && rhs)5890       Fence & operator                   =( Fence && rhs ) VULKAN_HPP_NOEXCEPT
5891       {
5892         if ( this != &rhs )
5893         {
5894           if ( m_fence )
5895           {
5896             getDispatcher()->vkDestroyFence( m_device, static_cast<VkFence>( m_fence ), m_allocator );
5897           }
5898           m_fence      = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_fence, {} );
5899           m_device     = rhs.m_device;
5900           m_allocator  = rhs.m_allocator;
5901           m_dispatcher = rhs.m_dispatcher;
5902         }
5903         return *this;
5904       }
5905 
operator *() const5906       VULKAN_HPP_NAMESPACE::Fence const & operator*() const VULKAN_HPP_NOEXCEPT
5907       {
5908         return m_fence;
5909       }
5910 
getDispatcher() const5911       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
5912       {
5913         return m_dispatcher;
5914       }
5915 
5916 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const5917       explicit operator bool() const VULKAN_HPP_NOEXCEPT
5918       {
5919         return m_fence.operator bool();
5920       }
5921 
operator !() const5922       bool operator!() const VULKAN_HPP_NOEXCEPT
5923       {
5924         return m_fence.operator!();
5925       }
5926 #  endif
5927 
5928       //=== VK_VERSION_1_0 ===
5929 
5930       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
5931 
5932     private:
5933       VULKAN_HPP_NAMESPACE::Fence                                               m_fence;
5934       VkDevice                                                                  m_device;
5935       const VkAllocationCallbacks *                                             m_allocator;
5936       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
5937     };
5938 
5939     class Framebuffer
5940     {
5941     public:
5942       using CType = VkFramebuffer;
5943 
5944       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
5945         VULKAN_HPP_NAMESPACE::ObjectType::eFramebuffer;
5946       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
5947         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFramebuffer;
5948 
5949     public:
Framebuffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5950       Framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5951                    VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const &                             createInfo,
5952                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5953         : m_device( *device )
5954         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5955             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5956         , m_dispatcher( device.getDispatcher() )
5957       {
5958         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
5959           getDispatcher()->vkCreateFramebuffer( static_cast<VkDevice>( *device ),
5960                                                 reinterpret_cast<const VkFramebufferCreateInfo *>( &createInfo ),
5961                                                 m_allocator,
5962                                                 reinterpret_cast<VkFramebuffer *>( &m_framebuffer ) ) );
5963         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
5964         {
5965           throwResultException( result, "vkCreateFramebuffer" );
5966         }
5967       }
5968 
Framebuffer(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkFramebuffer framebuffer,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)5969       Framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
5970                    VkFramebuffer                                                                   framebuffer,
5971                    VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
5972         : m_framebuffer( framebuffer )
5973         , m_device( *device )
5974         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
5975             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
5976         , m_dispatcher( device.getDispatcher() )
5977       {}
5978 
~Framebuffer()5979       ~Framebuffer()
5980       {
5981         if ( m_framebuffer )
5982         {
5983           getDispatcher()->vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( m_framebuffer ), m_allocator );
5984         }
5985       }
5986 
5987 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
5988       Framebuffer() = default;
5989 #  else
5990       Framebuffer()                   = delete;
5991 #  endif
5992       Framebuffer( Framebuffer const & ) = delete;
Framebuffer(Framebuffer && rhs)5993       Framebuffer( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT
5994         : m_framebuffer( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_framebuffer, {} ) )
5995         , m_device( rhs.m_device )
5996         , m_allocator( rhs.m_allocator )
5997         , m_dispatcher( rhs.m_dispatcher )
5998       {}
5999       Framebuffer & operator=( Framebuffer const & ) = delete;
operator =(Framebuffer && rhs)6000       Framebuffer & operator                         =( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT
6001       {
6002         if ( this != &rhs )
6003         {
6004           if ( m_framebuffer )
6005           {
6006             getDispatcher()->vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( m_framebuffer ), m_allocator );
6007           }
6008           m_framebuffer = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_framebuffer, {} );
6009           m_device      = rhs.m_device;
6010           m_allocator   = rhs.m_allocator;
6011           m_dispatcher  = rhs.m_dispatcher;
6012         }
6013         return *this;
6014       }
6015 
operator *() const6016       VULKAN_HPP_NAMESPACE::Framebuffer const & operator*() const VULKAN_HPP_NOEXCEPT
6017       {
6018         return m_framebuffer;
6019       }
6020 
getDispatcher() const6021       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6022       {
6023         return m_dispatcher;
6024       }
6025 
6026 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const6027       explicit operator bool() const VULKAN_HPP_NOEXCEPT
6028       {
6029         return m_framebuffer.operator bool();
6030       }
6031 
operator !() const6032       bool operator!() const VULKAN_HPP_NOEXCEPT
6033       {
6034         return m_framebuffer.operator!();
6035       }
6036 #  endif
6037 
6038     private:
6039       VULKAN_HPP_NAMESPACE::Framebuffer                                         m_framebuffer;
6040       VkDevice                                                                  m_device;
6041       const VkAllocationCallbacks *                                             m_allocator;
6042       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
6043     };
6044 
6045     class Image
6046     {
6047     public:
6048       using CType = VkImage;
6049 
6050       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6051         VULKAN_HPP_NAMESPACE::ObjectType::eImage;
6052       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6053         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImage;
6054 
6055     public:
Image(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ImageCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6056       Image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6057              VULKAN_HPP_NAMESPACE::ImageCreateInfo const &                                   createInfo,
6058              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6059         : m_device( *device )
6060         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6061             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6062         , m_dispatcher( device.getDispatcher() )
6063       {
6064         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6065           getDispatcher()->vkCreateImage( static_cast<VkDevice>( *device ),
6066                                           reinterpret_cast<const VkImageCreateInfo *>( &createInfo ),
6067                                           m_allocator,
6068                                           reinterpret_cast<VkImage *>( &m_image ) ) );
6069         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6070         {
6071           throwResultException( result, "vkCreateImage" );
6072         }
6073       }
6074 
Image(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkImage image,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6075       Image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6076              VkImage                                                                         image,
6077              VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6078         : m_image( image )
6079         , m_device( *device )
6080         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6081             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6082         , m_dispatcher( device.getDispatcher() )
6083       {}
6084 
~Image()6085       ~Image()
6086       {
6087         if ( m_image )
6088         {
6089           getDispatcher()->vkDestroyImage( m_device, static_cast<VkImage>( m_image ), m_allocator );
6090         }
6091       }
6092 
6093 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
6094       Image() = default;
6095 #  else
6096       Image()                         = delete;
6097 #  endif
6098       Image( Image const & ) = delete;
Image(Image && rhs)6099       Image( Image && rhs ) VULKAN_HPP_NOEXCEPT
6100         : m_image( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_image, {} ) )
6101         , m_device( rhs.m_device )
6102         , m_allocator( rhs.m_allocator )
6103         , m_dispatcher( rhs.m_dispatcher )
6104       {}
6105       Image & operator=( Image const & ) = delete;
operator =(Image && rhs)6106       Image & operator                   =( Image && rhs ) VULKAN_HPP_NOEXCEPT
6107       {
6108         if ( this != &rhs )
6109         {
6110           if ( m_image )
6111           {
6112             getDispatcher()->vkDestroyImage( m_device, static_cast<VkImage>( m_image ), m_allocator );
6113           }
6114           m_image      = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_image, {} );
6115           m_device     = rhs.m_device;
6116           m_allocator  = rhs.m_allocator;
6117           m_dispatcher = rhs.m_dispatcher;
6118         }
6119         return *this;
6120       }
6121 
operator *() const6122       VULKAN_HPP_NAMESPACE::Image const & operator*() const VULKAN_HPP_NOEXCEPT
6123       {
6124         return m_image;
6125       }
6126 
getDispatcher() const6127       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6128       {
6129         return m_dispatcher;
6130       }
6131 
6132 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const6133       explicit operator bool() const VULKAN_HPP_NOEXCEPT
6134       {
6135         return m_image.operator bool();
6136       }
6137 
operator !() const6138       bool operator!() const VULKAN_HPP_NOEXCEPT
6139       {
6140         return m_image.operator!();
6141       }
6142 #  endif
6143 
6144       //=== VK_VERSION_1_0 ===
6145 
6146       void bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset ) const;
6147 
6148       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
6149 
6150       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements>
6151                            getSparseMemoryRequirements() const VULKAN_HPP_NOEXCEPT;
6152 
6153       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout
6154                            getSubresourceLayout( const ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT;
6155 
6156       //=== VK_EXT_image_drm_format_modifier ===
6157 
6158       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT
6159                            getDrmFormatModifierPropertiesEXT() const;
6160 
6161     private:
6162       VULKAN_HPP_NAMESPACE::Image                                               m_image;
6163       VkDevice                                                                  m_device;
6164       const VkAllocationCallbacks *                                             m_allocator;
6165       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
6166     };
6167 
6168     class ImageView
6169     {
6170     public:
6171       using CType = VkImageView;
6172 
6173       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6174         VULKAN_HPP_NAMESPACE::ObjectType::eImageView;
6175       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6176         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImageView;
6177 
6178     public:
ImageView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6179       ImageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6180                  VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const &                               createInfo,
6181                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6182         : m_device( *device )
6183         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6184             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6185         , m_dispatcher( device.getDispatcher() )
6186       {
6187         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6188           getDispatcher()->vkCreateImageView( static_cast<VkDevice>( *device ),
6189                                               reinterpret_cast<const VkImageViewCreateInfo *>( &createInfo ),
6190                                               m_allocator,
6191                                               reinterpret_cast<VkImageView *>( &m_imageView ) ) );
6192         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6193         {
6194           throwResultException( result, "vkCreateImageView" );
6195         }
6196       }
6197 
ImageView(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkImageView imageView,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6198       ImageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6199                  VkImageView                                                                     imageView,
6200                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6201         : m_imageView( imageView )
6202         , m_device( *device )
6203         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6204             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6205         , m_dispatcher( device.getDispatcher() )
6206       {}
6207 
~ImageView()6208       ~ImageView()
6209       {
6210         if ( m_imageView )
6211         {
6212           getDispatcher()->vkDestroyImageView( m_device, static_cast<VkImageView>( m_imageView ), m_allocator );
6213         }
6214       }
6215 
6216 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
6217       ImageView() = default;
6218 #  else
6219       ImageView()                     = delete;
6220 #  endif
6221       ImageView( ImageView const & ) = delete;
ImageView(ImageView && rhs)6222       ImageView( ImageView && rhs ) VULKAN_HPP_NOEXCEPT
6223         : m_imageView( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_imageView, {} ) )
6224         , m_device( rhs.m_device )
6225         , m_allocator( rhs.m_allocator )
6226         , m_dispatcher( rhs.m_dispatcher )
6227       {}
6228       ImageView & operator=( ImageView const & ) = delete;
operator =(ImageView && rhs)6229       ImageView & operator                       =( ImageView && rhs ) VULKAN_HPP_NOEXCEPT
6230       {
6231         if ( this != &rhs )
6232         {
6233           if ( m_imageView )
6234           {
6235             getDispatcher()->vkDestroyImageView( m_device, static_cast<VkImageView>( m_imageView ), m_allocator );
6236           }
6237           m_imageView  = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_imageView, {} );
6238           m_device     = rhs.m_device;
6239           m_allocator  = rhs.m_allocator;
6240           m_dispatcher = rhs.m_dispatcher;
6241         }
6242         return *this;
6243       }
6244 
operator *() const6245       VULKAN_HPP_NAMESPACE::ImageView const & operator*() const VULKAN_HPP_NOEXCEPT
6246       {
6247         return m_imageView;
6248       }
6249 
getDispatcher() const6250       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6251       {
6252         return m_dispatcher;
6253       }
6254 
6255 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const6256       explicit operator bool() const VULKAN_HPP_NOEXCEPT
6257       {
6258         return m_imageView.operator bool();
6259       }
6260 
operator !() const6261       bool operator!() const VULKAN_HPP_NOEXCEPT
6262       {
6263         return m_imageView.operator!();
6264       }
6265 #  endif
6266 
6267       //=== VK_NVX_image_view_handle ===
6268 
6269       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX getAddressNVX() const;
6270 
6271     private:
6272       VULKAN_HPP_NAMESPACE::ImageView                                           m_imageView;
6273       VkDevice                                                                  m_device;
6274       const VkAllocationCallbacks *                                             m_allocator;
6275       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
6276     };
6277 
6278     class IndirectCommandsLayoutNV
6279     {
6280     public:
6281       using CType = VkIndirectCommandsLayoutNV;
6282 
6283       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6284         VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutNV;
6285       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6286         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
6287 
6288     public:
IndirectCommandsLayoutNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6289       IndirectCommandsLayoutNV(
6290         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6291         VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const &                createInfo,
6292         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6293         : m_device( *device )
6294         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6295             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6296         , m_dispatcher( device.getDispatcher() )
6297       {
6298         VULKAN_HPP_NAMESPACE::Result result =
6299           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateIndirectCommandsLayoutNV(
6300             static_cast<VkDevice>( *device ),
6301             reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNV *>( &createInfo ),
6302             m_allocator,
6303             reinterpret_cast<VkIndirectCommandsLayoutNV *>( &m_indirectCommandsLayoutNV ) ) );
6304         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6305         {
6306           throwResultException( result, "vkCreateIndirectCommandsLayoutNV" );
6307         }
6308       }
6309 
IndirectCommandsLayoutNV(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkIndirectCommandsLayoutNV indirectCommandsLayoutNV,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6310       IndirectCommandsLayoutNV(
6311         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6312         VkIndirectCommandsLayoutNV                                                      indirectCommandsLayoutNV,
6313         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6314         : m_indirectCommandsLayoutNV( indirectCommandsLayoutNV )
6315         , m_device( *device )
6316         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6317             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6318         , m_dispatcher( device.getDispatcher() )
6319       {}
6320 
~IndirectCommandsLayoutNV()6321       ~IndirectCommandsLayoutNV()
6322       {
6323         if ( m_indirectCommandsLayoutNV )
6324         {
6325           getDispatcher()->vkDestroyIndirectCommandsLayoutNV(
6326             m_device, static_cast<VkIndirectCommandsLayoutNV>( m_indirectCommandsLayoutNV ), m_allocator );
6327         }
6328       }
6329 
6330 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
6331       IndirectCommandsLayoutNV() = default;
6332 #  else
6333       IndirectCommandsLayoutNV()      = delete;
6334 #  endif
6335       IndirectCommandsLayoutNV( IndirectCommandsLayoutNV const & ) = delete;
IndirectCommandsLayoutNV(IndirectCommandsLayoutNV && rhs)6336       IndirectCommandsLayoutNV( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT
6337         : m_indirectCommandsLayoutNV(
6338             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_indirectCommandsLayoutNV, {} ) )
6339         , m_device( rhs.m_device )
6340         , m_allocator( rhs.m_allocator )
6341         , m_dispatcher( rhs.m_dispatcher )
6342       {}
6343       IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV const & ) = delete;
operator =(IndirectCommandsLayoutNV && rhs)6344       IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT
6345       {
6346         if ( this != &rhs )
6347         {
6348           if ( m_indirectCommandsLayoutNV )
6349           {
6350             getDispatcher()->vkDestroyIndirectCommandsLayoutNV(
6351               m_device, static_cast<VkIndirectCommandsLayoutNV>( m_indirectCommandsLayoutNV ), m_allocator );
6352           }
6353           m_indirectCommandsLayoutNV =
6354             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_indirectCommandsLayoutNV, {} );
6355           m_device     = rhs.m_device;
6356           m_allocator  = rhs.m_allocator;
6357           m_dispatcher = rhs.m_dispatcher;
6358         }
6359         return *this;
6360       }
6361 
operator *() const6362       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & operator*() const VULKAN_HPP_NOEXCEPT
6363       {
6364         return m_indirectCommandsLayoutNV;
6365       }
6366 
getDispatcher() const6367       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6368       {
6369         return m_dispatcher;
6370       }
6371 
6372 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const6373       explicit operator bool() const VULKAN_HPP_NOEXCEPT
6374       {
6375         return m_indirectCommandsLayoutNV.operator bool();
6376       }
6377 
operator !() const6378       bool operator!() const VULKAN_HPP_NOEXCEPT
6379       {
6380         return m_indirectCommandsLayoutNV.operator!();
6381       }
6382 #  endif
6383 
6384     private:
6385       VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV                            m_indirectCommandsLayoutNV;
6386       VkDevice                                                                  m_device;
6387       const VkAllocationCallbacks *                                             m_allocator;
6388       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
6389     };
6390 
6391     class PerformanceConfigurationINTEL
6392     {
6393     public:
6394       using CType = VkPerformanceConfigurationINTEL;
6395 
6396       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6397         VULKAN_HPP_NAMESPACE::ObjectType::ePerformanceConfigurationINTEL;
6398       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6399         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
6400 
6401     public:
PerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo)6402       PerformanceConfigurationINTEL(
6403         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &        device,
6404         VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & acquireInfo )
6405         : m_device( *device ), m_dispatcher( device.getDispatcher() )
6406       {
6407         VULKAN_HPP_NAMESPACE::Result result =
6408           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquirePerformanceConfigurationINTEL(
6409             static_cast<VkDevice>( *device ),
6410             reinterpret_cast<const VkPerformanceConfigurationAcquireInfoINTEL *>( &acquireInfo ),
6411             reinterpret_cast<VkPerformanceConfigurationINTEL *>( &m_performanceConfigurationINTEL ) ) );
6412         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6413         {
6414           throwResultException( result, "vkAcquirePerformanceConfigurationINTEL" );
6415         }
6416       }
6417 
PerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPerformanceConfigurationINTEL performanceConfigurationINTEL)6418       PerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6419                                      VkPerformanceConfigurationINTEL performanceConfigurationINTEL )
6420         : m_performanceConfigurationINTEL( performanceConfigurationINTEL )
6421         , m_device( *device )
6422         , m_dispatcher( device.getDispatcher() )
6423       {}
6424 
~PerformanceConfigurationINTEL()6425       ~PerformanceConfigurationINTEL()
6426       {
6427         if ( m_performanceConfigurationINTEL )
6428         {
6429           getDispatcher()->vkReleasePerformanceConfigurationINTEL(
6430             m_device, static_cast<VkPerformanceConfigurationINTEL>( m_performanceConfigurationINTEL ) );
6431         }
6432       }
6433 
6434 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
6435       PerformanceConfigurationINTEL() = default;
6436 #  else
6437       PerformanceConfigurationINTEL() = delete;
6438 #  endif
6439       PerformanceConfigurationINTEL( PerformanceConfigurationINTEL const & ) = delete;
PerformanceConfigurationINTEL(PerformanceConfigurationINTEL && rhs)6440       PerformanceConfigurationINTEL( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT
6441         : m_performanceConfigurationINTEL(
6442             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_performanceConfigurationINTEL, {} ) )
6443         , m_device( rhs.m_device )
6444         , m_dispatcher( rhs.m_dispatcher )
6445       {}
6446       PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL const & ) = delete;
operator =(PerformanceConfigurationINTEL && rhs)6447       PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT
6448       {
6449         if ( this != &rhs )
6450         {
6451           if ( m_performanceConfigurationINTEL )
6452           {
6453             getDispatcher()->vkReleasePerformanceConfigurationINTEL(
6454               m_device, static_cast<VkPerformanceConfigurationINTEL>( m_performanceConfigurationINTEL ) );
6455           }
6456           m_performanceConfigurationINTEL =
6457             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_performanceConfigurationINTEL, {} );
6458           m_device     = rhs.m_device;
6459           m_dispatcher = rhs.m_dispatcher;
6460         }
6461         return *this;
6462       }
6463 
operator *() const6464       VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & operator*() const VULKAN_HPP_NOEXCEPT
6465       {
6466         return m_performanceConfigurationINTEL;
6467       }
6468 
getDispatcher() const6469       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6470       {
6471         return m_dispatcher;
6472       }
6473 
6474 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const6475       explicit operator bool() const VULKAN_HPP_NOEXCEPT
6476       {
6477         return m_performanceConfigurationINTEL.operator bool();
6478       }
6479 
operator !() const6480       bool operator!() const VULKAN_HPP_NOEXCEPT
6481       {
6482         return m_performanceConfigurationINTEL.operator!();
6483       }
6484 #  endif
6485 
6486     private:
6487       VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL                       m_performanceConfigurationINTEL;
6488       VkDevice                                                                  m_device;
6489       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
6490     };
6491 
6492     class PipelineCache
6493     {
6494     public:
6495       using CType = VkPipelineCache;
6496 
6497       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6498         VULKAN_HPP_NAMESPACE::ObjectType::ePipelineCache;
6499       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6500         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineCache;
6501 
6502     public:
PipelineCache(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6503       PipelineCache(
6504         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6505         VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const &                           createInfo,
6506         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6507         : m_device( *device )
6508         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6509             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6510         , m_dispatcher( device.getDispatcher() )
6511       {
6512         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
6513           getDispatcher()->vkCreatePipelineCache( static_cast<VkDevice>( *device ),
6514                                                   reinterpret_cast<const VkPipelineCacheCreateInfo *>( &createInfo ),
6515                                                   m_allocator,
6516                                                   reinterpret_cast<VkPipelineCache *>( &m_pipelineCache ) ) );
6517         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
6518         {
6519           throwResultException( result, "vkCreatePipelineCache" );
6520         }
6521       }
6522 
PipelineCache(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipelineCache pipelineCache,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6523       PipelineCache(
6524         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6525         VkPipelineCache                                                                 pipelineCache,
6526         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6527         : m_pipelineCache( pipelineCache )
6528         , m_device( *device )
6529         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6530             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6531         , m_dispatcher( device.getDispatcher() )
6532       {}
6533 
~PipelineCache()6534       ~PipelineCache()
6535       {
6536         if ( m_pipelineCache )
6537         {
6538           getDispatcher()->vkDestroyPipelineCache(
6539             m_device, static_cast<VkPipelineCache>( m_pipelineCache ), m_allocator );
6540         }
6541       }
6542 
6543 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
6544       PipelineCache() = default;
6545 #  else
6546       PipelineCache()                 = delete;
6547 #  endif
6548       PipelineCache( PipelineCache const & ) = delete;
PipelineCache(PipelineCache && rhs)6549       PipelineCache( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT
6550         : m_pipelineCache( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineCache, {} ) )
6551         , m_device( rhs.m_device )
6552         , m_allocator( rhs.m_allocator )
6553         , m_dispatcher( rhs.m_dispatcher )
6554       {}
6555       PipelineCache & operator=( PipelineCache const & ) = delete;
operator =(PipelineCache && rhs)6556       PipelineCache & operator                           =( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT
6557       {
6558         if ( this != &rhs )
6559         {
6560           if ( m_pipelineCache )
6561           {
6562             getDispatcher()->vkDestroyPipelineCache(
6563               m_device, static_cast<VkPipelineCache>( m_pipelineCache ), m_allocator );
6564           }
6565           m_pipelineCache = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineCache, {} );
6566           m_device        = rhs.m_device;
6567           m_allocator     = rhs.m_allocator;
6568           m_dispatcher    = rhs.m_dispatcher;
6569         }
6570         return *this;
6571       }
6572 
operator *() const6573       VULKAN_HPP_NAMESPACE::PipelineCache const & operator*() const VULKAN_HPP_NOEXCEPT
6574       {
6575         return m_pipelineCache;
6576       }
6577 
getDispatcher() const6578       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6579       {
6580         return m_dispatcher;
6581       }
6582 
6583 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const6584       explicit operator bool() const VULKAN_HPP_NOEXCEPT
6585       {
6586         return m_pipelineCache.operator bool();
6587       }
6588 
operator !() const6589       bool operator!() const VULKAN_HPP_NOEXCEPT
6590       {
6591         return m_pipelineCache.operator!();
6592       }
6593 #  endif
6594 
6595       //=== VK_VERSION_1_0 ===
6596 
6597       VULKAN_HPP_NODISCARD std::vector<uint8_t> getData() const;
6598 
6599       void merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches ) const;
6600 
6601     private:
6602       VULKAN_HPP_NAMESPACE::PipelineCache                                       m_pipelineCache;
6603       VkDevice                                                                  m_device;
6604       const VkAllocationCallbacks *                                             m_allocator;
6605       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
6606     };
6607 
6608     class Pipeline
6609     {
6610     public:
6611       using CType = VkPipeline;
6612 
6613       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
6614         VULKAN_HPP_NAMESPACE::ObjectType::ePipeline;
6615       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
6616         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipeline;
6617 
6618     public:
Pipeline(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6619       Pipeline(
6620         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6621         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6622                                                                                         pipelineCache,
6623         VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const &                         createInfo,
6624         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6625         : m_device( *device )
6626         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6627             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6628         , m_dispatcher( device.getDispatcher() )
6629       {
6630         m_constructorSuccessCode = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateComputePipelines(
6631           static_cast<VkDevice>( *device ),
6632           pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6633           1,
6634           reinterpret_cast<const VkComputePipelineCreateInfo *>( &createInfo ),
6635           m_allocator,
6636           reinterpret_cast<VkPipeline *>( &m_pipeline ) ) );
6637         if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
6638              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6639         {
6640           throwResultException( m_constructorSuccessCode, "vkCreateComputePipelines" );
6641         }
6642       }
6643 
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)6644       Pipeline(
6645         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6646         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6647                                                                                         pipelineCache,
6648         VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const &                        createInfo,
6649         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6650         : m_device( *device )
6651         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6652             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6653         , m_dispatcher( device.getDispatcher() )
6654       {
6655         m_constructorSuccessCode =
6656           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateGraphicsPipelines(
6657             static_cast<VkDevice>( *device ),
6658             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6659             1,
6660             reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( &createInfo ),
6661             m_allocator,
6662             reinterpret_cast<VkPipeline *>( &m_pipeline ) ) );
6663         if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
6664              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6665         {
6666           throwResultException( m_constructorSuccessCode, "vkCreateGraphicsPipelines" );
6667         }
6668       }
6669 
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)6670       Pipeline(
6671         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6672         VULKAN_HPP_NAMESPACE::Optional<
6673           const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
6674         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6675                                                                                         pipelineCache,
6676         VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const &                   createInfo,
6677         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6678         : m_device( *device )
6679         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6680             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6681         , m_dispatcher( device.getDispatcher() )
6682       {
6683         m_constructorSuccessCode =
6684           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRayTracingPipelinesKHR(
6685             static_cast<VkDevice>( *device ),
6686             deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
6687             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6688             1,
6689             reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( &createInfo ),
6690             m_allocator,
6691             reinterpret_cast<VkPipeline *>( &m_pipeline ) ) );
6692         if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
6693              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
6694              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) &&
6695              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6696         {
6697           throwResultException( m_constructorSuccessCode, "vkCreateRayTracingPipelinesKHR" );
6698         }
6699       }
6700 
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)6701       Pipeline(
6702         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6703         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6704                                                                                         pipelineCache,
6705         VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const &                    createInfo,
6706         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6707         : m_device( *device )
6708         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6709             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6710         , m_dispatcher( device.getDispatcher() )
6711       {
6712         m_constructorSuccessCode =
6713           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateRayTracingPipelinesNV(
6714             static_cast<VkDevice>( *device ),
6715             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6716             1,
6717             reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( &createInfo ),
6718             m_allocator,
6719             reinterpret_cast<VkPipeline *>( &m_pipeline ) ) );
6720         if ( ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
6721              ( m_constructorSuccessCode != VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6722         {
6723           throwResultException( m_constructorSuccessCode, "vkCreateRayTracingPipelinesNV" );
6724         }
6725       }
6726 
Pipeline(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipeline pipeline,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6727       Pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
6728                 VkPipeline                                                                      pipeline,
6729                 VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6730         : m_pipeline( pipeline )
6731         , m_device( *device )
6732         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
6733             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
6734         , m_dispatcher( device.getDispatcher() )
6735       {}
6736 
Pipeline(VkPipeline pipeline,VkDevice device,VkAllocationCallbacks const * allocator,VULKAN_HPP_NAMESPACE::Result successCode,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher)6737       Pipeline( VkPipeline                                                                pipeline,
6738                 VkDevice                                                                  device,
6739                 VkAllocationCallbacks const *                                             allocator,
6740                 VULKAN_HPP_NAMESPACE::Result                                              successCode,
6741                 VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher )
6742         : m_pipeline( pipeline )
6743         , m_device( device )
6744         , m_allocator( allocator )
6745         , m_constructorSuccessCode( successCode )
6746         , m_dispatcher( dispatcher )
6747       {}
6748 
~Pipeline()6749       ~Pipeline()
6750       {
6751         if ( m_pipeline )
6752         {
6753           getDispatcher()->vkDestroyPipeline( m_device, static_cast<VkPipeline>( m_pipeline ), m_allocator );
6754         }
6755       }
6756 
6757 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
6758       Pipeline() = default;
6759 #  else
6760       Pipeline()                      = delete;
6761 #  endif
6762       Pipeline( Pipeline const & ) = delete;
Pipeline(Pipeline && rhs)6763       Pipeline( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT
6764         : m_pipeline( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipeline, {} ) )
6765         , m_device( rhs.m_device )
6766         , m_allocator( rhs.m_allocator )
6767         , m_dispatcher( rhs.m_dispatcher )
6768       {}
6769       Pipeline & operator=( Pipeline const & ) = delete;
operator =(Pipeline && rhs)6770       Pipeline & operator                      =( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT
6771       {
6772         if ( this != &rhs )
6773         {
6774           if ( m_pipeline )
6775           {
6776             getDispatcher()->vkDestroyPipeline( m_device, static_cast<VkPipeline>( m_pipeline ), m_allocator );
6777           }
6778           m_pipeline   = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipeline, {} );
6779           m_device     = rhs.m_device;
6780           m_allocator  = rhs.m_allocator;
6781           m_dispatcher = rhs.m_dispatcher;
6782         }
6783         return *this;
6784       }
6785 
operator *() const6786       VULKAN_HPP_NAMESPACE::Pipeline const & operator*() const VULKAN_HPP_NOEXCEPT
6787       {
6788         return m_pipeline;
6789       }
6790 
getConstructorSuccessCode() const6791       VULKAN_HPP_NAMESPACE::Result getConstructorSuccessCode() const
6792       {
6793         return m_constructorSuccessCode;
6794       }
6795 
getDispatcher() const6796       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
6797       {
6798         return m_dispatcher;
6799       }
6800 
6801 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const6802       explicit operator bool() const VULKAN_HPP_NOEXCEPT
6803       {
6804         return m_pipeline.operator bool();
6805       }
6806 
operator !() const6807       bool operator!() const VULKAN_HPP_NOEXCEPT
6808       {
6809         return m_pipeline.operator!();
6810       }
6811 #  endif
6812 
6813       //=== VK_AMD_shader_info ===
6814 
6815       VULKAN_HPP_NODISCARD std::vector<uint8_t>
6816                            getShaderInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,
6817                                              VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD   infoType ) const;
6818 
6819       //=== VK_NV_ray_tracing ===
6820 
6821       template <typename T>
6822       VULKAN_HPP_NODISCARD std::vector<T>
6823                            getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
6824 
6825       template <typename T>
6826       VULKAN_HPP_NODISCARD T getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const;
6827 
6828       void compileDeferredNV( uint32_t shader ) const;
6829 
6830       //=== VK_KHR_ray_tracing_pipeline ===
6831 
6832       template <typename T>
6833       VULKAN_HPP_NODISCARD std::vector<T>
6834                            getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const;
6835 
6836       template <typename T>
6837       VULKAN_HPP_NODISCARD T getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const;
6838 
6839       template <typename T>
6840       VULKAN_HPP_NODISCARD std::vector<T> getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup,
6841                                                                                            uint32_t groupCount,
6842                                                                                            size_t   dataSize ) const;
6843 
6844       template <typename T>
6845       VULKAN_HPP_NODISCARD T getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup,
6846                                                                              uint32_t groupCount ) const;
6847 
6848       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getRayTracingShaderGroupStackSizeKHR(
6849         uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT;
6850 
6851     private:
6852       VULKAN_HPP_NAMESPACE::Pipeline                                            m_pipeline;
6853       VkDevice                                                                  m_device;
6854       const VkAllocationCallbacks *                                             m_allocator;
6855       VULKAN_HPP_NAMESPACE::Result                                              m_constructorSuccessCode;
6856       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
6857     };
6858 
6859     class Pipelines : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Pipeline>
6860     {
6861     public:
Pipelines(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const & pipelineCache,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)6862       Pipelines(
6863         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6864         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6865                                                                                                   pipelineCache,
6866         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo> const & createInfos,
6867         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>           allocator = nullptr )
6868       {
6869         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
6870         std::vector<VkPipeline>                                                   pipelines( createInfos.size() );
6871         VULKAN_HPP_NAMESPACE::Result                                              result =
6872           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateComputePipelines(
6873             static_cast<VkDevice>( *device ),
6874             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6875             createInfos.size(),
6876             reinterpret_cast<const VkComputePipelineCreateInfo *>( createInfos.data() ),
6877             reinterpret_cast<const VkAllocationCallbacks *>(
6878               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
6879             pipelines.data() ) );
6880         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) ||
6881              ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6882         {
6883           this->reserve( createInfos.size() );
6884           for ( auto const & pipeline : pipelines )
6885           {
6886             this->emplace_back( pipeline,
6887                                 static_cast<VkDevice>( *device ),
6888                                 reinterpret_cast<const VkAllocationCallbacks *>(
6889                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
6890                                 result,
6891                                 dispatcher );
6892           }
6893         }
6894         else
6895         {
6896           throwResultException( result, "vkCreateComputePipelines" );
6897         }
6898       }
6899 
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)6900       Pipelines(
6901         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6902         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6903                                                                                                    pipelineCache,
6904         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo> const & createInfos,
6905         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>            allocator = nullptr )
6906       {
6907         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
6908         std::vector<VkPipeline>                                                   pipelines( createInfos.size() );
6909         VULKAN_HPP_NAMESPACE::Result                                              result =
6910           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateGraphicsPipelines(
6911             static_cast<VkDevice>( *device ),
6912             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6913             createInfos.size(),
6914             reinterpret_cast<const VkGraphicsPipelineCreateInfo *>( createInfos.data() ),
6915             reinterpret_cast<const VkAllocationCallbacks *>(
6916               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
6917             pipelines.data() ) );
6918         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) ||
6919              ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6920         {
6921           this->reserve( createInfos.size() );
6922           for ( auto const & pipeline : pipelines )
6923           {
6924             this->emplace_back( pipeline,
6925                                 static_cast<VkDevice>( *device ),
6926                                 reinterpret_cast<const VkAllocationCallbacks *>(
6927                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
6928                                 result,
6929                                 dispatcher );
6930           }
6931         }
6932         else
6933         {
6934           throwResultException( result, "vkCreateGraphicsPipelines" );
6935         }
6936       }
6937 
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)6938       Pipelines(
6939         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6940         VULKAN_HPP_NAMESPACE::Optional<
6941           const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeferredOperationKHR> const & deferredOperation,
6942         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6943                                                                                                         pipelineCache,
6944         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR> const & createInfos,
6945         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6946       {
6947         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
6948         std::vector<VkPipeline>                                                   pipelines( createInfos.size() );
6949         VULKAN_HPP_NAMESPACE::Result                                              result =
6950           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateRayTracingPipelinesKHR(
6951             static_cast<VkDevice>( *device ),
6952             deferredOperation ? static_cast<VkDeferredOperationKHR>( **deferredOperation ) : 0,
6953             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6954             createInfos.size(),
6955             reinterpret_cast<const VkRayTracingPipelineCreateInfoKHR *>( createInfos.data() ),
6956             reinterpret_cast<const VkAllocationCallbacks *>(
6957               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
6958             pipelines.data() ) );
6959         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) ||
6960              ( result == VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) ||
6961              ( result == VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) ||
6962              ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
6963         {
6964           this->reserve( createInfos.size() );
6965           for ( auto const & pipeline : pipelines )
6966           {
6967             this->emplace_back( pipeline,
6968                                 static_cast<VkDevice>( *device ),
6969                                 reinterpret_cast<const VkAllocationCallbacks *>(
6970                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
6971                                 result,
6972                                 dispatcher );
6973           }
6974         }
6975         else
6976         {
6977           throwResultException( result, "vkCreateRayTracingPipelinesKHR" );
6978         }
6979       }
6980 
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)6981       Pipelines(
6982         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
6983         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::PipelineCache> const &
6984                                                                                                        pipelineCache,
6985         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV> const & createInfos,
6986         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
6987       {
6988         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
6989         std::vector<VkPipeline>                                                   pipelines( createInfos.size() );
6990         VULKAN_HPP_NAMESPACE::Result                                              result =
6991           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateRayTracingPipelinesNV(
6992             static_cast<VkDevice>( *device ),
6993             pipelineCache ? static_cast<VkPipelineCache>( **pipelineCache ) : 0,
6994             createInfos.size(),
6995             reinterpret_cast<const VkRayTracingPipelineCreateInfoNV *>( createInfos.data() ),
6996             reinterpret_cast<const VkAllocationCallbacks *>(
6997               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
6998             pipelines.data() ) );
6999         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) ||
7000              ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) )
7001         {
7002           this->reserve( createInfos.size() );
7003           for ( auto const & pipeline : pipelines )
7004           {
7005             this->emplace_back( pipeline,
7006                                 static_cast<VkDevice>( *device ),
7007                                 reinterpret_cast<const VkAllocationCallbacks *>(
7008                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
7009                                 result,
7010                                 dispatcher );
7011           }
7012         }
7013         else
7014         {
7015           throwResultException( result, "vkCreateRayTracingPipelinesNV" );
7016         }
7017       }
7018 
7019 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7020       Pipelines() = default;
7021 #  else
7022       Pipelines()                     = delete;
7023 #  endif
7024       Pipelines( Pipelines const & ) = delete;
7025       Pipelines( Pipelines && rhs )  = default;
7026       Pipelines & operator=( Pipelines const & ) = delete;
7027       Pipelines & operator=( Pipelines && rhs ) = default;
7028     };
7029 
7030     class PipelineLayout
7031     {
7032     public:
7033       using CType = VkPipelineLayout;
7034 
7035       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7036         VULKAN_HPP_NAMESPACE::ObjectType::ePipelineLayout;
7037       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7038         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineLayout;
7039 
7040     public:
PipelineLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7041       PipelineLayout(
7042         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7043         VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const &                          createInfo,
7044         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7045         : m_device( *device )
7046         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7047             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7048         , m_dispatcher( device.getDispatcher() )
7049       {
7050         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7051           getDispatcher()->vkCreatePipelineLayout( static_cast<VkDevice>( *device ),
7052                                                    reinterpret_cast<const VkPipelineLayoutCreateInfo *>( &createInfo ),
7053                                                    m_allocator,
7054                                                    reinterpret_cast<VkPipelineLayout *>( &m_pipelineLayout ) ) );
7055         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7056         {
7057           throwResultException( result, "vkCreatePipelineLayout" );
7058         }
7059       }
7060 
PipelineLayout(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPipelineLayout pipelineLayout,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7061       PipelineLayout(
7062         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7063         VkPipelineLayout                                                                pipelineLayout,
7064         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7065         : m_pipelineLayout( pipelineLayout )
7066         , m_device( *device )
7067         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7068             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7069         , m_dispatcher( device.getDispatcher() )
7070       {}
7071 
~PipelineLayout()7072       ~PipelineLayout()
7073       {
7074         if ( m_pipelineLayout )
7075         {
7076           getDispatcher()->vkDestroyPipelineLayout(
7077             m_device, static_cast<VkPipelineLayout>( m_pipelineLayout ), m_allocator );
7078         }
7079       }
7080 
7081 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7082       PipelineLayout() = default;
7083 #  else
7084       PipelineLayout()                = delete;
7085 #  endif
7086       PipelineLayout( PipelineLayout const & ) = delete;
PipelineLayout(PipelineLayout && rhs)7087       PipelineLayout( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT
7088         : m_pipelineLayout( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineLayout, {} ) )
7089         , m_device( rhs.m_device )
7090         , m_allocator( rhs.m_allocator )
7091         , m_dispatcher( rhs.m_dispatcher )
7092       {}
7093       PipelineLayout & operator=( PipelineLayout const & ) = delete;
operator =(PipelineLayout && rhs)7094       PipelineLayout & operator                            =( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT
7095       {
7096         if ( this != &rhs )
7097         {
7098           if ( m_pipelineLayout )
7099           {
7100             getDispatcher()->vkDestroyPipelineLayout(
7101               m_device, static_cast<VkPipelineLayout>( m_pipelineLayout ), m_allocator );
7102           }
7103           m_pipelineLayout = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_pipelineLayout, {} );
7104           m_device         = rhs.m_device;
7105           m_allocator      = rhs.m_allocator;
7106           m_dispatcher     = rhs.m_dispatcher;
7107         }
7108         return *this;
7109       }
7110 
operator *() const7111       VULKAN_HPP_NAMESPACE::PipelineLayout const & operator*() const VULKAN_HPP_NOEXCEPT
7112       {
7113         return m_pipelineLayout;
7114       }
7115 
getDispatcher() const7116       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7117       {
7118         return m_dispatcher;
7119       }
7120 
7121 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const7122       explicit operator bool() const VULKAN_HPP_NOEXCEPT
7123       {
7124         return m_pipelineLayout.operator bool();
7125       }
7126 
operator !() const7127       bool operator!() const VULKAN_HPP_NOEXCEPT
7128       {
7129         return m_pipelineLayout.operator!();
7130       }
7131 #  endif
7132 
7133     private:
7134       VULKAN_HPP_NAMESPACE::PipelineLayout                                      m_pipelineLayout;
7135       VkDevice                                                                  m_device;
7136       const VkAllocationCallbacks *                                             m_allocator;
7137       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
7138     };
7139 
7140     class PrivateDataSlotEXT
7141     {
7142     public:
7143       using CType = VkPrivateDataSlotEXT;
7144 
7145       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7146         VULKAN_HPP_NAMESPACE::ObjectType::ePrivateDataSlotEXT;
7147       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7148         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
7149 
7150     public:
PrivateDataSlotEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7151       PrivateDataSlotEXT(
7152         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7153         VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT const &                      createInfo,
7154         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7155         : m_device( *device )
7156         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7157             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7158         , m_dispatcher( device.getDispatcher() )
7159       {
7160         VULKAN_HPP_NAMESPACE::Result result =
7161           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreatePrivateDataSlotEXT(
7162             static_cast<VkDevice>( *device ),
7163             reinterpret_cast<const VkPrivateDataSlotCreateInfoEXT *>( &createInfo ),
7164             m_allocator,
7165             reinterpret_cast<VkPrivateDataSlotEXT *>( &m_privateDataSlotEXT ) ) );
7166         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7167         {
7168           throwResultException( result, "vkCreatePrivateDataSlotEXT" );
7169         }
7170       }
7171 
PrivateDataSlotEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkPrivateDataSlotEXT privateDataSlotEXT,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7172       PrivateDataSlotEXT(
7173         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7174         VkPrivateDataSlotEXT                                                            privateDataSlotEXT,
7175         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7176         : m_privateDataSlotEXT( privateDataSlotEXT )
7177         , m_device( *device )
7178         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7179             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7180         , m_dispatcher( device.getDispatcher() )
7181       {}
7182 
~PrivateDataSlotEXT()7183       ~PrivateDataSlotEXT()
7184       {
7185         if ( m_privateDataSlotEXT )
7186         {
7187           getDispatcher()->vkDestroyPrivateDataSlotEXT(
7188             m_device, static_cast<VkPrivateDataSlotEXT>( m_privateDataSlotEXT ), m_allocator );
7189         }
7190       }
7191 
7192 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7193       PrivateDataSlotEXT() = default;
7194 #  else
7195       PrivateDataSlotEXT()            = delete;
7196 #  endif
7197       PrivateDataSlotEXT( PrivateDataSlotEXT const & ) = delete;
PrivateDataSlotEXT(PrivateDataSlotEXT && rhs)7198       PrivateDataSlotEXT( PrivateDataSlotEXT && rhs ) VULKAN_HPP_NOEXCEPT
7199         : m_privateDataSlotEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_privateDataSlotEXT,
7200                                                                                            {} ) )
7201         , m_device( rhs.m_device )
7202         , m_allocator( rhs.m_allocator )
7203         , m_dispatcher( rhs.m_dispatcher )
7204       {}
7205       PrivateDataSlotEXT & operator=( PrivateDataSlotEXT const & ) = delete;
operator =(PrivateDataSlotEXT && rhs)7206       PrivateDataSlotEXT & operator                                =( PrivateDataSlotEXT && rhs ) VULKAN_HPP_NOEXCEPT
7207       {
7208         if ( this != &rhs )
7209         {
7210           if ( m_privateDataSlotEXT )
7211           {
7212             getDispatcher()->vkDestroyPrivateDataSlotEXT(
7213               m_device, static_cast<VkPrivateDataSlotEXT>( m_privateDataSlotEXT ), m_allocator );
7214           }
7215           m_privateDataSlotEXT =
7216             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_privateDataSlotEXT, {} );
7217           m_device     = rhs.m_device;
7218           m_allocator  = rhs.m_allocator;
7219           m_dispatcher = rhs.m_dispatcher;
7220         }
7221         return *this;
7222       }
7223 
operator *() const7224       VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT const & operator*() const VULKAN_HPP_NOEXCEPT
7225       {
7226         return m_privateDataSlotEXT;
7227       }
7228 
getDispatcher() const7229       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7230       {
7231         return m_dispatcher;
7232       }
7233 
7234 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const7235       explicit operator bool() const VULKAN_HPP_NOEXCEPT
7236       {
7237         return m_privateDataSlotEXT.operator bool();
7238       }
7239 
operator !() const7240       bool operator!() const VULKAN_HPP_NOEXCEPT
7241       {
7242         return m_privateDataSlotEXT.operator!();
7243       }
7244 #  endif
7245 
7246     private:
7247       VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT                                  m_privateDataSlotEXT;
7248       VkDevice                                                                  m_device;
7249       const VkAllocationCallbacks *                                             m_allocator;
7250       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
7251     };
7252 
7253     class QueryPool
7254     {
7255     public:
7256       using CType = VkQueryPool;
7257 
7258       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7259         VULKAN_HPP_NAMESPACE::ObjectType::eQueryPool;
7260       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7261         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueryPool;
7262 
7263     public:
QueryPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7264       QueryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7265                  VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const &                               createInfo,
7266                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7267         : m_device( *device )
7268         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7269             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7270         , m_dispatcher( device.getDispatcher() )
7271       {
7272         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7273           getDispatcher()->vkCreateQueryPool( static_cast<VkDevice>( *device ),
7274                                               reinterpret_cast<const VkQueryPoolCreateInfo *>( &createInfo ),
7275                                               m_allocator,
7276                                               reinterpret_cast<VkQueryPool *>( &m_queryPool ) ) );
7277         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7278         {
7279           throwResultException( result, "vkCreateQueryPool" );
7280         }
7281       }
7282 
QueryPool(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkQueryPool queryPool,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7283       QueryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7284                  VkQueryPool                                                                     queryPool,
7285                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7286         : m_queryPool( queryPool )
7287         , m_device( *device )
7288         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7289             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7290         , m_dispatcher( device.getDispatcher() )
7291       {}
7292 
~QueryPool()7293       ~QueryPool()
7294       {
7295         if ( m_queryPool )
7296         {
7297           getDispatcher()->vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( m_queryPool ), m_allocator );
7298         }
7299       }
7300 
7301 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7302       QueryPool() = default;
7303 #  else
7304       QueryPool()                     = delete;
7305 #  endif
7306       QueryPool( QueryPool const & ) = delete;
QueryPool(QueryPool && rhs)7307       QueryPool( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT
7308         : m_queryPool( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queryPool, {} ) )
7309         , m_device( rhs.m_device )
7310         , m_allocator( rhs.m_allocator )
7311         , m_dispatcher( rhs.m_dispatcher )
7312       {}
7313       QueryPool & operator=( QueryPool const & ) = delete;
operator =(QueryPool && rhs)7314       QueryPool & operator                       =( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT
7315       {
7316         if ( this != &rhs )
7317         {
7318           if ( m_queryPool )
7319           {
7320             getDispatcher()->vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( m_queryPool ), m_allocator );
7321           }
7322           m_queryPool  = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queryPool, {} );
7323           m_device     = rhs.m_device;
7324           m_allocator  = rhs.m_allocator;
7325           m_dispatcher = rhs.m_dispatcher;
7326         }
7327         return *this;
7328       }
7329 
operator *() const7330       VULKAN_HPP_NAMESPACE::QueryPool const & operator*() const VULKAN_HPP_NOEXCEPT
7331       {
7332         return m_queryPool;
7333       }
7334 
getDispatcher() const7335       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7336       {
7337         return m_dispatcher;
7338       }
7339 
7340 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const7341       explicit operator bool() const VULKAN_HPP_NOEXCEPT
7342       {
7343         return m_queryPool.operator bool();
7344       }
7345 
operator !() const7346       bool operator!() const VULKAN_HPP_NOEXCEPT
7347       {
7348         return m_queryPool.operator!();
7349       }
7350 #  endif
7351 
7352       //=== VK_VERSION_1_0 ===
7353 
7354       template <typename T>
7355       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, std::vector<T>>
7356                            getResults( uint32_t                               firstQuery,
7357                                        uint32_t                               queryCount,
7358                                        size_t                                 dataSize,
7359                                        VULKAN_HPP_NAMESPACE::DeviceSize       stride,
7360                                        VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7361 
7362       template <typename T>
7363       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, T>
7364                            getResult( uint32_t                               firstQuery,
7365                                       uint32_t                               queryCount,
7366                                       VULKAN_HPP_NAMESPACE::DeviceSize       stride,
7367                                       VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7368 
7369       //=== VK_VERSION_1_2 ===
7370 
7371       void reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
7372 
7373       //=== VK_EXT_host_query_reset ===
7374 
7375       void resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT;
7376 
7377     private:
7378       VULKAN_HPP_NAMESPACE::QueryPool                                           m_queryPool;
7379       VkDevice                                                                  m_device;
7380       const VkAllocationCallbacks *                                             m_allocator;
7381       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
7382     };
7383 
7384     class Queue
7385     {
7386     public:
7387       using CType = VkQueue;
7388 
7389       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7390         VULKAN_HPP_NAMESPACE::ObjectType::eQueue;
7391       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7392         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueue;
7393 
7394     public:
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,uint32_t queueFamilyIndex,uint32_t queueIndex)7395       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7396              uint32_t                                                        queueFamilyIndex,
7397              uint32_t                                                        queueIndex )
7398         : m_dispatcher( device.getDispatcher() )
7399       {
7400         getDispatcher()->vkGetDeviceQueue(
7401           static_cast<VkDevice>( *device ), queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue *>( &m_queue ) );
7402       }
7403 
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & queueInfo)7404       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,
7405              VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const &                  queueInfo )
7406         : m_dispatcher( device.getDispatcher() )
7407       {
7408         getDispatcher()->vkGetDeviceQueue2( static_cast<VkDevice>( *device ),
7409                                             reinterpret_cast<const VkDeviceQueueInfo2 *>( &queueInfo ),
7410                                             reinterpret_cast<VkQueue *>( &m_queue ) );
7411       }
7412 
Queue(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkQueue queue)7413       Queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device, VkQueue queue )
7414         : m_queue( queue ), m_dispatcher( device.getDispatcher() )
7415       {}
7416 
7417 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7418       Queue() = default;
7419 #  else
7420       Queue()                         = delete;
7421 #  endif
7422       Queue( Queue const & ) = delete;
Queue(Queue && rhs)7423       Queue( Queue && rhs ) VULKAN_HPP_NOEXCEPT
7424         : m_queue( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queue, {} ) )
7425         , m_dispatcher( rhs.m_dispatcher )
7426       {}
7427       Queue & operator=( Queue const & ) = delete;
operator =(Queue && rhs)7428       Queue & operator                   =( Queue && rhs ) VULKAN_HPP_NOEXCEPT
7429       {
7430         if ( this != &rhs )
7431         {
7432           m_queue      = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_queue, {} );
7433           m_dispatcher = rhs.m_dispatcher;
7434         }
7435         return *this;
7436       }
7437 
operator *() const7438       VULKAN_HPP_NAMESPACE::Queue const & operator*() const VULKAN_HPP_NOEXCEPT
7439       {
7440         return m_queue;
7441       }
7442 
getDispatcher() const7443       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7444       {
7445         return m_dispatcher;
7446       }
7447 
7448 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const7449       explicit operator bool() const VULKAN_HPP_NOEXCEPT
7450       {
7451         return m_queue.operator bool();
7452       }
7453 
operator !() const7454       bool operator!() const VULKAN_HPP_NOEXCEPT
7455       {
7456         return m_queue.operator!();
7457       }
7458 #  endif
7459 
7460       //=== VK_VERSION_1_0 ===
7461 
7462       void submit( ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,
7463                    VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7464 
7465       void waitIdle() const;
7466 
7467       void bindSparse( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,
7468                        VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7469 
7470       //=== VK_KHR_swapchain ===
7471 
7472       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result presentKHR( const PresentInfoKHR & presentInfo ) const;
7473 
7474       //=== VK_EXT_debug_utils ===
7475 
7476       void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
7477 
7478       void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT;
7479 
7480       void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT;
7481 
7482       //=== VK_NV_device_diagnostic_checkpoints ===
7483 
7484       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV>
7485                            getCheckpointDataNV() const VULKAN_HPP_NOEXCEPT;
7486 
7487       //=== VK_INTEL_performance_query ===
7488 
7489       void setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const;
7490 
7491       //=== VK_KHR_synchronization2 ===
7492 
7493       void submit2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2KHR> const & submits,
7494                        VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
7495 
7496       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV>
7497                            getCheckpointData2NV() const VULKAN_HPP_NOEXCEPT;
7498 
7499     private:
7500       VULKAN_HPP_NAMESPACE::Queue                                               m_queue;
7501       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
7502     };
7503 
7504     class RenderPass
7505     {
7506     public:
7507       using CType = VkRenderPass;
7508 
7509       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7510         VULKAN_HPP_NAMESPACE::ObjectType::eRenderPass;
7511       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7512         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eRenderPass;
7513 
7514     public:
RenderPass(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7515       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7516                   VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const &                              createInfo,
7517                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7518         : m_device( *device )
7519         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7520             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7521         , m_dispatcher( device.getDispatcher() )
7522       {
7523         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7524           getDispatcher()->vkCreateRenderPass( static_cast<VkDevice>( *device ),
7525                                                reinterpret_cast<const VkRenderPassCreateInfo *>( &createInfo ),
7526                                                m_allocator,
7527                                                reinterpret_cast<VkRenderPass *>( &m_renderPass ) ) );
7528         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7529         {
7530           throwResultException( result, "vkCreateRenderPass" );
7531         }
7532       }
7533 
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)7534       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7535                   VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const &                             createInfo,
7536                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7537         : m_device( *device )
7538         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7539             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7540         , m_dispatcher( device.getDispatcher() )
7541       {
7542         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7543           getDispatcher()->vkCreateRenderPass2( static_cast<VkDevice>( *device ),
7544                                                 reinterpret_cast<const VkRenderPassCreateInfo2 *>( &createInfo ),
7545                                                 m_allocator,
7546                                                 reinterpret_cast<VkRenderPass *>( &m_renderPass ) ) );
7547         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7548         {
7549           throwResultException( result, "vkCreateRenderPass2" );
7550         }
7551       }
7552 
RenderPass(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkRenderPass renderPass,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7553       RenderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7554                   VkRenderPass                                                                    renderPass,
7555                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7556         : m_renderPass( renderPass )
7557         , m_device( *device )
7558         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7559             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7560         , m_dispatcher( device.getDispatcher() )
7561       {}
7562 
~RenderPass()7563       ~RenderPass()
7564       {
7565         if ( m_renderPass )
7566         {
7567           getDispatcher()->vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( m_renderPass ), m_allocator );
7568         }
7569       }
7570 
7571 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7572       RenderPass() = default;
7573 #  else
7574       RenderPass()                    = delete;
7575 #  endif
7576       RenderPass( RenderPass const & ) = delete;
RenderPass(RenderPass && rhs)7577       RenderPass( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT
7578         : m_renderPass( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_renderPass, {} ) )
7579         , m_device( rhs.m_device )
7580         , m_allocator( rhs.m_allocator )
7581         , m_dispatcher( rhs.m_dispatcher )
7582       {}
7583       RenderPass & operator=( RenderPass const & ) = delete;
operator =(RenderPass && rhs)7584       RenderPass & operator                        =( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT
7585       {
7586         if ( this != &rhs )
7587         {
7588           if ( m_renderPass )
7589           {
7590             getDispatcher()->vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( m_renderPass ), m_allocator );
7591           }
7592           m_renderPass = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_renderPass, {} );
7593           m_device     = rhs.m_device;
7594           m_allocator  = rhs.m_allocator;
7595           m_dispatcher = rhs.m_dispatcher;
7596         }
7597         return *this;
7598       }
7599 
operator *() const7600       VULKAN_HPP_NAMESPACE::RenderPass const & operator*() const VULKAN_HPP_NOEXCEPT
7601       {
7602         return m_renderPass;
7603       }
7604 
getDispatcher() const7605       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7606       {
7607         return m_dispatcher;
7608       }
7609 
7610 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const7611       explicit operator bool() const VULKAN_HPP_NOEXCEPT
7612       {
7613         return m_renderPass.operator bool();
7614       }
7615 
operator !() const7616       bool operator!() const VULKAN_HPP_NOEXCEPT
7617       {
7618         return m_renderPass.operator!();
7619       }
7620 #  endif
7621 
7622       //=== VK_VERSION_1_0 ===
7623 
7624       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Extent2D getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT;
7625 
7626       //=== VK_HUAWEI_subpass_shading ===
7627 
7628       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, VULKAN_HPP_NAMESPACE::Extent2D>
7629                            getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI() const;
7630 
7631     private:
7632       VULKAN_HPP_NAMESPACE::RenderPass                                          m_renderPass;
7633       VkDevice                                                                  m_device;
7634       const VkAllocationCallbacks *                                             m_allocator;
7635       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
7636     };
7637 
7638     class Sampler
7639     {
7640     public:
7641       using CType = VkSampler;
7642 
7643       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7644         VULKAN_HPP_NAMESPACE::ObjectType::eSampler;
7645       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7646         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSampler;
7647 
7648     public:
Sampler(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7649       Sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7650                VULKAN_HPP_NAMESPACE::SamplerCreateInfo const &                                 createInfo,
7651                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7652         : m_device( *device )
7653         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7654             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7655         , m_dispatcher( device.getDispatcher() )
7656       {
7657         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7658           getDispatcher()->vkCreateSampler( static_cast<VkDevice>( *device ),
7659                                             reinterpret_cast<const VkSamplerCreateInfo *>( &createInfo ),
7660                                             m_allocator,
7661                                             reinterpret_cast<VkSampler *>( &m_sampler ) ) );
7662         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7663         {
7664           throwResultException( result, "vkCreateSampler" );
7665         }
7666       }
7667 
Sampler(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSampler sampler,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7668       Sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7669                VkSampler                                                                       sampler,
7670                VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7671         : m_sampler( sampler )
7672         , m_device( *device )
7673         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7674             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7675         , m_dispatcher( device.getDispatcher() )
7676       {}
7677 
~Sampler()7678       ~Sampler()
7679       {
7680         if ( m_sampler )
7681         {
7682           getDispatcher()->vkDestroySampler( m_device, static_cast<VkSampler>( m_sampler ), m_allocator );
7683         }
7684       }
7685 
7686 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7687       Sampler() = default;
7688 #  else
7689       Sampler()                       = delete;
7690 #  endif
7691       Sampler( Sampler const & ) = delete;
Sampler(Sampler && rhs)7692       Sampler( Sampler && rhs ) VULKAN_HPP_NOEXCEPT
7693         : m_sampler( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_sampler, {} ) )
7694         , m_device( rhs.m_device )
7695         , m_allocator( rhs.m_allocator )
7696         , m_dispatcher( rhs.m_dispatcher )
7697       {}
7698       Sampler & operator=( Sampler const & ) = delete;
operator =(Sampler && rhs)7699       Sampler & operator                     =( Sampler && rhs ) VULKAN_HPP_NOEXCEPT
7700       {
7701         if ( this != &rhs )
7702         {
7703           if ( m_sampler )
7704           {
7705             getDispatcher()->vkDestroySampler( m_device, static_cast<VkSampler>( m_sampler ), m_allocator );
7706           }
7707           m_sampler    = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_sampler, {} );
7708           m_device     = rhs.m_device;
7709           m_allocator  = rhs.m_allocator;
7710           m_dispatcher = rhs.m_dispatcher;
7711         }
7712         return *this;
7713       }
7714 
operator *() const7715       VULKAN_HPP_NAMESPACE::Sampler const & operator*() const VULKAN_HPP_NOEXCEPT
7716       {
7717         return m_sampler;
7718       }
7719 
getDispatcher() const7720       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7721       {
7722         return m_dispatcher;
7723       }
7724 
7725 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const7726       explicit operator bool() const VULKAN_HPP_NOEXCEPT
7727       {
7728         return m_sampler.operator bool();
7729       }
7730 
operator !() const7731       bool operator!() const VULKAN_HPP_NOEXCEPT
7732       {
7733         return m_sampler.operator!();
7734       }
7735 #  endif
7736 
7737     private:
7738       VULKAN_HPP_NAMESPACE::Sampler                                             m_sampler;
7739       VkDevice                                                                  m_device;
7740       const VkAllocationCallbacks *                                             m_allocator;
7741       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
7742     };
7743 
7744     class SamplerYcbcrConversion
7745     {
7746     public:
7747       using CType = VkSamplerYcbcrConversion;
7748 
7749       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7750         VULKAN_HPP_NAMESPACE::ObjectType::eSamplerYcbcrConversion;
7751       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7752         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSamplerYcbcrConversion;
7753 
7754     public:
SamplerYcbcrConversion(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7755       SamplerYcbcrConversion(
7756         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7757         VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const &                  createInfo,
7758         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7759         : m_device( *device )
7760         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7761             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7762         , m_dispatcher( device.getDispatcher() )
7763       {
7764         VULKAN_HPP_NAMESPACE::Result result =
7765           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateSamplerYcbcrConversion(
7766             static_cast<VkDevice>( *device ),
7767             reinterpret_cast<const VkSamplerYcbcrConversionCreateInfo *>( &createInfo ),
7768             m_allocator,
7769             reinterpret_cast<VkSamplerYcbcrConversion *>( &m_samplerYcbcrConversion ) ) );
7770         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7771         {
7772           throwResultException( result, "vkCreateSamplerYcbcrConversion" );
7773         }
7774       }
7775 
SamplerYcbcrConversion(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSamplerYcbcrConversion samplerYcbcrConversion,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7776       SamplerYcbcrConversion(
7777         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7778         VkSamplerYcbcrConversion                                                        samplerYcbcrConversion,
7779         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7780         : m_samplerYcbcrConversion( samplerYcbcrConversion )
7781         , m_device( *device )
7782         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7783             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7784         , m_dispatcher( device.getDispatcher() )
7785       {}
7786 
~SamplerYcbcrConversion()7787       ~SamplerYcbcrConversion()
7788       {
7789         if ( m_samplerYcbcrConversion )
7790         {
7791           getDispatcher()->vkDestroySamplerYcbcrConversion(
7792             m_device, static_cast<VkSamplerYcbcrConversion>( m_samplerYcbcrConversion ), m_allocator );
7793         }
7794       }
7795 
7796 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7797       SamplerYcbcrConversion() = default;
7798 #  else
7799       SamplerYcbcrConversion()        = delete;
7800 #  endif
7801       SamplerYcbcrConversion( SamplerYcbcrConversion const & ) = delete;
SamplerYcbcrConversion(SamplerYcbcrConversion && rhs)7802       SamplerYcbcrConversion( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT
7803         : m_samplerYcbcrConversion(
7804             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_samplerYcbcrConversion, {} ) )
7805         , m_device( rhs.m_device )
7806         , m_allocator( rhs.m_allocator )
7807         , m_dispatcher( rhs.m_dispatcher )
7808       {}
7809       SamplerYcbcrConversion & operator=( SamplerYcbcrConversion const & ) = delete;
operator =(SamplerYcbcrConversion && rhs)7810       SamplerYcbcrConversion & operator=( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT
7811       {
7812         if ( this != &rhs )
7813         {
7814           if ( m_samplerYcbcrConversion )
7815           {
7816             getDispatcher()->vkDestroySamplerYcbcrConversion(
7817               m_device, static_cast<VkSamplerYcbcrConversion>( m_samplerYcbcrConversion ), m_allocator );
7818           }
7819           m_samplerYcbcrConversion =
7820             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_samplerYcbcrConversion, {} );
7821           m_device     = rhs.m_device;
7822           m_allocator  = rhs.m_allocator;
7823           m_dispatcher = rhs.m_dispatcher;
7824         }
7825         return *this;
7826       }
7827 
operator *() const7828       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & operator*() const VULKAN_HPP_NOEXCEPT
7829       {
7830         return m_samplerYcbcrConversion;
7831       }
7832 
getDispatcher() const7833       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7834       {
7835         return m_dispatcher;
7836       }
7837 
7838 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const7839       explicit operator bool() const VULKAN_HPP_NOEXCEPT
7840       {
7841         return m_samplerYcbcrConversion.operator bool();
7842       }
7843 
operator !() const7844       bool operator!() const VULKAN_HPP_NOEXCEPT
7845       {
7846         return m_samplerYcbcrConversion.operator!();
7847       }
7848 #  endif
7849 
7850     private:
7851       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion                              m_samplerYcbcrConversion;
7852       VkDevice                                                                  m_device;
7853       const VkAllocationCallbacks *                                             m_allocator;
7854       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
7855     };
7856 
7857     class Semaphore
7858     {
7859     public:
7860       using CType = VkSemaphore;
7861 
7862       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7863         VULKAN_HPP_NAMESPACE::ObjectType::eSemaphore;
7864       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7865         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSemaphore;
7866 
7867     public:
Semaphore(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7868       Semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7869                  VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const &                               createInfo,
7870                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7871         : m_device( *device )
7872         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7873             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7874         , m_dispatcher( device.getDispatcher() )
7875       {
7876         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7877           getDispatcher()->vkCreateSemaphore( static_cast<VkDevice>( *device ),
7878                                               reinterpret_cast<const VkSemaphoreCreateInfo *>( &createInfo ),
7879                                               m_allocator,
7880                                               reinterpret_cast<VkSemaphore *>( &m_semaphore ) ) );
7881         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7882         {
7883           throwResultException( result, "vkCreateSemaphore" );
7884         }
7885       }
7886 
Semaphore(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSemaphore semaphore,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7887       Semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7888                  VkSemaphore                                                                     semaphore,
7889                  VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7890         : m_semaphore( semaphore )
7891         , m_device( *device )
7892         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7893             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7894         , m_dispatcher( device.getDispatcher() )
7895       {}
7896 
~Semaphore()7897       ~Semaphore()
7898       {
7899         if ( m_semaphore )
7900         {
7901           getDispatcher()->vkDestroySemaphore( m_device, static_cast<VkSemaphore>( m_semaphore ), m_allocator );
7902         }
7903       }
7904 
7905 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
7906       Semaphore() = default;
7907 #  else
7908       Semaphore()                     = delete;
7909 #  endif
7910       Semaphore( Semaphore const & ) = delete;
Semaphore(Semaphore && rhs)7911       Semaphore( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT
7912         : m_semaphore( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_semaphore, {} ) )
7913         , m_device( rhs.m_device )
7914         , m_allocator( rhs.m_allocator )
7915         , m_dispatcher( rhs.m_dispatcher )
7916       {}
7917       Semaphore & operator=( Semaphore const & ) = delete;
operator =(Semaphore && rhs)7918       Semaphore & operator                       =( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT
7919       {
7920         if ( this != &rhs )
7921         {
7922           if ( m_semaphore )
7923           {
7924             getDispatcher()->vkDestroySemaphore( m_device, static_cast<VkSemaphore>( m_semaphore ), m_allocator );
7925           }
7926           m_semaphore  = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_semaphore, {} );
7927           m_device     = rhs.m_device;
7928           m_allocator  = rhs.m_allocator;
7929           m_dispatcher = rhs.m_dispatcher;
7930         }
7931         return *this;
7932       }
7933 
operator *() const7934       VULKAN_HPP_NAMESPACE::Semaphore const & operator*() const VULKAN_HPP_NOEXCEPT
7935       {
7936         return m_semaphore;
7937       }
7938 
getDispatcher() const7939       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
7940       {
7941         return m_dispatcher;
7942       }
7943 
7944 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const7945       explicit operator bool() const VULKAN_HPP_NOEXCEPT
7946       {
7947         return m_semaphore.operator bool();
7948       }
7949 
operator !() const7950       bool operator!() const VULKAN_HPP_NOEXCEPT
7951       {
7952         return m_semaphore.operator!();
7953       }
7954 #  endif
7955 
7956       //=== VK_VERSION_1_2 ===
7957 
7958       VULKAN_HPP_NODISCARD uint64_t getCounterValue() const;
7959 
7960       //=== VK_KHR_timeline_semaphore ===
7961 
7962       VULKAN_HPP_NODISCARD uint64_t getCounterValueKHR() const;
7963 
7964     private:
7965       VULKAN_HPP_NAMESPACE::Semaphore                                           m_semaphore;
7966       VkDevice                                                                  m_device;
7967       const VkAllocationCallbacks *                                             m_allocator;
7968       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
7969     };
7970 
7971     class ShaderModule
7972     {
7973     public:
7974       using CType = VkShaderModule;
7975 
7976       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
7977         VULKAN_HPP_NAMESPACE::ObjectType::eShaderModule;
7978       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
7979         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eShaderModule;
7980 
7981     public:
ShaderModule(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)7982       ShaderModule(
7983         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
7984         VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const &                            createInfo,
7985         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
7986         : m_device( *device )
7987         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
7988             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
7989         , m_dispatcher( device.getDispatcher() )
7990       {
7991         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
7992           getDispatcher()->vkCreateShaderModule( static_cast<VkDevice>( *device ),
7993                                                  reinterpret_cast<const VkShaderModuleCreateInfo *>( &createInfo ),
7994                                                  m_allocator,
7995                                                  reinterpret_cast<VkShaderModule *>( &m_shaderModule ) ) );
7996         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
7997         {
7998           throwResultException( result, "vkCreateShaderModule" );
7999         }
8000       }
8001 
ShaderModule(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkShaderModule shaderModule,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8002       ShaderModule(
8003         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8004         VkShaderModule                                                                  shaderModule,
8005         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8006         : m_shaderModule( shaderModule )
8007         , m_device( *device )
8008         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8009             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8010         , m_dispatcher( device.getDispatcher() )
8011       {}
8012 
~ShaderModule()8013       ~ShaderModule()
8014       {
8015         if ( m_shaderModule )
8016         {
8017           getDispatcher()->vkDestroyShaderModule(
8018             m_device, static_cast<VkShaderModule>( m_shaderModule ), m_allocator );
8019         }
8020       }
8021 
8022 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
8023       ShaderModule() = default;
8024 #  else
8025       ShaderModule()                  = delete;
8026 #  endif
8027       ShaderModule( ShaderModule const & ) = delete;
ShaderModule(ShaderModule && rhs)8028       ShaderModule( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT
8029         : m_shaderModule( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_shaderModule, {} ) )
8030         , m_device( rhs.m_device )
8031         , m_allocator( rhs.m_allocator )
8032         , m_dispatcher( rhs.m_dispatcher )
8033       {}
8034       ShaderModule & operator=( ShaderModule const & ) = delete;
operator =(ShaderModule && rhs)8035       ShaderModule & operator                          =( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT
8036       {
8037         if ( this != &rhs )
8038         {
8039           if ( m_shaderModule )
8040           {
8041             getDispatcher()->vkDestroyShaderModule(
8042               m_device, static_cast<VkShaderModule>( m_shaderModule ), m_allocator );
8043           }
8044           m_shaderModule = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_shaderModule, {} );
8045           m_device       = rhs.m_device;
8046           m_allocator    = rhs.m_allocator;
8047           m_dispatcher   = rhs.m_dispatcher;
8048         }
8049         return *this;
8050       }
8051 
operator *() const8052       VULKAN_HPP_NAMESPACE::ShaderModule const & operator*() const VULKAN_HPP_NOEXCEPT
8053       {
8054         return m_shaderModule;
8055       }
8056 
getDispatcher() const8057       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8058       {
8059         return m_dispatcher;
8060       }
8061 
8062 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const8063       explicit operator bool() const VULKAN_HPP_NOEXCEPT
8064       {
8065         return m_shaderModule.operator bool();
8066       }
8067 
operator !() const8068       bool operator!() const VULKAN_HPP_NOEXCEPT
8069       {
8070         return m_shaderModule.operator!();
8071       }
8072 #  endif
8073 
8074     private:
8075       VULKAN_HPP_NAMESPACE::ShaderModule                                        m_shaderModule;
8076       VkDevice                                                                  m_device;
8077       const VkAllocationCallbacks *                                             m_allocator;
8078       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
8079     };
8080 
8081     class SurfaceKHR
8082     {
8083     public:
8084       using CType = VkSurfaceKHR;
8085 
8086       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8087         VULKAN_HPP_NAMESPACE::ObjectType::eSurfaceKHR;
8088       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8089         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSurfaceKHR;
8090 
8091     public:
8092 #  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)8093       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8094                   VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const &                       createInfo,
8095                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8096         : m_instance( *instance )
8097         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8098             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8099         , m_dispatcher( instance.getDispatcher() )
8100       {
8101         VULKAN_HPP_NAMESPACE::Result result =
8102           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateAndroidSurfaceKHR(
8103             static_cast<VkInstance>( *instance ),
8104             reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR *>( &createInfo ),
8105             m_allocator,
8106             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8107         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8108         {
8109           throwResultException( result, "vkCreateAndroidSurfaceKHR" );
8110         }
8111       }
8112 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8113 
8114 #  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)8115       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8116                   VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const &                      createInfo,
8117                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8118         : m_instance( *instance )
8119         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8120             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8121         , m_dispatcher( instance.getDispatcher() )
8122       {
8123         VULKAN_HPP_NAMESPACE::Result result =
8124           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDirectFBSurfaceEXT(
8125             static_cast<VkInstance>( *instance ),
8126             reinterpret_cast<const VkDirectFBSurfaceCreateInfoEXT *>( &createInfo ),
8127             m_allocator,
8128             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8129         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8130         {
8131           throwResultException( result, "vkCreateDirectFBSurfaceEXT" );
8132         }
8133       }
8134 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
8135 
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)8136       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8137                   VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const &                       createInfo,
8138                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8139         : m_instance( *instance )
8140         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8141             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8142         , m_dispatcher( instance.getDispatcher() )
8143       {
8144         VULKAN_HPP_NAMESPACE::Result result =
8145           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateDisplayPlaneSurfaceKHR(
8146             static_cast<VkInstance>( *instance ),
8147             reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR *>( &createInfo ),
8148             m_allocator,
8149             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8150         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8151         {
8152           throwResultException( result, "vkCreateDisplayPlaneSurfaceKHR" );
8153         }
8154       }
8155 
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)8156       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8157                   VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const &                      createInfo,
8158                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8159         : m_instance( *instance )
8160         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8161             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8162         , m_dispatcher( instance.getDispatcher() )
8163       {
8164         VULKAN_HPP_NAMESPACE::Result result =
8165           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateHeadlessSurfaceEXT(
8166             static_cast<VkInstance>( *instance ),
8167             reinterpret_cast<const VkHeadlessSurfaceCreateInfoEXT *>( &createInfo ),
8168             m_allocator,
8169             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8170         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8171         {
8172           throwResultException( result, "vkCreateHeadlessSurfaceEXT" );
8173         }
8174       }
8175 
8176 #  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)8177       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8178                   VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const &                           createInfo,
8179                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8180         : m_instance( *instance )
8181         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8182             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8183         , m_dispatcher( instance.getDispatcher() )
8184       {
8185         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8186           getDispatcher()->vkCreateIOSSurfaceMVK( static_cast<VkInstance>( *instance ),
8187                                                   reinterpret_cast<const VkIOSSurfaceCreateInfoMVK *>( &createInfo ),
8188                                                   m_allocator,
8189                                                   reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8190         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8191         {
8192           throwResultException( result, "vkCreateIOSSurfaceMVK" );
8193         }
8194       }
8195 #  endif /*VK_USE_PLATFORM_IOS_MVK*/
8196 
8197 #  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)8198       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8199                   VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const &                 createInfo,
8200                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8201         : m_instance( *instance )
8202         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8203             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8204         , m_dispatcher( instance.getDispatcher() )
8205       {
8206         VULKAN_HPP_NAMESPACE::Result result =
8207           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateImagePipeSurfaceFUCHSIA(
8208             static_cast<VkInstance>( *instance ),
8209             reinterpret_cast<const VkImagePipeSurfaceCreateInfoFUCHSIA *>( &createInfo ),
8210             m_allocator,
8211             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8212         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8213         {
8214           throwResultException( result, "vkCreateImagePipeSurfaceFUCHSIA" );
8215         }
8216       }
8217 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
8218 
8219 #  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)8220       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8221                   VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const &                         createInfo,
8222                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8223         : m_instance( *instance )
8224         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8225             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8226         , m_dispatcher( instance.getDispatcher() )
8227       {
8228         VULKAN_HPP_NAMESPACE::Result result =
8229           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateMacOSSurfaceMVK(
8230             static_cast<VkInstance>( *instance ),
8231             reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK *>( &createInfo ),
8232             m_allocator,
8233             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8234         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8235         {
8236           throwResultException( result, "vkCreateMacOSSurfaceMVK" );
8237         }
8238       }
8239 #  endif /*VK_USE_PLATFORM_MACOS_MVK*/
8240 
8241 #  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)8242       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8243                   VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const &                         createInfo,
8244                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8245         : m_instance( *instance )
8246         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8247             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8248         , m_dispatcher( instance.getDispatcher() )
8249       {
8250         VULKAN_HPP_NAMESPACE::Result result =
8251           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateMetalSurfaceEXT(
8252             static_cast<VkInstance>( *instance ),
8253             reinterpret_cast<const VkMetalSurfaceCreateInfoEXT *>( &createInfo ),
8254             m_allocator,
8255             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8256         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8257         {
8258           throwResultException( result, "vkCreateMetalSurfaceEXT" );
8259         }
8260       }
8261 #  endif /*VK_USE_PLATFORM_METAL_EXT*/
8262 
8263 #  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)8264       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8265                   VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const &                        createInfo,
8266                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8267         : m_instance( *instance )
8268         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8269             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8270         , m_dispatcher( instance.getDispatcher() )
8271       {
8272         VULKAN_HPP_NAMESPACE::Result result =
8273           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateScreenSurfaceQNX(
8274             static_cast<VkInstance>( *instance ),
8275             reinterpret_cast<const VkScreenSurfaceCreateInfoQNX *>( &createInfo ),
8276             m_allocator,
8277             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8278         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8279         {
8280           throwResultException( result, "vkCreateScreenSurfaceQNX" );
8281         }
8282       }
8283 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
8284 
8285 #  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)8286       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8287                   VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const &              createInfo,
8288                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8289         : m_instance( *instance )
8290         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8291             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8292         , m_dispatcher( instance.getDispatcher() )
8293       {
8294         VULKAN_HPP_NAMESPACE::Result result =
8295           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateStreamDescriptorSurfaceGGP(
8296             static_cast<VkInstance>( *instance ),
8297             reinterpret_cast<const VkStreamDescriptorSurfaceCreateInfoGGP *>( &createInfo ),
8298             m_allocator,
8299             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8300         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8301         {
8302           throwResultException( result, "vkCreateStreamDescriptorSurfaceGGP" );
8303         }
8304       }
8305 #  endif /*VK_USE_PLATFORM_GGP*/
8306 
8307 #  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)8308       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8309                   VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const &                             createInfo,
8310                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8311         : m_instance( *instance )
8312         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8313             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8314         , m_dispatcher( instance.getDispatcher() )
8315       {
8316         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8317           getDispatcher()->vkCreateViSurfaceNN( static_cast<VkInstance>( *instance ),
8318                                                 reinterpret_cast<const VkViSurfaceCreateInfoNN *>( &createInfo ),
8319                                                 m_allocator,
8320                                                 reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8321         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8322         {
8323           throwResultException( result, "vkCreateViSurfaceNN" );
8324         }
8325       }
8326 #  endif /*VK_USE_PLATFORM_VI_NN*/
8327 
8328 #  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)8329       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8330                   VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const &                       createInfo,
8331                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8332         : m_instance( *instance )
8333         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8334             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8335         , m_dispatcher( instance.getDispatcher() )
8336       {
8337         VULKAN_HPP_NAMESPACE::Result result =
8338           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateWaylandSurfaceKHR(
8339             static_cast<VkInstance>( *instance ),
8340             reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR *>( &createInfo ),
8341             m_allocator,
8342             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8343         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8344         {
8345           throwResultException( result, "vkCreateWaylandSurfaceKHR" );
8346         }
8347       }
8348 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
8349 
8350 #  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)8351       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8352                   VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const &                         createInfo,
8353                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8354         : m_instance( *instance )
8355         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8356             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8357         , m_dispatcher( instance.getDispatcher() )
8358       {
8359         VULKAN_HPP_NAMESPACE::Result result =
8360           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateWin32SurfaceKHR(
8361             static_cast<VkInstance>( *instance ),
8362             reinterpret_cast<const VkWin32SurfaceCreateInfoKHR *>( &createInfo ),
8363             m_allocator,
8364             reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8365         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8366         {
8367           throwResultException( result, "vkCreateWin32SurfaceKHR" );
8368         }
8369       }
8370 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
8371 
8372 #  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)8373       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8374                   VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const &                           createInfo,
8375                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8376         : m_instance( *instance )
8377         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8378             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8379         , m_dispatcher( instance.getDispatcher() )
8380       {
8381         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8382           getDispatcher()->vkCreateXcbSurfaceKHR( static_cast<VkInstance>( *instance ),
8383                                                   reinterpret_cast<const VkXcbSurfaceCreateInfoKHR *>( &createInfo ),
8384                                                   m_allocator,
8385                                                   reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8386         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8387         {
8388           throwResultException( result, "vkCreateXcbSurfaceKHR" );
8389         }
8390       }
8391 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
8392 
8393 #  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)8394       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8395                   VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const &                          createInfo,
8396                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8397         : m_instance( *instance )
8398         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8399             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8400         , m_dispatcher( instance.getDispatcher() )
8401       {
8402         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8403           getDispatcher()->vkCreateXlibSurfaceKHR( static_cast<VkInstance>( *instance ),
8404                                                    reinterpret_cast<const VkXlibSurfaceCreateInfoKHR *>( &createInfo ),
8405                                                    m_allocator,
8406                                                    reinterpret_cast<VkSurfaceKHR *>( &m_surfaceKHR ) ) );
8407         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8408         {
8409           throwResultException( result, "vkCreateXlibSurfaceKHR" );
8410         }
8411       }
8412 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
8413 
SurfaceKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const & instance,VkSurfaceKHR surfaceKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8414       SurfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Instance const &               instance,
8415                   VkSurfaceKHR                                                                    surfaceKHR,
8416                   VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8417         : m_surfaceKHR( surfaceKHR )
8418         , m_instance( *instance )
8419         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8420             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8421         , m_dispatcher( instance.getDispatcher() )
8422       {}
8423 
~SurfaceKHR()8424       ~SurfaceKHR()
8425       {
8426         if ( m_surfaceKHR )
8427         {
8428           getDispatcher()->vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( m_surfaceKHR ), m_allocator );
8429         }
8430       }
8431 
8432 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
8433       SurfaceKHR() = default;
8434 #  else
8435       SurfaceKHR()                    = delete;
8436 #  endif
8437       SurfaceKHR( SurfaceKHR const & ) = delete;
SurfaceKHR(SurfaceKHR && rhs)8438       SurfaceKHR( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT
8439         : m_surfaceKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_surfaceKHR, {} ) )
8440         , m_instance( rhs.m_instance )
8441         , m_allocator( rhs.m_allocator )
8442         , m_dispatcher( rhs.m_dispatcher )
8443       {}
8444       SurfaceKHR & operator=( SurfaceKHR const & ) = delete;
operator =(SurfaceKHR && rhs)8445       SurfaceKHR & operator                        =( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT
8446       {
8447         if ( this != &rhs )
8448         {
8449           if ( m_surfaceKHR )
8450           {
8451             getDispatcher()->vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( m_surfaceKHR ), m_allocator );
8452           }
8453           m_surfaceKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_surfaceKHR, {} );
8454           m_instance   = rhs.m_instance;
8455           m_allocator  = rhs.m_allocator;
8456           m_dispatcher = rhs.m_dispatcher;
8457         }
8458         return *this;
8459       }
8460 
operator *() const8461       VULKAN_HPP_NAMESPACE::SurfaceKHR const & operator*() const VULKAN_HPP_NOEXCEPT
8462       {
8463         return m_surfaceKHR;
8464       }
8465 
getDispatcher() const8466       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * getDispatcher() const
8467       {
8468         return m_dispatcher;
8469       }
8470 
8471 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const8472       explicit operator bool() const VULKAN_HPP_NOEXCEPT
8473       {
8474         return m_surfaceKHR.operator bool();
8475       }
8476 
operator !() const8477       bool operator!() const VULKAN_HPP_NOEXCEPT
8478       {
8479         return m_surfaceKHR.operator!();
8480       }
8481 #  endif
8482 
8483     private:
8484       VULKAN_HPP_NAMESPACE::SurfaceKHR                                            m_surfaceKHR;
8485       VkInstance                                                                  m_instance;
8486       const VkAllocationCallbacks *                                               m_allocator;
8487       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::InstanceDispatcher const * m_dispatcher;
8488     };
8489 
8490     class SwapchainKHR
8491     {
8492     public:
8493       using CType = VkSwapchainKHR;
8494 
8495       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8496         VULKAN_HPP_NAMESPACE::ObjectType::eSwapchainKHR;
8497       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8498         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSwapchainKHR;
8499 
8500     public:
SwapchainKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8501       SwapchainKHR(
8502         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8503         VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const &                            createInfo,
8504         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8505         : m_device( *device )
8506         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8507             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8508         , m_dispatcher( device.getDispatcher() )
8509       {
8510         VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
8511           getDispatcher()->vkCreateSwapchainKHR( static_cast<VkDevice>( *device ),
8512                                                  reinterpret_cast<const VkSwapchainCreateInfoKHR *>( &createInfo ),
8513                                                  m_allocator,
8514                                                  reinterpret_cast<VkSwapchainKHR *>( &m_swapchainKHR ) ) );
8515         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8516         {
8517           throwResultException( result, "vkCreateSwapchainKHR" );
8518         }
8519       }
8520 
SwapchainKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkSwapchainKHR swapchainKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8521       SwapchainKHR(
8522         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8523         VkSwapchainKHR                                                                  swapchainKHR,
8524         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8525         : m_swapchainKHR( swapchainKHR )
8526         , m_device( *device )
8527         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8528             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8529         , m_dispatcher( device.getDispatcher() )
8530       {}
8531 
SwapchainKHR(VkSwapchainKHR swapchainKHR,VkDevice device,VkAllocationCallbacks const * allocator,VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher)8532       SwapchainKHR( VkSwapchainKHR                                                            swapchainKHR,
8533                     VkDevice                                                                  device,
8534                     VkAllocationCallbacks const *                                             allocator,
8535                     VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher )
8536         : m_swapchainKHR( swapchainKHR ), m_device( device ), m_allocator( allocator ), m_dispatcher( dispatcher )
8537       {}
8538 
~SwapchainKHR()8539       ~SwapchainKHR()
8540       {
8541         if ( m_swapchainKHR )
8542         {
8543           getDispatcher()->vkDestroySwapchainKHR(
8544             m_device, static_cast<VkSwapchainKHR>( m_swapchainKHR ), m_allocator );
8545         }
8546       }
8547 
8548 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
8549       SwapchainKHR() = default;
8550 #  else
8551       SwapchainKHR()                  = delete;
8552 #  endif
8553       SwapchainKHR( SwapchainKHR const & ) = delete;
SwapchainKHR(SwapchainKHR && rhs)8554       SwapchainKHR( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT
8555         : m_swapchainKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_swapchainKHR, {} ) )
8556         , m_device( rhs.m_device )
8557         , m_allocator( rhs.m_allocator )
8558         , m_dispatcher( rhs.m_dispatcher )
8559       {}
8560       SwapchainKHR & operator=( SwapchainKHR const & ) = delete;
operator =(SwapchainKHR && rhs)8561       SwapchainKHR & operator                          =( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT
8562       {
8563         if ( this != &rhs )
8564         {
8565           if ( m_swapchainKHR )
8566           {
8567             getDispatcher()->vkDestroySwapchainKHR(
8568               m_device, static_cast<VkSwapchainKHR>( m_swapchainKHR ), m_allocator );
8569           }
8570           m_swapchainKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_swapchainKHR, {} );
8571           m_device       = rhs.m_device;
8572           m_allocator    = rhs.m_allocator;
8573           m_dispatcher   = rhs.m_dispatcher;
8574         }
8575         return *this;
8576       }
8577 
operator *() const8578       VULKAN_HPP_NAMESPACE::SwapchainKHR const & operator*() const VULKAN_HPP_NOEXCEPT
8579       {
8580         return m_swapchainKHR;
8581       }
8582 
getDispatcher() const8583       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8584       {
8585         return m_dispatcher;
8586       }
8587 
8588 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const8589       explicit operator bool() const VULKAN_HPP_NOEXCEPT
8590       {
8591         return m_swapchainKHR.operator bool();
8592       }
8593 
operator !() const8594       bool operator!() const VULKAN_HPP_NOEXCEPT
8595       {
8596         return m_swapchainKHR.operator!();
8597       }
8598 #  endif
8599 
8600       //=== VK_KHR_swapchain ===
8601 
8602       VULKAN_HPP_NODISCARD std::vector<VkImage> getImages() const;
8603 
8604       VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
8605                            acquireNextImage( uint64_t                        timeout,
8606                                              VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT,
8607                                              VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT ) const;
8608 
8609       //=== VK_EXT_display_control ===
8610 
8611       VULKAN_HPP_NODISCARD uint64_t getCounterEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter ) const;
8612 
8613       //=== VK_GOOGLE_display_timing ===
8614 
8615       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE getRefreshCycleDurationGOOGLE() const;
8616 
8617       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE>
8618                            getPastPresentationTimingGOOGLE() const;
8619 
8620       //=== VK_KHR_shared_presentable_image ===
8621 
8622       VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Result getStatus() const;
8623 
8624       //=== VK_AMD_display_native_hdr ===
8625 
8626       void setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT;
8627 
8628 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
8629       //=== VK_EXT_full_screen_exclusive ===
8630 
8631       void acquireFullScreenExclusiveModeEXT() const;
8632 
8633       void releaseFullScreenExclusiveModeEXT() const;
8634 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
8635 
8636     private:
8637       VULKAN_HPP_NAMESPACE::SwapchainKHR                                        m_swapchainKHR;
8638       VkDevice                                                                  m_device;
8639       const VkAllocationCallbacks *                                             m_allocator;
8640       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
8641     };
8642 
8643     class SwapchainKHRs : public std::vector<VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::SwapchainKHR>
8644     {
8645     public:
SwapchainKHRs(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR> const & createInfos,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8646       SwapchainKHRs(
8647         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                        device,
8648         VULKAN_HPP_NAMESPACE::ArrayProxy<VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR> const & createInfos,
8649         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks>        allocator = nullptr )
8650       {
8651         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * dispatcher = device.getDispatcher();
8652         std::vector<VkSwapchainKHR>                                               swapchains( createInfos.size() );
8653         VULKAN_HPP_NAMESPACE::Result                                              result =
8654           static_cast<VULKAN_HPP_NAMESPACE::Result>( dispatcher->vkCreateSharedSwapchainsKHR(
8655             static_cast<VkDevice>( *device ),
8656             createInfos.size(),
8657             reinterpret_cast<const VkSwapchainCreateInfoKHR *>( createInfos.data() ),
8658             reinterpret_cast<const VkAllocationCallbacks *>(
8659               static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
8660             swapchains.data() ) );
8661         if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )
8662         {
8663           this->reserve( createInfos.size() );
8664           for ( auto const & swapchainKHR : swapchains )
8665           {
8666             this->emplace_back( swapchainKHR,
8667                                 static_cast<VkDevice>( *device ),
8668                                 reinterpret_cast<const VkAllocationCallbacks *>(
8669                                   static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ),
8670                                 dispatcher );
8671           }
8672         }
8673         else
8674         {
8675           throwResultException( result, "vkCreateSharedSwapchainsKHR" );
8676         }
8677       }
8678 
8679 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
8680       SwapchainKHRs() = default;
8681 #  else
8682       SwapchainKHRs()                 = delete;
8683 #  endif
8684       SwapchainKHRs( SwapchainKHRs const & ) = delete;
8685       SwapchainKHRs( SwapchainKHRs && rhs )  = default;
8686       SwapchainKHRs & operator=( SwapchainKHRs const & ) = delete;
8687       SwapchainKHRs & operator=( SwapchainKHRs && rhs ) = default;
8688     };
8689 
8690     class ValidationCacheEXT
8691     {
8692     public:
8693       using CType = VkValidationCacheEXT;
8694 
8695       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8696         VULKAN_HPP_NAMESPACE::ObjectType::eValidationCacheEXT;
8697       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8698         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eValidationCacheEXT;
8699 
8700     public:
ValidationCacheEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8701       ValidationCacheEXT(
8702         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8703         VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const &                      createInfo,
8704         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8705         : m_device( *device )
8706         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8707             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8708         , m_dispatcher( device.getDispatcher() )
8709       {
8710         VULKAN_HPP_NAMESPACE::Result result =
8711           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateValidationCacheEXT(
8712             static_cast<VkDevice>( *device ),
8713             reinterpret_cast<const VkValidationCacheCreateInfoEXT *>( &createInfo ),
8714             m_allocator,
8715             reinterpret_cast<VkValidationCacheEXT *>( &m_validationCacheEXT ) ) );
8716         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8717         {
8718           throwResultException( result, "vkCreateValidationCacheEXT" );
8719         }
8720       }
8721 
ValidationCacheEXT(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkValidationCacheEXT validationCacheEXT,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8722       ValidationCacheEXT(
8723         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8724         VkValidationCacheEXT                                                            validationCacheEXT,
8725         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8726         : m_validationCacheEXT( validationCacheEXT )
8727         , m_device( *device )
8728         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8729             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8730         , m_dispatcher( device.getDispatcher() )
8731       {}
8732 
~ValidationCacheEXT()8733       ~ValidationCacheEXT()
8734       {
8735         if ( m_validationCacheEXT )
8736         {
8737           getDispatcher()->vkDestroyValidationCacheEXT(
8738             m_device, static_cast<VkValidationCacheEXT>( m_validationCacheEXT ), m_allocator );
8739         }
8740       }
8741 
8742 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
8743       ValidationCacheEXT() = default;
8744 #  else
8745       ValidationCacheEXT()            = delete;
8746 #  endif
8747       ValidationCacheEXT( ValidationCacheEXT const & ) = delete;
ValidationCacheEXT(ValidationCacheEXT && rhs)8748       ValidationCacheEXT( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT
8749         : m_validationCacheEXT( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_validationCacheEXT,
8750                                                                                            {} ) )
8751         , m_device( rhs.m_device )
8752         , m_allocator( rhs.m_allocator )
8753         , m_dispatcher( rhs.m_dispatcher )
8754       {}
8755       ValidationCacheEXT & operator=( ValidationCacheEXT const & ) = delete;
operator =(ValidationCacheEXT && rhs)8756       ValidationCacheEXT & operator                                =( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT
8757       {
8758         if ( this != &rhs )
8759         {
8760           if ( m_validationCacheEXT )
8761           {
8762             getDispatcher()->vkDestroyValidationCacheEXT(
8763               m_device, static_cast<VkValidationCacheEXT>( m_validationCacheEXT ), m_allocator );
8764           }
8765           m_validationCacheEXT =
8766             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_validationCacheEXT, {} );
8767           m_device     = rhs.m_device;
8768           m_allocator  = rhs.m_allocator;
8769           m_dispatcher = rhs.m_dispatcher;
8770         }
8771         return *this;
8772       }
8773 
operator *() const8774       VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & operator*() const VULKAN_HPP_NOEXCEPT
8775       {
8776         return m_validationCacheEXT;
8777       }
8778 
getDispatcher() const8779       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8780       {
8781         return m_dispatcher;
8782       }
8783 
8784 #  if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const8785       explicit operator bool() const VULKAN_HPP_NOEXCEPT
8786       {
8787         return m_validationCacheEXT.operator bool();
8788       }
8789 
operator !() const8790       bool operator!() const VULKAN_HPP_NOEXCEPT
8791       {
8792         return m_validationCacheEXT.operator!();
8793       }
8794 #  endif
8795 
8796       //=== VK_EXT_validation_cache ===
8797 
8798       void merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches ) const;
8799 
8800       VULKAN_HPP_NODISCARD std::vector<uint8_t> getData() const;
8801 
8802     private:
8803       VULKAN_HPP_NAMESPACE::ValidationCacheEXT                                  m_validationCacheEXT;
8804       VkDevice                                                                  m_device;
8805       const VkAllocationCallbacks *                                             m_allocator;
8806       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
8807     };
8808 
8809 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
8810     class VideoSessionKHR
8811     {
8812     public:
8813       using CType = VkVideoSessionKHR;
8814 
8815       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8816         VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionKHR;
8817       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8818         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
8819 
8820     public:
VideoSessionKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8821       VideoSessionKHR(
8822         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8823         VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const &                         createInfo,
8824         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8825         : m_device( *device )
8826         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8827             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8828         , m_dispatcher( device.getDispatcher() )
8829       {
8830         VULKAN_HPP_NAMESPACE::Result result =
8831           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateVideoSessionKHR(
8832             static_cast<VkDevice>( *device ),
8833             reinterpret_cast<const VkVideoSessionCreateInfoKHR *>( &createInfo ),
8834             m_allocator,
8835             reinterpret_cast<VkVideoSessionKHR *>( &m_videoSessionKHR ) ) );
8836         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8837         {
8838           throwResultException( result, "vkCreateVideoSessionKHR" );
8839         }
8840       }
8841 
VideoSessionKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkVideoSessionKHR videoSessionKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8842       VideoSessionKHR(
8843         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8844         VkVideoSessionKHR                                                               videoSessionKHR,
8845         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8846         : m_videoSessionKHR( videoSessionKHR )
8847         , m_device( *device )
8848         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8849             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8850         , m_dispatcher( device.getDispatcher() )
8851       {}
8852 
~VideoSessionKHR()8853       ~VideoSessionKHR()
8854       {
8855         if ( m_videoSessionKHR )
8856         {
8857           getDispatcher()->vkDestroyVideoSessionKHR(
8858             m_device, static_cast<VkVideoSessionKHR>( m_videoSessionKHR ), m_allocator );
8859         }
8860       }
8861 
8862 #    if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
8863       VideoSessionKHR() = default;
8864 #    else
8865       VideoSessionKHR()           = delete;
8866 #    endif
8867       VideoSessionKHR( VideoSessionKHR const & ) = delete;
VideoSessionKHR(VideoSessionKHR && rhs)8868       VideoSessionKHR( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT
8869         : m_videoSessionKHR( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionKHR, {} ) )
8870         , m_device( rhs.m_device )
8871         , m_allocator( rhs.m_allocator )
8872         , m_dispatcher( rhs.m_dispatcher )
8873       {}
8874       VideoSessionKHR & operator=( VideoSessionKHR const & ) = delete;
operator =(VideoSessionKHR && rhs)8875       VideoSessionKHR & operator                             =( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT
8876       {
8877         if ( this != &rhs )
8878         {
8879           if ( m_videoSessionKHR )
8880           {
8881             getDispatcher()->vkDestroyVideoSessionKHR(
8882               m_device, static_cast<VkVideoSessionKHR>( m_videoSessionKHR ), m_allocator );
8883           }
8884           m_videoSessionKHR = VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionKHR, {} );
8885           m_device          = rhs.m_device;
8886           m_allocator       = rhs.m_allocator;
8887           m_dispatcher      = rhs.m_dispatcher;
8888         }
8889         return *this;
8890       }
8891 
operator *() const8892       VULKAN_HPP_NAMESPACE::VideoSessionKHR const & operator*() const VULKAN_HPP_NOEXCEPT
8893       {
8894         return m_videoSessionKHR;
8895       }
8896 
getDispatcher() const8897       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
8898       {
8899         return m_dispatcher;
8900       }
8901 
8902 #    if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const8903       explicit operator bool() const VULKAN_HPP_NOEXCEPT
8904       {
8905         return m_videoSessionKHR.operator bool();
8906       }
8907 
operator !() const8908       bool operator!() const VULKAN_HPP_NOEXCEPT
8909       {
8910         return m_videoSessionKHR.operator!();
8911       }
8912 #    endif
8913 
8914       //=== VK_KHR_video_queue ===
8915 
8916       VULKAN_HPP_NODISCARD std::vector<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR> getMemoryRequirements() const;
8917 
8918       void
8919         bindMemory( ArrayProxy<const VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR> const & videoSessionBindMemories ) const;
8920 
8921     private:
8922       VULKAN_HPP_NAMESPACE::VideoSessionKHR                                     m_videoSessionKHR;
8923       VkDevice                                                                  m_device;
8924       const VkAllocationCallbacks *                                             m_allocator;
8925       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
8926     };
8927 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
8928 
8929 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
8930     class VideoSessionParametersKHR
8931     {
8932     public:
8933       using CType = VkVideoSessionParametersKHR;
8934 
8935       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType =
8936         VULKAN_HPP_NAMESPACE::ObjectType::eVideoSessionParametersKHR;
8937       static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType =
8938         VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown;
8939 
8940     public:
VideoSessionParametersKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & createInfo,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8941       VideoSessionParametersKHR(
8942         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8943         VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const &               createInfo,
8944         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8945         : m_device( *device )
8946         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8947             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8948         , m_dispatcher( device.getDispatcher() )
8949       {
8950         VULKAN_HPP_NAMESPACE::Result result =
8951           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCreateVideoSessionParametersKHR(
8952             static_cast<VkDevice>( *device ),
8953             reinterpret_cast<const VkVideoSessionParametersCreateInfoKHR *>( &createInfo ),
8954             m_allocator,
8955             reinterpret_cast<VkVideoSessionParametersKHR *>( &m_videoSessionParametersKHR ) ) );
8956         if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
8957         {
8958           throwResultException( result, "vkCreateVideoSessionParametersKHR" );
8959         }
8960       }
8961 
VideoSessionParametersKHR(VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const & device,VkVideoSessionParametersKHR videoSessionParametersKHR,VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator=nullptr)8962       VideoSessionParametersKHR(
8963         VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::Device const &                 device,
8964         VkVideoSessionParametersKHR                                                     videoSessionParametersKHR,
8965         VULKAN_HPP_NAMESPACE::Optional<const VULKAN_HPP_NAMESPACE::AllocationCallbacks> allocator = nullptr )
8966         : m_videoSessionParametersKHR( videoSessionParametersKHR )
8967         , m_device( *device )
8968         , m_allocator( reinterpret_cast<const VkAllocationCallbacks *>(
8969             static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) )
8970         , m_dispatcher( device.getDispatcher() )
8971       {}
8972 
~VideoSessionParametersKHR()8973       ~VideoSessionParametersKHR()
8974       {
8975         if ( m_videoSessionParametersKHR )
8976         {
8977           getDispatcher()->vkDestroyVideoSessionParametersKHR(
8978             m_device, static_cast<VkVideoSessionParametersKHR>( m_videoSessionParametersKHR ), m_allocator );
8979         }
8980       }
8981 
8982 #    if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
8983       VideoSessionParametersKHR() = default;
8984 #    else
8985       VideoSessionParametersKHR() = delete;
8986 #    endif
8987       VideoSessionParametersKHR( VideoSessionParametersKHR const & ) = delete;
VideoSessionParametersKHR(VideoSessionParametersKHR && rhs)8988       VideoSessionParametersKHR( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT
8989         : m_videoSessionParametersKHR(
8990             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionParametersKHR, {} ) )
8991         , m_device( rhs.m_device )
8992         , m_allocator( rhs.m_allocator )
8993         , m_dispatcher( rhs.m_dispatcher )
8994       {}
8995       VideoSessionParametersKHR & operator=( VideoSessionParametersKHR const & ) = delete;
operator =(VideoSessionParametersKHR && rhs)8996       VideoSessionParametersKHR & operator=( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT
8997       {
8998         if ( this != &rhs )
8999         {
9000           if ( m_videoSessionParametersKHR )
9001           {
9002             getDispatcher()->vkDestroyVideoSessionParametersKHR(
9003               m_device, static_cast<VkVideoSessionParametersKHR>( m_videoSessionParametersKHR ), m_allocator );
9004           }
9005           m_videoSessionParametersKHR =
9006             VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::exchange( rhs.m_videoSessionParametersKHR, {} );
9007           m_device     = rhs.m_device;
9008           m_allocator  = rhs.m_allocator;
9009           m_dispatcher = rhs.m_dispatcher;
9010         }
9011         return *this;
9012       }
9013 
operator *() const9014       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & operator*() const VULKAN_HPP_NOEXCEPT
9015       {
9016         return m_videoSessionParametersKHR;
9017       }
9018 
getDispatcher() const9019       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * getDispatcher() const
9020       {
9021         return m_dispatcher;
9022       }
9023 
9024 #    if defined( VULKAN_HPP_RAII_ENABLE_DEFAULT_CONSTRUCTORS )
operator bool() const9025       explicit operator bool() const VULKAN_HPP_NOEXCEPT
9026       {
9027         return m_videoSessionParametersKHR.operator bool();
9028       }
9029 
operator !() const9030       bool operator!() const VULKAN_HPP_NOEXCEPT
9031       {
9032         return m_videoSessionParametersKHR.operator!();
9033       }
9034 #    endif
9035 
9036       //=== VK_KHR_video_queue ===
9037 
9038       void update( const VideoSessionParametersUpdateInfoKHR & updateInfo ) const;
9039 
9040     private:
9041       VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR                           m_videoSessionParametersKHR;
9042       VkDevice                                                                  m_device;
9043       const VkAllocationCallbacks *                                             m_allocator;
9044       VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE::DeviceDispatcher const * m_dispatcher;
9045     };
9046 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
9047 
9048     //===========================
9049     //=== COMMAND Definitions ===
9050     //===========================
9051 
9052     //=== VK_VERSION_1_0 ===
9053 
9054     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures
getFeatures() const9055                                            PhysicalDevice::getFeatures() const VULKAN_HPP_NOEXCEPT
9056     {
9057       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features;
9058       getDispatcher()->vkGetPhysicalDeviceFeatures( static_cast<VkPhysicalDevice>( m_physicalDevice ),
9059                                                     reinterpret_cast<VkPhysicalDeviceFeatures *>( &features ) );
9060       return features;
9061     }
9062 
9063     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties
getFormatProperties(VULKAN_HPP_NAMESPACE::Format format) const9064                                            PhysicalDevice::getFormatProperties( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
9065     {
9066       VULKAN_HPP_NAMESPACE::FormatProperties formatProperties;
9067       getDispatcher()->vkGetPhysicalDeviceFormatProperties(
9068         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9069         static_cast<VkFormat>( format ),
9070         reinterpret_cast<VkFormatProperties *>( &formatProperties ) );
9071       return formatProperties;
9072     }
9073 
9074     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) const9075                                            PhysicalDevice::getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format           format,
9076                                                 VULKAN_HPP_NAMESPACE::ImageType        type,
9077                                                 VULKAN_HPP_NAMESPACE::ImageTiling      tiling,
9078                                                 VULKAN_HPP_NAMESPACE::ImageUsageFlags  usage,
9079                                                 VULKAN_HPP_NAMESPACE::ImageCreateFlags flags ) const
9080     {
9081       VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties;
9082       VULKAN_HPP_NAMESPACE::Result                result =
9083         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties(
9084           static_cast<VkPhysicalDevice>( m_physicalDevice ),
9085           static_cast<VkFormat>( format ),
9086           static_cast<VkImageType>( type ),
9087           static_cast<VkImageTiling>( tiling ),
9088           static_cast<VkImageUsageFlags>( usage ),
9089           static_cast<VkImageCreateFlags>( flags ),
9090           reinterpret_cast<VkImageFormatProperties *>( &imageFormatProperties ) ) );
9091       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9092       {
9093         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" );
9094       }
9095       return imageFormatProperties;
9096     }
9097 
9098     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties
getProperties() const9099                                            PhysicalDevice::getProperties() const VULKAN_HPP_NOEXCEPT
9100     {
9101       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties;
9102       getDispatcher()->vkGetPhysicalDeviceProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
9103                                                       reinterpret_cast<VkPhysicalDeviceProperties *>( &properties ) );
9104       return properties;
9105     }
9106 
9107     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties>
getQueueFamilyProperties() const9108                                            PhysicalDevice::getQueueFamilyProperties() const VULKAN_HPP_NOEXCEPT
9109     {
9110       uint32_t queueFamilyPropertyCount;
9111       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties(
9112         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
9113       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties> queueFamilyProperties( queueFamilyPropertyCount );
9114       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties(
9115         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9116         &queueFamilyPropertyCount,
9117         reinterpret_cast<VkQueueFamilyProperties *>( queueFamilyProperties.data() ) );
9118       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
9119       return queueFamilyProperties;
9120     }
9121 
9122     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties
getMemoryProperties() const9123                                            PhysicalDevice::getMemoryProperties() const VULKAN_HPP_NOEXCEPT
9124     {
9125       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties;
9126       getDispatcher()->vkGetPhysicalDeviceMemoryProperties(
9127         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9128         reinterpret_cast<VkPhysicalDeviceMemoryProperties *>( &memoryProperties ) );
9129       return memoryProperties;
9130     }
9131 
9132     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_vkVoidFunction
getProcAddr(const std::string & name) const9133                                            Instance::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT
9134     {
9135       return getDispatcher()->vkGetInstanceProcAddr( static_cast<VkInstance>( m_instance ), name.c_str() );
9136     }
9137 
9138     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_vkVoidFunction
getProcAddr(const std::string & name) const9139                                            Device::getProcAddr( const std::string & name ) const VULKAN_HPP_NOEXCEPT
9140     {
9141       return getDispatcher()->vkGetDeviceProcAddr( static_cast<VkDevice>( m_device ), name.c_str() );
9142     }
9143 
9144     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties>
enumerateInstanceExtensionProperties(Optional<const std::string> layerName) const9145                                            Context::enumerateInstanceExtensionProperties( Optional<const std::string> layerName ) const
9146     {
9147       std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> properties;
9148       uint32_t                                               propertyCount;
9149       VULKAN_HPP_NAMESPACE::Result                           result;
9150       do
9151       {
9152         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceExtensionProperties(
9153           layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
9154         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
9155         {
9156           properties.resize( propertyCount );
9157           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceExtensionProperties(
9158             layerName ? layerName->c_str() : nullptr,
9159             &propertyCount,
9160             reinterpret_cast<VkExtensionProperties *>( properties.data() ) ) );
9161           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9162         }
9163       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9164       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
9165       {
9166         properties.resize( propertyCount );
9167       }
9168       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9169       {
9170         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceExtensionProperties" );
9171       }
9172       return properties;
9173     }
9174 
9175     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties>
enumerateDeviceExtensionProperties(Optional<const std::string> layerName) const9176                                            PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
9177     {
9178       std::vector<VULKAN_HPP_NAMESPACE::ExtensionProperties> properties;
9179       uint32_t                                               propertyCount;
9180       VULKAN_HPP_NAMESPACE::Result                           result;
9181       do
9182       {
9183         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9184           getDispatcher()->vkEnumerateDeviceExtensionProperties( static_cast<VkPhysicalDevice>( m_physicalDevice ),
9185                                                                  layerName ? layerName->c_str() : nullptr,
9186                                                                  &propertyCount,
9187                                                                  nullptr ) );
9188         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
9189         {
9190           properties.resize( propertyCount );
9191           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateDeviceExtensionProperties(
9192             static_cast<VkPhysicalDevice>( m_physicalDevice ),
9193             layerName ? layerName->c_str() : nullptr,
9194             &propertyCount,
9195             reinterpret_cast<VkExtensionProperties *>( properties.data() ) ) );
9196           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9197         }
9198       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9199       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
9200       {
9201         properties.resize( propertyCount );
9202       }
9203       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9204       {
9205         throwResultException( result,
9206                               VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" );
9207       }
9208       return properties;
9209     }
9210 
9211     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::LayerProperties>
enumerateInstanceLayerProperties() const9212                                            Context::enumerateInstanceLayerProperties() const
9213     {
9214       std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> properties;
9215       uint32_t                                           propertyCount;
9216       VULKAN_HPP_NAMESPACE::Result                       result;
9217       do
9218       {
9219         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9220           getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
9221         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
9222         {
9223           properties.resize( propertyCount );
9224           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceLayerProperties(
9225             &propertyCount, reinterpret_cast<VkLayerProperties *>( properties.data() ) ) );
9226           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9227         }
9228       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9229       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
9230       {
9231         properties.resize( propertyCount );
9232       }
9233       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9234       {
9235         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceLayerProperties" );
9236       }
9237       return properties;
9238     }
9239 
9240     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::LayerProperties>
enumerateDeviceLayerProperties() const9241                                            PhysicalDevice::enumerateDeviceLayerProperties() const
9242     {
9243       std::vector<VULKAN_HPP_NAMESPACE::LayerProperties> properties;
9244       uint32_t                                           propertyCount;
9245       VULKAN_HPP_NAMESPACE::Result                       result;
9246       do
9247       {
9248         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateDeviceLayerProperties(
9249           static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
9250         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
9251         {
9252           properties.resize( propertyCount );
9253           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateDeviceLayerProperties(
9254             static_cast<VkPhysicalDevice>( m_physicalDevice ),
9255             &propertyCount,
9256             reinterpret_cast<VkLayerProperties *>( properties.data() ) ) );
9257           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9258         }
9259       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9260       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
9261       {
9262         properties.resize( propertyCount );
9263       }
9264       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9265       {
9266         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" );
9267       }
9268       return properties;
9269     }
9270 
submit(ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,VULKAN_HPP_NAMESPACE::Fence fence) const9271     VULKAN_HPP_INLINE void Queue::submit( ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo> const & submits,
9272                                           VULKAN_HPP_NAMESPACE::Fence                                fence ) const
9273     {
9274       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9275         getDispatcher()->vkQueueSubmit( static_cast<VkQueue>( m_queue ),
9276                                         submits.size(),
9277                                         reinterpret_cast<const VkSubmitInfo *>( submits.data() ),
9278                                         static_cast<VkFence>( fence ) ) );
9279       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9280       {
9281         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit" );
9282       }
9283     }
9284 
waitIdle() const9285     VULKAN_HPP_INLINE void Queue::waitIdle() const
9286     {
9287       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9288         getDispatcher()->vkQueueWaitIdle( static_cast<VkQueue>( m_queue ) ) );
9289       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9290       {
9291         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::waitIdle" );
9292       }
9293     }
9294 
waitIdle() const9295     VULKAN_HPP_INLINE void Device::waitIdle() const
9296     {
9297       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9298         getDispatcher()->vkDeviceWaitIdle( static_cast<VkDevice>( m_device ) ) );
9299       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9300       {
9301         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitIdle" );
9302       }
9303     }
9304 
9305     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void *
mapMemory(VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::DeviceSize size,VULKAN_HPP_NAMESPACE::MemoryMapFlags flags) const9306                          DeviceMemory::mapMemory( VULKAN_HPP_NAMESPACE::DeviceSize     offset,
9307                                VULKAN_HPP_NAMESPACE::DeviceSize     size,
9308                                VULKAN_HPP_NAMESPACE::MemoryMapFlags flags ) const
9309     {
9310       void *                       pData;
9311       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9312         getDispatcher()->vkMapMemory( static_cast<VkDevice>( m_device ),
9313                                       static_cast<VkDeviceMemory>( m_deviceMemory ),
9314                                       static_cast<VkDeviceSize>( offset ),
9315                                       static_cast<VkDeviceSize>( size ),
9316                                       static_cast<VkMemoryMapFlags>( flags ),
9317                                       &pData ) );
9318       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9319       {
9320         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeviceMemory::mapMemory" );
9321       }
9322       return pData;
9323     }
9324 
unmapMemory() const9325     VULKAN_HPP_INLINE void DeviceMemory::unmapMemory() const VULKAN_HPP_NOEXCEPT
9326     {
9327       getDispatcher()->vkUnmapMemory( static_cast<VkDevice>( m_device ),
9328                                       static_cast<VkDeviceMemory>( m_deviceMemory ) );
9329     }
9330 
flushMappedMemoryRanges(ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges) const9331     VULKAN_HPP_INLINE void Device::flushMappedMemoryRanges(
9332       ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const
9333     {
9334       VULKAN_HPP_NAMESPACE::Result result =
9335         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkFlushMappedMemoryRanges(
9336           static_cast<VkDevice>( m_device ),
9337           memoryRanges.size(),
9338           reinterpret_cast<const VkMappedMemoryRange *>( memoryRanges.data() ) ) );
9339       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9340       {
9341         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" );
9342       }
9343     }
9344 
invalidateMappedMemoryRanges(ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges) const9345     VULKAN_HPP_INLINE void Device::invalidateMappedMemoryRanges(
9346       ArrayProxy<const VULKAN_HPP_NAMESPACE::MappedMemoryRange> const & memoryRanges ) const
9347     {
9348       VULKAN_HPP_NAMESPACE::Result result =
9349         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkInvalidateMappedMemoryRanges(
9350           static_cast<VkDevice>( m_device ),
9351           memoryRanges.size(),
9352           reinterpret_cast<const VkMappedMemoryRange *>( memoryRanges.data() ) ) );
9353       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9354       {
9355         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" );
9356       }
9357     }
9358 
9359     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize
getCommitment() const9360                                            DeviceMemory::getCommitment() const VULKAN_HPP_NOEXCEPT
9361     {
9362       VULKAN_HPP_NAMESPACE::DeviceSize committedMemoryInBytes;
9363       getDispatcher()->vkGetDeviceMemoryCommitment( static_cast<VkDevice>( m_device ),
9364                                                     static_cast<VkDeviceMemory>( m_deviceMemory ),
9365                                                     reinterpret_cast<VkDeviceSize *>( &committedMemoryInBytes ) );
9366       return committedMemoryInBytes;
9367     }
9368 
bindMemory(VULKAN_HPP_NAMESPACE::DeviceMemory memory,VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset) const9369     VULKAN_HPP_INLINE void Buffer::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory,
9370                                                VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset ) const
9371     {
9372       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9373         getDispatcher()->vkBindBufferMemory( static_cast<VkDevice>( m_device ),
9374                                              static_cast<VkBuffer>( m_buffer ),
9375                                              static_cast<VkDeviceMemory>( memory ),
9376                                              static_cast<VkDeviceSize>( memoryOffset ) ) );
9377       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9378       {
9379         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Buffer::bindMemory" );
9380       }
9381     }
9382 
bindMemory(VULKAN_HPP_NAMESPACE::DeviceMemory memory,VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset) const9383     VULKAN_HPP_INLINE void Image::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory,
9384                                               VULKAN_HPP_NAMESPACE::DeviceSize   memoryOffset ) const
9385     {
9386       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9387         getDispatcher()->vkBindImageMemory( static_cast<VkDevice>( m_device ),
9388                                             static_cast<VkImage>( m_image ),
9389                                             static_cast<VkDeviceMemory>( memory ),
9390                                             static_cast<VkDeviceSize>( memoryOffset ) ) );
9391       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9392       {
9393         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Image::bindMemory" );
9394       }
9395     }
9396 
9397     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements
getMemoryRequirements() const9398                                            Buffer::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT
9399     {
9400       VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements;
9401       getDispatcher()->vkGetBufferMemoryRequirements( static_cast<VkDevice>( m_device ),
9402                                                       static_cast<VkBuffer>( m_buffer ),
9403                                                       reinterpret_cast<VkMemoryRequirements *>( &memoryRequirements ) );
9404       return memoryRequirements;
9405     }
9406 
9407     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements
getMemoryRequirements() const9408                                            Image::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT
9409     {
9410       VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements;
9411       getDispatcher()->vkGetImageMemoryRequirements( static_cast<VkDevice>( m_device ),
9412                                                      static_cast<VkImage>( m_image ),
9413                                                      reinterpret_cast<VkMemoryRequirements *>( &memoryRequirements ) );
9414       return memoryRequirements;
9415     }
9416 
9417     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements>
getSparseMemoryRequirements() const9418                                            Image::getSparseMemoryRequirements() const VULKAN_HPP_NOEXCEPT
9419     {
9420       uint32_t sparseMemoryRequirementCount;
9421       getDispatcher()->vkGetImageSparseMemoryRequirements(
9422         static_cast<VkDevice>( m_device ), static_cast<VkImage>( m_image ), &sparseMemoryRequirementCount, nullptr );
9423       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements> sparseMemoryRequirements(
9424         sparseMemoryRequirementCount );
9425       getDispatcher()->vkGetImageSparseMemoryRequirements(
9426         static_cast<VkDevice>( m_device ),
9427         static_cast<VkImage>( m_image ),
9428         &sparseMemoryRequirementCount,
9429         reinterpret_cast<VkSparseImageMemoryRequirements *>( sparseMemoryRequirements.data() ) );
9430       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
9431       return sparseMemoryRequirements;
9432     }
9433 
9434     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) const9435                                            PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format              format,
9436                                                       VULKAN_HPP_NAMESPACE::ImageType           type,
9437                                                       VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples,
9438                                                       VULKAN_HPP_NAMESPACE::ImageUsageFlags     usage,
9439                                                       VULKAN_HPP_NAMESPACE::ImageTiling         tiling ) const
9440       VULKAN_HPP_NOEXCEPT
9441     {
9442       uint32_t propertyCount;
9443       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties(
9444         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9445         static_cast<VkFormat>( format ),
9446         static_cast<VkImageType>( type ),
9447         static_cast<VkSampleCountFlagBits>( samples ),
9448         static_cast<VkImageUsageFlags>( usage ),
9449         static_cast<VkImageTiling>( tiling ),
9450         &propertyCount,
9451         nullptr );
9452       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties> properties( propertyCount );
9453       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties(
9454         static_cast<VkPhysicalDevice>( m_physicalDevice ),
9455         static_cast<VkFormat>( format ),
9456         static_cast<VkImageType>( type ),
9457         static_cast<VkSampleCountFlagBits>( samples ),
9458         static_cast<VkImageUsageFlags>( usage ),
9459         static_cast<VkImageTiling>( tiling ),
9460         &propertyCount,
9461         reinterpret_cast<VkSparseImageFormatProperties *>( properties.data() ) );
9462       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
9463       return properties;
9464     }
9465 
bindSparse(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,VULKAN_HPP_NAMESPACE::Fence fence) const9466     VULKAN_HPP_INLINE void Queue::bindSparse( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindSparseInfo> const & bindInfo,
9467                                               VULKAN_HPP_NAMESPACE::Fence fence ) const
9468     {
9469       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9470         getDispatcher()->vkQueueBindSparse( static_cast<VkQueue>( m_queue ),
9471                                             bindInfo.size(),
9472                                             reinterpret_cast<const VkBindSparseInfo *>( bindInfo.data() ),
9473                                             static_cast<VkFence>( fence ) ) );
9474       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9475       {
9476         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::bindSparse" );
9477       }
9478     }
9479 
resetFences(ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences) const9480     VULKAN_HPP_INLINE void Device::resetFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences ) const
9481     {
9482       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkResetFences(
9483         static_cast<VkDevice>( m_device ), fences.size(), reinterpret_cast<const VkFence *>( fences.data() ) ) );
9484       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9485       {
9486         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetFences" );
9487       }
9488     }
9489 
getStatus() const9490     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Fence::getStatus() const
9491     {
9492       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9493         getDispatcher()->vkGetFenceStatus( static_cast<VkDevice>( m_device ), static_cast<VkFence>( m_fence ) ) );
9494       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
9495            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) )
9496       {
9497         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Fence::getStatus" );
9498       }
9499       return result;
9500     }
9501 
9502     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
waitForFences(ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,VULKAN_HPP_NAMESPACE::Bool32 waitAll,uint64_t timeout) const9503                                            Device::waitForFences( ArrayProxy<const VULKAN_HPP_NAMESPACE::Fence> const & fences,
9504                              VULKAN_HPP_NAMESPACE::Bool32                          waitAll,
9505                              uint64_t                                              timeout ) const
9506     {
9507       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9508         getDispatcher()->vkWaitForFences( static_cast<VkDevice>( m_device ),
9509                                           fences.size(),
9510                                           reinterpret_cast<const VkFence *>( fences.data() ),
9511                                           static_cast<VkBool32>( waitAll ),
9512                                           timeout ) );
9513       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
9514            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) )
9515       {
9516         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitForFences" );
9517       }
9518       return result;
9519     }
9520 
getStatus() const9521     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Event::getStatus() const
9522     {
9523       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9524         getDispatcher()->vkGetEventStatus( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
9525       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eEventSet ) &&
9526            ( result != VULKAN_HPP_NAMESPACE::Result::eEventReset ) )
9527       {
9528         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::getStatus" );
9529       }
9530       return result;
9531     }
9532 
set() const9533     VULKAN_HPP_INLINE void Event::set() const
9534     {
9535       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9536         getDispatcher()->vkSetEvent( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
9537       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9538       {
9539         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::set" );
9540       }
9541     }
9542 
reset() const9543     VULKAN_HPP_INLINE void Event::reset() const
9544     {
9545       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9546         getDispatcher()->vkResetEvent( static_cast<VkDevice>( m_device ), static_cast<VkEvent>( m_event ) ) );
9547       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9548       {
9549         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Event::reset" );
9550       }
9551     }
9552 
9553     template <typename T>
9554     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, std::vector<T>>
getResults(uint32_t firstQuery,uint32_t queryCount,size_t dataSize,VULKAN_HPP_NAMESPACE::DeviceSize stride,VULKAN_HPP_NAMESPACE::QueryResultFlags flags) const9555                                            QueryPool::getResults( uint32_t                               firstQuery,
9556                              uint32_t                               queryCount,
9557                              size_t                                 dataSize,
9558                              VULKAN_HPP_NAMESPACE::DeviceSize       stride,
9559                              VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const
9560     {
9561       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
9562       std::vector<T> data( dataSize / sizeof( T ) );
9563       Result         result =
9564         static_cast<Result>( getDispatcher()->vkGetQueryPoolResults( static_cast<VkDevice>( m_device ),
9565                                                                      static_cast<VkQueryPool>( m_queryPool ),
9566                                                                      firstQuery,
9567                                                                      queryCount,
9568                                                                      data.size() * sizeof( T ),
9569                                                                      reinterpret_cast<void *>( data.data() ),
9570                                                                      static_cast<VkDeviceSize>( stride ),
9571                                                                      static_cast<VkQueryResultFlags>( flags ) ) );
9572       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
9573            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) )
9574       {
9575         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::QueryPool::getResults" );
9576       }
9577       return std::make_pair( result, data );
9578     }
9579 
9580     template <typename T>
9581     VULKAN_HPP_NODISCARD std::pair<VULKAN_HPP_NAMESPACE::Result, T>
getResult(uint32_t firstQuery,uint32_t queryCount,VULKAN_HPP_NAMESPACE::DeviceSize stride,VULKAN_HPP_NAMESPACE::QueryResultFlags flags) const9582                          QueryPool::getResult( uint32_t                               firstQuery,
9583                             uint32_t                               queryCount,
9584                             VULKAN_HPP_NAMESPACE::DeviceSize       stride,
9585                             VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const
9586     {
9587       T      data;
9588       Result result =
9589         static_cast<Result>( getDispatcher()->vkGetQueryPoolResults( static_cast<VkDevice>( m_device ),
9590                                                                      static_cast<VkQueryPool>( m_queryPool ),
9591                                                                      firstQuery,
9592                                                                      queryCount,
9593                                                                      sizeof( T ),
9594                                                                      reinterpret_cast<void *>( &data ),
9595                                                                      static_cast<VkDeviceSize>( stride ),
9596                                                                      static_cast<VkQueryResultFlags>( flags ) ) );
9597       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
9598            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) )
9599       {
9600         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::QueryPool::getResult" );
9601       }
9602       return std::make_pair( result, data );
9603     }
9604 
9605     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout
getSubresourceLayout(const ImageSubresource & subresource) const9606                                            Image::getSubresourceLayout( const ImageSubresource & subresource ) const VULKAN_HPP_NOEXCEPT
9607     {
9608       VULKAN_HPP_NAMESPACE::SubresourceLayout layout;
9609       getDispatcher()->vkGetImageSubresourceLayout( static_cast<VkDevice>( m_device ),
9610                                                     static_cast<VkImage>( m_image ),
9611                                                     reinterpret_cast<const VkImageSubresource *>( &subresource ),
9612                                                     reinterpret_cast<VkSubresourceLayout *>( &layout ) );
9613       return layout;
9614     }
9615 
getData() const9616     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> PipelineCache::getData() const
9617     {
9618       std::vector<uint8_t>         data;
9619       size_t                       dataSize;
9620       VULKAN_HPP_NAMESPACE::Result result;
9621       do
9622       {
9623         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineCacheData(
9624           static_cast<VkDevice>( m_device ), static_cast<VkPipelineCache>( m_pipelineCache ), &dataSize, nullptr ) );
9625         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
9626         {
9627           data.resize( dataSize );
9628           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9629             getDispatcher()->vkGetPipelineCacheData( static_cast<VkDevice>( m_device ),
9630                                                      static_cast<VkPipelineCache>( m_pipelineCache ),
9631                                                      &dataSize,
9632                                                      reinterpret_cast<void *>( data.data() ) ) );
9633           VULKAN_HPP_ASSERT( dataSize <= data.size() );
9634         }
9635       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
9636       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( dataSize < data.size() ) )
9637       {
9638         data.resize( dataSize );
9639       }
9640       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9641       {
9642         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PipelineCache::getData" );
9643       }
9644       return data;
9645     }
9646 
9647     VULKAN_HPP_INLINE void
merge(ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches) const9648       PipelineCache::merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::PipelineCache> const & srcCaches ) const
9649     {
9650       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9651         getDispatcher()->vkMergePipelineCaches( static_cast<VkDevice>( m_device ),
9652                                                 static_cast<VkPipelineCache>( m_pipelineCache ),
9653                                                 srcCaches.size(),
9654                                                 reinterpret_cast<const VkPipelineCache *>( srcCaches.data() ) ) );
9655       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9656       {
9657         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PipelineCache::merge" );
9658       }
9659     }
9660 
9661     VULKAN_HPP_INLINE void
reset(VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags) const9662       DescriptorPool::reset( VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT
9663     {
9664       getDispatcher()->vkResetDescriptorPool( static_cast<VkDevice>( m_device ),
9665                                               static_cast<VkDescriptorPool>( m_descriptorPool ),
9666                                               static_cast<VkDescriptorPoolResetFlags>( flags ) );
9667     }
9668 
updateDescriptorSets(ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const & descriptorCopies) const9669     VULKAN_HPP_INLINE void Device::updateDescriptorSets(
9670       ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites,
9671       ArrayProxy<const VULKAN_HPP_NAMESPACE::CopyDescriptorSet> const &  descriptorCopies ) const VULKAN_HPP_NOEXCEPT
9672     {
9673       getDispatcher()->vkUpdateDescriptorSets(
9674         static_cast<VkDevice>( m_device ),
9675         descriptorWrites.size(),
9676         reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ),
9677         descriptorCopies.size(),
9678         reinterpret_cast<const VkCopyDescriptorSet *>( descriptorCopies.data() ) );
9679     }
9680 
9681     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Extent2D
getRenderAreaGranularity() const9682                                            RenderPass::getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT
9683     {
9684       VULKAN_HPP_NAMESPACE::Extent2D granularity;
9685       getDispatcher()->vkGetRenderAreaGranularity( static_cast<VkDevice>( m_device ),
9686                                                    static_cast<VkRenderPass>( m_renderPass ),
9687                                                    reinterpret_cast<VkExtent2D *>( &granularity ) );
9688       return granularity;
9689     }
9690 
reset(VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags) const9691     VULKAN_HPP_INLINE void CommandPool::reset( VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags ) const
9692     {
9693       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9694         getDispatcher()->vkResetCommandPool( static_cast<VkDevice>( m_device ),
9695                                              static_cast<VkCommandPool>( m_commandPool ),
9696                                              static_cast<VkCommandPoolResetFlags>( flags ) ) );
9697       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9698       {
9699         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandPool::reset" );
9700       }
9701     }
9702 
begin(const CommandBufferBeginInfo & beginInfo) const9703     VULKAN_HPP_INLINE void CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
9704     {
9705       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9706         getDispatcher()->vkBeginCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
9707                                                reinterpret_cast<const VkCommandBufferBeginInfo *>( &beginInfo ) ) );
9708       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9709       {
9710         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::begin" );
9711       }
9712     }
9713 
end() const9714     VULKAN_HPP_INLINE void CommandBuffer::end() const
9715     {
9716       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
9717         getDispatcher()->vkEndCommandBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ) ) );
9718       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9719       {
9720         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::end" );
9721       }
9722     }
9723 
reset(VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags) const9724     VULKAN_HPP_INLINE void CommandBuffer::reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags ) const
9725     {
9726       VULKAN_HPP_NAMESPACE::Result result =
9727         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkResetCommandBuffer(
9728           static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkCommandBufferResetFlags>( flags ) ) );
9729       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
9730       {
9731         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::reset" );
9732       }
9733     }
9734 
9735     VULKAN_HPP_INLINE void
bindPipeline(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::Pipeline pipeline) const9736       CommandBuffer::bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
9737                                    VULKAN_HPP_NAMESPACE::Pipeline          pipeline ) const VULKAN_HPP_NOEXCEPT
9738     {
9739       getDispatcher()->vkCmdBindPipeline( static_cast<VkCommandBuffer>( m_commandBuffer ),
9740                                           static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
9741                                           static_cast<VkPipeline>( pipeline ) );
9742     }
9743 
setViewport(uint32_t firstViewport,ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports) const9744     VULKAN_HPP_INLINE void CommandBuffer::setViewport(
9745       uint32_t                                                 firstViewport,
9746       ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
9747     {
9748       getDispatcher()->vkCmdSetViewport( static_cast<VkCommandBuffer>( m_commandBuffer ),
9749                                          firstViewport,
9750                                          viewports.size(),
9751                                          reinterpret_cast<const VkViewport *>( viewports.data() ) );
9752     }
9753 
setScissor(uint32_t firstScissor,ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors) const9754     VULKAN_HPP_INLINE void CommandBuffer::setScissor(
9755       uint32_t firstScissor, ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
9756     {
9757       getDispatcher()->vkCmdSetScissor( static_cast<VkCommandBuffer>( m_commandBuffer ),
9758                                         firstScissor,
9759                                         scissors.size(),
9760                                         reinterpret_cast<const VkRect2D *>( scissors.data() ) );
9761     }
9762 
setLineWidth(float lineWidth) const9763     VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT
9764     {
9765       getDispatcher()->vkCmdSetLineWidth( static_cast<VkCommandBuffer>( m_commandBuffer ), lineWidth );
9766     }
9767 
setDepthBias(float depthBiasConstantFactor,float depthBiasClamp,float depthBiasSlopeFactor) const9768     VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor,
9769                                                         float depthBiasClamp,
9770                                                         float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT
9771     {
9772       getDispatcher()->vkCmdSetDepthBias( static_cast<VkCommandBuffer>( m_commandBuffer ),
9773                                           depthBiasConstantFactor,
9774                                           depthBiasClamp,
9775                                           depthBiasSlopeFactor );
9776     }
9777 
setBlendConstants(const float blendConstants[4]) const9778     VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT
9779     {
9780       getDispatcher()->vkCmdSetBlendConstants( static_cast<VkCommandBuffer>( m_commandBuffer ), blendConstants );
9781     }
9782 
setDepthBounds(float minDepthBounds,float maxDepthBounds) const9783     VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds,
9784                                                           float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT
9785     {
9786       getDispatcher()->vkCmdSetDepthBounds(
9787         static_cast<VkCommandBuffer>( m_commandBuffer ), minDepthBounds, maxDepthBounds );
9788     }
9789 
setStencilCompareMask(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t compareMask) const9790     VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
9791                                                                  uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT
9792     {
9793       getDispatcher()->vkCmdSetStencilCompareMask(
9794         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
9795     }
9796 
setStencilWriteMask(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t writeMask) const9797     VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
9798                                                                uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT
9799     {
9800       getDispatcher()->vkCmdSetStencilWriteMask(
9801         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
9802     }
9803 
setStencilReference(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,uint32_t reference) const9804     VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
9805                                                                uint32_t reference ) const VULKAN_HPP_NOEXCEPT
9806     {
9807       getDispatcher()->vkCmdSetStencilReference(
9808         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkStencilFaceFlags>( faceMask ), reference );
9809     }
9810 
9811     VULKAN_HPP_INLINE void
bindDescriptorSets(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t firstSet,ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,ArrayProxy<const uint32_t> const & dynamicOffsets) const9812       CommandBuffer::bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
9813                                          VULKAN_HPP_NAMESPACE::PipelineLayout    layout,
9814                                          uint32_t                                firstSet,
9815                                          ArrayProxy<const VULKAN_HPP_NAMESPACE::DescriptorSet> const & descriptorSets,
9816                                          ArrayProxy<const uint32_t> const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT
9817     {
9818       getDispatcher()->vkCmdBindDescriptorSets( static_cast<VkCommandBuffer>( m_commandBuffer ),
9819                                                 static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
9820                                                 static_cast<VkPipelineLayout>( layout ),
9821                                                 firstSet,
9822                                                 descriptorSets.size(),
9823                                                 reinterpret_cast<const VkDescriptorSet *>( descriptorSets.data() ),
9824                                                 dynamicOffsets.size(),
9825                                                 dynamicOffsets.data() );
9826     }
9827 
9828     VULKAN_HPP_INLINE void
bindIndexBuffer(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::IndexType indexType) const9829       CommandBuffer::bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer     buffer,
9830                                       VULKAN_HPP_NAMESPACE::DeviceSize offset,
9831                                       VULKAN_HPP_NAMESPACE::IndexType  indexType ) const VULKAN_HPP_NOEXCEPT
9832     {
9833       getDispatcher()->vkCmdBindIndexBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
9834                                              static_cast<VkBuffer>( buffer ),
9835                                              static_cast<VkDeviceSize>( offset ),
9836                                              static_cast<VkIndexType>( indexType ) );
9837     }
9838 
bindVertexBuffers(uint32_t firstBinding,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets) const9839     VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers(
9840       uint32_t                                                   firstBinding,
9841       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
9842       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
9843     {
9844 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
9845       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
9846 #  else
9847       if ( buffers.size() != offsets.size() )
9848       {
9849         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
9850                           "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
9851       }
9852 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
9853 
9854       getDispatcher()->vkCmdBindVertexBuffers( static_cast<VkCommandBuffer>( m_commandBuffer ),
9855                                                firstBinding,
9856                                                buffers.size(),
9857                                                reinterpret_cast<const VkBuffer *>( buffers.data() ),
9858                                                reinterpret_cast<const VkDeviceSize *>( offsets.data() ) );
9859     }
9860 
draw(uint32_t vertexCount,uint32_t instanceCount,uint32_t firstVertex,uint32_t firstInstance) const9861     VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount,
9862                                                 uint32_t instanceCount,
9863                                                 uint32_t firstVertex,
9864                                                 uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
9865     {
9866       getDispatcher()->vkCmdDraw(
9867         static_cast<VkCommandBuffer>( m_commandBuffer ), vertexCount, instanceCount, firstVertex, firstInstance );
9868     }
9869 
drawIndexed(uint32_t indexCount,uint32_t instanceCount,uint32_t firstIndex,int32_t vertexOffset,uint32_t firstInstance) const9870     VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount,
9871                                                        uint32_t instanceCount,
9872                                                        uint32_t firstIndex,
9873                                                        int32_t  vertexOffset,
9874                                                        uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT
9875     {
9876       getDispatcher()->vkCmdDrawIndexed( static_cast<VkCommandBuffer>( m_commandBuffer ),
9877                                          indexCount,
9878                                          instanceCount,
9879                                          firstIndex,
9880                                          vertexOffset,
9881                                          firstInstance );
9882     }
9883 
drawIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const9884     VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
9885                                                         VULKAN_HPP_NAMESPACE::DeviceSize offset,
9886                                                         uint32_t                         drawCount,
9887                                                         uint32_t stride ) const VULKAN_HPP_NOEXCEPT
9888     {
9889       getDispatcher()->vkCmdDrawIndirect( static_cast<VkCommandBuffer>( m_commandBuffer ),
9890                                           static_cast<VkBuffer>( buffer ),
9891                                           static_cast<VkDeviceSize>( offset ),
9892                                           drawCount,
9893                                           stride );
9894     }
9895 
drawIndexedIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const9896     VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
9897                                                                VULKAN_HPP_NAMESPACE::DeviceSize offset,
9898                                                                uint32_t                         drawCount,
9899                                                                uint32_t stride ) const VULKAN_HPP_NOEXCEPT
9900     {
9901       getDispatcher()->vkCmdDrawIndexedIndirect( static_cast<VkCommandBuffer>( m_commandBuffer ),
9902                                                  static_cast<VkBuffer>( buffer ),
9903                                                  static_cast<VkDeviceSize>( offset ),
9904                                                  drawCount,
9905                                                  stride );
9906     }
9907 
dispatch(uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const9908     VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX,
9909                                                     uint32_t groupCountY,
9910                                                     uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
9911     {
9912       getDispatcher()->vkCmdDispatch(
9913         static_cast<VkCommandBuffer>( m_commandBuffer ), groupCountX, groupCountY, groupCountZ );
9914     }
9915 
9916     VULKAN_HPP_INLINE void
dispatchIndirect(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset) const9917       CommandBuffer::dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer     buffer,
9918                                        VULKAN_HPP_NAMESPACE::DeviceSize offset ) const VULKAN_HPP_NOEXCEPT
9919     {
9920       getDispatcher()->vkCmdDispatchIndirect( static_cast<VkCommandBuffer>( m_commandBuffer ),
9921                                               static_cast<VkBuffer>( buffer ),
9922                                               static_cast<VkDeviceSize>( offset ) );
9923     }
9924 
copyBuffer(VULKAN_HPP_NAMESPACE::Buffer srcBuffer,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions) const9925     VULKAN_HPP_INLINE void CommandBuffer::copyBuffer(
9926       VULKAN_HPP_NAMESPACE::Buffer                               srcBuffer,
9927       VULKAN_HPP_NAMESPACE::Buffer                               dstBuffer,
9928       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
9929     {
9930       getDispatcher()->vkCmdCopyBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
9931                                         static_cast<VkBuffer>( srcBuffer ),
9932                                         static_cast<VkBuffer>( dstBuffer ),
9933                                         regions.size(),
9934                                         reinterpret_cast<const VkBufferCopy *>( regions.data() ) );
9935     }
9936 
copyImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions) const9937     VULKAN_HPP_INLINE void CommandBuffer::copyImage(
9938       VULKAN_HPP_NAMESPACE::Image                               srcImage,
9939       VULKAN_HPP_NAMESPACE::ImageLayout                         srcImageLayout,
9940       VULKAN_HPP_NAMESPACE::Image                               dstImage,
9941       VULKAN_HPP_NAMESPACE::ImageLayout                         dstImageLayout,
9942       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
9943     {
9944       getDispatcher()->vkCmdCopyImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
9945                                        static_cast<VkImage>( srcImage ),
9946                                        static_cast<VkImageLayout>( srcImageLayout ),
9947                                        static_cast<VkImage>( dstImage ),
9948                                        static_cast<VkImageLayout>( dstImageLayout ),
9949                                        regions.size(),
9950                                        reinterpret_cast<const VkImageCopy *>( regions.data() ) );
9951     }
9952 
blitImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,VULKAN_HPP_NAMESPACE::Filter filter) const9953     VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image       srcImage,
9954                                                      VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,
9955                                                      VULKAN_HPP_NAMESPACE::Image       dstImage,
9956                                                      VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,
9957                                                      ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageBlit> const & regions,
9958                                                      VULKAN_HPP_NAMESPACE::Filter filter ) const VULKAN_HPP_NOEXCEPT
9959     {
9960       getDispatcher()->vkCmdBlitImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
9961                                        static_cast<VkImage>( srcImage ),
9962                                        static_cast<VkImageLayout>( srcImageLayout ),
9963                                        static_cast<VkImage>( dstImage ),
9964                                        static_cast<VkImageLayout>( dstImageLayout ),
9965                                        regions.size(),
9966                                        reinterpret_cast<const VkImageBlit *>( regions.data() ),
9967                                        static_cast<VkFilter>( filter ) );
9968     }
9969 
copyBufferToImage(VULKAN_HPP_NAMESPACE::Buffer srcBuffer,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions) const9970     VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage(
9971       VULKAN_HPP_NAMESPACE::Buffer                                    srcBuffer,
9972       VULKAN_HPP_NAMESPACE::Image                                     dstImage,
9973       VULKAN_HPP_NAMESPACE::ImageLayout                               dstImageLayout,
9974       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
9975     {
9976       getDispatcher()->vkCmdCopyBufferToImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
9977                                                static_cast<VkBuffer>( srcBuffer ),
9978                                                static_cast<VkImage>( dstImage ),
9979                                                static_cast<VkImageLayout>( dstImageLayout ),
9980                                                regions.size(),
9981                                                reinterpret_cast<const VkBufferImageCopy *>( regions.data() ) );
9982     }
9983 
copyImageToBuffer(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions) const9984     VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer(
9985       VULKAN_HPP_NAMESPACE::Image                                     srcImage,
9986       VULKAN_HPP_NAMESPACE::ImageLayout                               srcImageLayout,
9987       VULKAN_HPP_NAMESPACE::Buffer                                    dstBuffer,
9988       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferImageCopy> const & regions ) const VULKAN_HPP_NOEXCEPT
9989     {
9990       getDispatcher()->vkCmdCopyImageToBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
9991                                                static_cast<VkImage>( srcImage ),
9992                                                static_cast<VkImageLayout>( srcImageLayout ),
9993                                                static_cast<VkBuffer>( dstBuffer ),
9994                                                regions.size(),
9995                                                reinterpret_cast<const VkBufferImageCopy *>( regions.data() ) );
9996     }
9997 
9998     template <typename T>
updateBuffer(VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,ArrayProxy<const T> const & data) const9999     VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
10000                                                         VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
10001                                                         ArrayProxy<const T> const & data ) const VULKAN_HPP_NOEXCEPT
10002     {
10003       getDispatcher()->vkCmdUpdateBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
10004                                           static_cast<VkBuffer>( dstBuffer ),
10005                                           static_cast<VkDeviceSize>( dstOffset ),
10006                                           data.size() * sizeof( T ),
10007                                           reinterpret_cast<const void *>( data.data() ) );
10008     }
10009 
fillBuffer(VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,VULKAN_HPP_NAMESPACE::DeviceSize size,uint32_t data) const10010     VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( VULKAN_HPP_NAMESPACE::Buffer     dstBuffer,
10011                                                       VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,
10012                                                       VULKAN_HPP_NAMESPACE::DeviceSize size,
10013                                                       uint32_t                         data ) const VULKAN_HPP_NOEXCEPT
10014     {
10015       getDispatcher()->vkCmdFillBuffer( static_cast<VkCommandBuffer>( m_commandBuffer ),
10016                                         static_cast<VkBuffer>( dstBuffer ),
10017                                         static_cast<VkDeviceSize>( dstOffset ),
10018                                         static_cast<VkDeviceSize>( size ),
10019                                         data );
10020     }
10021 
clearColorImage(VULKAN_HPP_NAMESPACE::Image image,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout,const ClearColorValue & color,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges) const10022     VULKAN_HPP_INLINE void CommandBuffer::clearColorImage(
10023       VULKAN_HPP_NAMESPACE::Image                                           image,
10024       VULKAN_HPP_NAMESPACE::ImageLayout                                     imageLayout,
10025       const ClearColorValue &                                               color,
10026       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT
10027     {
10028       getDispatcher()->vkCmdClearColorImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
10029                                              static_cast<VkImage>( image ),
10030                                              static_cast<VkImageLayout>( imageLayout ),
10031                                              reinterpret_cast<const VkClearColorValue *>( &color ),
10032                                              ranges.size(),
10033                                              reinterpret_cast<const VkImageSubresourceRange *>( ranges.data() ) );
10034     }
10035 
clearDepthStencilImage(VULKAN_HPP_NAMESPACE::Image image,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout,const ClearDepthStencilValue & depthStencil,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges) const10036     VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage(
10037       VULKAN_HPP_NAMESPACE::Image                                           image,
10038       VULKAN_HPP_NAMESPACE::ImageLayout                                     imageLayout,
10039       const ClearDepthStencilValue &                                        depthStencil,
10040       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageSubresourceRange> const & ranges ) const VULKAN_HPP_NOEXCEPT
10041     {
10042       getDispatcher()->vkCmdClearDepthStencilImage(
10043         static_cast<VkCommandBuffer>( m_commandBuffer ),
10044         static_cast<VkImage>( image ),
10045         static_cast<VkImageLayout>( imageLayout ),
10046         reinterpret_cast<const VkClearDepthStencilValue *>( &depthStencil ),
10047         ranges.size(),
10048         reinterpret_cast<const VkImageSubresourceRange *>( ranges.data() ) );
10049     }
10050 
clearAttachments(ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const & rects) const10051     VULKAN_HPP_INLINE void CommandBuffer::clearAttachments(
10052       ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearAttachment> const & attachments,
10053       ArrayProxy<const VULKAN_HPP_NAMESPACE::ClearRect> const &       rects ) const VULKAN_HPP_NOEXCEPT
10054     {
10055       getDispatcher()->vkCmdClearAttachments( static_cast<VkCommandBuffer>( m_commandBuffer ),
10056                                               attachments.size(),
10057                                               reinterpret_cast<const VkClearAttachment *>( attachments.data() ),
10058                                               rects.size(),
10059                                               reinterpret_cast<const VkClearRect *>( rects.data() ) );
10060     }
10061 
resolveImage(VULKAN_HPP_NAMESPACE::Image srcImage,VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout,VULKAN_HPP_NAMESPACE::Image dstImage,VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions) const10062     VULKAN_HPP_INLINE void CommandBuffer::resolveImage(
10063       VULKAN_HPP_NAMESPACE::Image                                  srcImage,
10064       VULKAN_HPP_NAMESPACE::ImageLayout                            srcImageLayout,
10065       VULKAN_HPP_NAMESPACE::Image                                  dstImage,
10066       VULKAN_HPP_NAMESPACE::ImageLayout                            dstImageLayout,
10067       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageResolve> const & regions ) const VULKAN_HPP_NOEXCEPT
10068     {
10069       getDispatcher()->vkCmdResolveImage( static_cast<VkCommandBuffer>( m_commandBuffer ),
10070                                           static_cast<VkImage>( srcImage ),
10071                                           static_cast<VkImageLayout>( srcImageLayout ),
10072                                           static_cast<VkImage>( dstImage ),
10073                                           static_cast<VkImageLayout>( dstImageLayout ),
10074                                           regions.size(),
10075                                           reinterpret_cast<const VkImageResolve *>( regions.data() ) );
10076     }
10077 
10078     VULKAN_HPP_INLINE void
setEvent(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask) const10079       CommandBuffer::setEvent( VULKAN_HPP_NAMESPACE::Event              event,
10080                                VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT
10081     {
10082       getDispatcher()->vkCmdSetEvent( static_cast<VkCommandBuffer>( m_commandBuffer ),
10083                                       static_cast<VkEvent>( event ),
10084                                       static_cast<VkPipelineStageFlags>( stageMask ) );
10085     }
10086 
10087     VULKAN_HPP_INLINE void
resetEvent(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask) const10088       CommandBuffer::resetEvent( VULKAN_HPP_NAMESPACE::Event              event,
10089                                  VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT
10090     {
10091       getDispatcher()->vkCmdResetEvent( static_cast<VkCommandBuffer>( m_commandBuffer ),
10092                                         static_cast<VkEvent>( event ),
10093                                         static_cast<VkPipelineStageFlags>( stageMask ) );
10094     }
10095 
waitEvents(ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask,VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask,ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const & memoryBarriers,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers) const10096     VULKAN_HPP_INLINE void CommandBuffer::waitEvents(
10097       ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &               events,
10098       VULKAN_HPP_NAMESPACE::PipelineStageFlags                            srcStageMask,
10099       VULKAN_HPP_NAMESPACE::PipelineStageFlags                            dstStageMask,
10100       ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
10101       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
10102       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT
10103     {
10104       getDispatcher()->vkCmdWaitEvents( static_cast<VkCommandBuffer>( m_commandBuffer ),
10105                                         events.size(),
10106                                         reinterpret_cast<const VkEvent *>( events.data() ),
10107                                         static_cast<VkPipelineStageFlags>( srcStageMask ),
10108                                         static_cast<VkPipelineStageFlags>( dstStageMask ),
10109                                         memoryBarriers.size(),
10110                                         reinterpret_cast<const VkMemoryBarrier *>( memoryBarriers.data() ),
10111                                         bufferMemoryBarriers.size(),
10112                                         reinterpret_cast<const VkBufferMemoryBarrier *>( bufferMemoryBarriers.data() ),
10113                                         imageMemoryBarriers.size(),
10114                                         reinterpret_cast<const VkImageMemoryBarrier *>( imageMemoryBarriers.data() ) );
10115     }
10116 
pipelineBarrier(VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask,VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask,VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags,ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const & memoryBarriers,ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers) const10117     VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier(
10118       VULKAN_HPP_NAMESPACE::PipelineStageFlags                            srcStageMask,
10119       VULKAN_HPP_NAMESPACE::PipelineStageFlags                            dstStageMask,
10120       VULKAN_HPP_NAMESPACE::DependencyFlags                               dependencyFlags,
10121       ArrayProxy<const VULKAN_HPP_NAMESPACE::MemoryBarrier> const &       memoryBarriers,
10122       ArrayProxy<const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier> const & bufferMemoryBarriers,
10123       ArrayProxy<const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier> const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT
10124     {
10125       getDispatcher()->vkCmdPipelineBarrier(
10126         static_cast<VkCommandBuffer>( m_commandBuffer ),
10127         static_cast<VkPipelineStageFlags>( srcStageMask ),
10128         static_cast<VkPipelineStageFlags>( dstStageMask ),
10129         static_cast<VkDependencyFlags>( dependencyFlags ),
10130         memoryBarriers.size(),
10131         reinterpret_cast<const VkMemoryBarrier *>( memoryBarriers.data() ),
10132         bufferMemoryBarriers.size(),
10133         reinterpret_cast<const VkBufferMemoryBarrier *>( bufferMemoryBarriers.data() ),
10134         imageMemoryBarriers.size(),
10135         reinterpret_cast<const VkImageMemoryBarrier *>( imageMemoryBarriers.data() ) );
10136     }
10137 
10138     VULKAN_HPP_INLINE void
beginQuery(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,VULKAN_HPP_NAMESPACE::QueryControlFlags flags) const10139       CommandBuffer::beginQuery( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
10140                                  uint32_t                                query,
10141                                  VULKAN_HPP_NAMESPACE::QueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT
10142     {
10143       getDispatcher()->vkCmdBeginQuery( static_cast<VkCommandBuffer>( m_commandBuffer ),
10144                                         static_cast<VkQueryPool>( queryPool ),
10145                                         query,
10146                                         static_cast<VkQueryControlFlags>( flags ) );
10147     }
10148 
endQuery(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const10149     VULKAN_HPP_INLINE void CommandBuffer::endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
10150                                                     uint32_t                        query ) const VULKAN_HPP_NOEXCEPT
10151     {
10152       getDispatcher()->vkCmdEndQuery(
10153         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query );
10154     }
10155 
resetQueryPool(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery,uint32_t queryCount) const10156     VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
10157                                                           uint32_t                        firstQuery,
10158                                                           uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
10159     {
10160       getDispatcher()->vkCmdResetQueryPool( static_cast<VkCommandBuffer>( m_commandBuffer ),
10161                                             static_cast<VkQueryPool>( queryPool ),
10162                                             firstQuery,
10163                                             queryCount );
10164     }
10165 
writeTimestamp(VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const10166     VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
10167                                                           VULKAN_HPP_NAMESPACE::QueryPool             queryPool,
10168                                                           uint32_t query ) const VULKAN_HPP_NOEXCEPT
10169     {
10170       getDispatcher()->vkCmdWriteTimestamp( static_cast<VkCommandBuffer>( m_commandBuffer ),
10171                                             static_cast<VkPipelineStageFlagBits>( pipelineStage ),
10172                                             static_cast<VkQueryPool>( queryPool ),
10173                                             query );
10174     }
10175 
10176     VULKAN_HPP_INLINE void
copyQueryPoolResults(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery,uint32_t queryCount,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,VULKAN_HPP_NAMESPACE::DeviceSize stride,VULKAN_HPP_NAMESPACE::QueryResultFlags flags) const10177       CommandBuffer::copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool        queryPool,
10178                                            uint32_t                               firstQuery,
10179                                            uint32_t                               queryCount,
10180                                            VULKAN_HPP_NAMESPACE::Buffer           dstBuffer,
10181                                            VULKAN_HPP_NAMESPACE::DeviceSize       dstOffset,
10182                                            VULKAN_HPP_NAMESPACE::DeviceSize       stride,
10183                                            VULKAN_HPP_NAMESPACE::QueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT
10184     {
10185       getDispatcher()->vkCmdCopyQueryPoolResults( static_cast<VkCommandBuffer>( m_commandBuffer ),
10186                                                   static_cast<VkQueryPool>( queryPool ),
10187                                                   firstQuery,
10188                                                   queryCount,
10189                                                   static_cast<VkBuffer>( dstBuffer ),
10190                                                   static_cast<VkDeviceSize>( dstOffset ),
10191                                                   static_cast<VkDeviceSize>( stride ),
10192                                                   static_cast<VkQueryResultFlags>( flags ) );
10193     }
10194 
10195     template <typename T>
pushConstants(VULKAN_HPP_NAMESPACE::PipelineLayout layout,VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags,uint32_t offset,ArrayProxy<const T> const & values) const10196     VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout   layout,
10197                                                          VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags,
10198                                                          uint32_t                               offset,
10199                                                          ArrayProxy<const T> const & values ) const VULKAN_HPP_NOEXCEPT
10200     {
10201       getDispatcher()->vkCmdPushConstants( static_cast<VkCommandBuffer>( m_commandBuffer ),
10202                                            static_cast<VkPipelineLayout>( layout ),
10203                                            static_cast<VkShaderStageFlags>( stageFlags ),
10204                                            offset,
10205                                            values.size() * sizeof( T ),
10206                                            reinterpret_cast<const void *>( values.data() ) );
10207     }
10208 
10209     VULKAN_HPP_INLINE void
beginRenderPass(const RenderPassBeginInfo & renderPassBegin,VULKAN_HPP_NAMESPACE::SubpassContents contents) const10210       CommandBuffer::beginRenderPass( const RenderPassBeginInfo &           renderPassBegin,
10211                                       VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT
10212     {
10213       getDispatcher()->vkCmdBeginRenderPass( static_cast<VkCommandBuffer>( m_commandBuffer ),
10214                                              reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
10215                                              static_cast<VkSubpassContents>( contents ) );
10216     }
10217 
10218     VULKAN_HPP_INLINE void
nextSubpass(VULKAN_HPP_NAMESPACE::SubpassContents contents) const10219       CommandBuffer::nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents ) const VULKAN_HPP_NOEXCEPT
10220     {
10221       getDispatcher()->vkCmdNextSubpass( static_cast<VkCommandBuffer>( m_commandBuffer ),
10222                                          static_cast<VkSubpassContents>( contents ) );
10223     }
10224 
endRenderPass() const10225     VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const VULKAN_HPP_NOEXCEPT
10226     {
10227       getDispatcher()->vkCmdEndRenderPass( static_cast<VkCommandBuffer>( m_commandBuffer ) );
10228     }
10229 
executeCommands(ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers) const10230     VULKAN_HPP_INLINE void CommandBuffer::executeCommands(
10231       ArrayProxy<const VULKAN_HPP_NAMESPACE::CommandBuffer> const & commandBuffers ) const VULKAN_HPP_NOEXCEPT
10232     {
10233       getDispatcher()->vkCmdExecuteCommands( static_cast<VkCommandBuffer>( m_commandBuffer ),
10234                                              commandBuffers.size(),
10235                                              reinterpret_cast<const VkCommandBuffer *>( commandBuffers.data() ) );
10236     }
10237 
10238     //=== VK_VERSION_1_1 ===
10239 
enumerateInstanceVersion() const10240     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t Context::enumerateInstanceVersion() const
10241     {
10242       uint32_t                     apiVersion;
10243       VULKAN_HPP_NAMESPACE::Result result =
10244         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumerateInstanceVersion( &apiVersion ) );
10245       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10246       {
10247         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Context::enumerateInstanceVersion" );
10248       }
10249       return apiVersion;
10250     }
10251 
10252     VULKAN_HPP_INLINE void
bindBufferMemory2(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos) const10253       Device::bindBufferMemory2( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const
10254     {
10255       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10256         getDispatcher()->vkBindBufferMemory2( static_cast<VkDevice>( m_device ),
10257                                               bindInfos.size(),
10258                                               reinterpret_cast<const VkBindBufferMemoryInfo *>( bindInfos.data() ) ) );
10259       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10260       {
10261         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2" );
10262       }
10263     }
10264 
10265     VULKAN_HPP_INLINE void
bindImageMemory2(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos) const10266       Device::bindImageMemory2( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const
10267     {
10268       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10269         getDispatcher()->vkBindImageMemory2( static_cast<VkDevice>( m_device ),
10270                                              bindInfos.size(),
10271                                              reinterpret_cast<const VkBindImageMemoryInfo *>( bindInfos.data() ) ) );
10272       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10273       {
10274         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2" );
10275       }
10276     }
10277 
10278     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags
getGroupPeerMemoryFeatures(uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex) const10279                                            Device::getGroupPeerMemoryFeatures( uint32_t heapIndex,
10280                                           uint32_t localDeviceIndex,
10281                                           uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT
10282     {
10283       VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures;
10284       getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures(
10285         static_cast<VkDevice>( m_device ),
10286         heapIndex,
10287         localDeviceIndex,
10288         remoteDeviceIndex,
10289         reinterpret_cast<VkPeerMemoryFeatureFlags *>( &peerMemoryFeatures ) );
10290       return peerMemoryFeatures;
10291     }
10292 
setDeviceMask(uint32_t deviceMask) const10293     VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT
10294     {
10295       getDispatcher()->vkCmdSetDeviceMask( static_cast<VkCommandBuffer>( m_commandBuffer ), deviceMask );
10296     }
10297 
dispatchBase(uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const10298     VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX,
10299                                                         uint32_t baseGroupY,
10300                                                         uint32_t baseGroupZ,
10301                                                         uint32_t groupCountX,
10302                                                         uint32_t groupCountY,
10303                                                         uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
10304     {
10305       getDispatcher()->vkCmdDispatchBase( static_cast<VkCommandBuffer>( m_commandBuffer ),
10306                                           baseGroupX,
10307                                           baseGroupY,
10308                                           baseGroupZ,
10309                                           groupCountX,
10310                                           groupCountY,
10311                                           groupCountZ );
10312     }
10313 
10314     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
enumeratePhysicalDeviceGroups() const10315                                            Instance::enumeratePhysicalDeviceGroups() const
10316     {
10317       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> physicalDeviceGroupProperties;
10318       uint32_t                                                         physicalDeviceGroupCount;
10319       VULKAN_HPP_NAMESPACE::Result                                     result;
10320       do
10321       {
10322         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroups(
10323           static_cast<VkInstance>( m_instance ), &physicalDeviceGroupCount, nullptr ) );
10324         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceGroupCount )
10325         {
10326           physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
10327           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroups(
10328             static_cast<VkInstance>( m_instance ),
10329             &physicalDeviceGroupCount,
10330             reinterpret_cast<VkPhysicalDeviceGroupProperties *>( physicalDeviceGroupProperties.data() ) ) );
10331           VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
10332         }
10333       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
10334       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
10335            ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) )
10336       {
10337         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
10338       }
10339       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10340       {
10341         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" );
10342       }
10343       return physicalDeviceGroupProperties;
10344     }
10345 
10346     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirements2(const ImageMemoryRequirementsInfo2 & info) const10347                                            Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
10348     {
10349       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
10350       getDispatcher()->vkGetImageMemoryRequirements2(
10351         static_cast<VkDevice>( m_device ),
10352         reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
10353         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
10354       return memoryRequirements;
10355     }
10356 
10357     template <typename X, typename Y, typename... Z>
10358     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getImageMemoryRequirements2(const ImageMemoryRequirementsInfo2 & info) const10359                                            Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
10360     {
10361       StructureChain<X, Y, Z...>                  structureChain;
10362       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
10363         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
10364       getDispatcher()->vkGetImageMemoryRequirements2(
10365         static_cast<VkDevice>( m_device ),
10366         reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
10367         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
10368       return structureChain;
10369     }
10370 
10371     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirements2(const BufferMemoryRequirementsInfo2 & info) const10372                                            Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
10373     {
10374       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
10375       getDispatcher()->vkGetBufferMemoryRequirements2(
10376         static_cast<VkDevice>( m_device ),
10377         reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
10378         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
10379       return memoryRequirements;
10380     }
10381 
10382     template <typename X, typename Y, typename... Z>
10383     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getBufferMemoryRequirements2(const BufferMemoryRequirementsInfo2 & info) const10384                                            Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
10385     {
10386       StructureChain<X, Y, Z...>                  structureChain;
10387       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
10388         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
10389       getDispatcher()->vkGetBufferMemoryRequirements2(
10390         static_cast<VkDevice>( m_device ),
10391         reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
10392         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
10393       return structureChain;
10394     }
10395 
10396     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirements2(const ImageSparseMemoryRequirementsInfo2 & info) const10397                                            Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info ) const
10398       VULKAN_HPP_NOEXCEPT
10399     {
10400       uint32_t sparseMemoryRequirementCount;
10401       getDispatcher()->vkGetImageSparseMemoryRequirements2(
10402         static_cast<VkDevice>( m_device ),
10403         reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
10404         &sparseMemoryRequirementCount,
10405         nullptr );
10406       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements(
10407         sparseMemoryRequirementCount );
10408       getDispatcher()->vkGetImageSparseMemoryRequirements2(
10409         static_cast<VkDevice>( m_device ),
10410         reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
10411         &sparseMemoryRequirementCount,
10412         reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
10413       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
10414       return sparseMemoryRequirements;
10415     }
10416 
10417     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2
getFeatures2() const10418                                            PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT
10419     {
10420       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features;
10421       getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10422                                                      reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
10423       return features;
10424     }
10425 
10426     template <typename X, typename Y, typename... Z>
10427     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getFeatures2() const10428                                            PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT
10429     {
10430       StructureChain<X, Y, Z...>                      structureChain;
10431       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features =
10432         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>();
10433       getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10434                                                      reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
10435       return structureChain;
10436     }
10437 
10438     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2
getProperties2() const10439                                            PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT
10440     {
10441       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties;
10442       getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10443                                                        reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
10444       return properties;
10445     }
10446 
10447     template <typename X, typename Y, typename... Z>
10448     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getProperties2() const10449                                            PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT
10450     {
10451       StructureChain<X, Y, Z...>                        structureChain;
10452       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties =
10453         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>();
10454       getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10455                                                        reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
10456       return structureChain;
10457     }
10458 
10459     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2
getFormatProperties2(VULKAN_HPP_NAMESPACE::Format format) const10460                                            PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
10461     {
10462       VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties;
10463       getDispatcher()->vkGetPhysicalDeviceFormatProperties2(
10464         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10465         static_cast<VkFormat>( format ),
10466         reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
10467       return formatProperties;
10468     }
10469 
10470     template <typename X, typename Y, typename... Z>
10471     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getFormatProperties2(VULKAN_HPP_NAMESPACE::Format format) const10472                                            PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
10473     {
10474       StructureChain<X, Y, Z...>                structureChain;
10475       VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties =
10476         structureChain.template get<VULKAN_HPP_NAMESPACE::FormatProperties2>();
10477       getDispatcher()->vkGetPhysicalDeviceFormatProperties2(
10478         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10479         static_cast<VkFormat>( format ),
10480         reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
10481       return structureChain;
10482     }
10483 
10484     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties2
getImageFormatProperties2(const PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const10485                                            PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
10486     {
10487       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties;
10488       VULKAN_HPP_NAMESPACE::Result                 result =
10489         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2(
10490           static_cast<VkPhysicalDevice>( m_physicalDevice ),
10491           reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
10492           reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
10493       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10494       {
10495         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" );
10496       }
10497       return imageFormatProperties;
10498     }
10499 
10500     template <typename X, typename Y, typename... Z>
10501     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
getImageFormatProperties2(const PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const10502                          PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
10503     {
10504       StructureChain<X, Y, Z...>                     structureChain;
10505       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties =
10506         structureChain.template get<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>();
10507       VULKAN_HPP_NAMESPACE::Result result =
10508         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2(
10509           static_cast<VkPhysicalDevice>( m_physicalDevice ),
10510           reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
10511           reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
10512       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10513       {
10514         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" );
10515       }
10516       return structureChain;
10517     }
10518 
10519     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
getQueueFamilyProperties2() const10520                                            PhysicalDevice::getQueueFamilyProperties2() const VULKAN_HPP_NOEXCEPT
10521     {
10522       uint32_t queueFamilyPropertyCount;
10523       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2(
10524         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
10525       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties( queueFamilyPropertyCount );
10526       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2(
10527         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10528         &queueFamilyPropertyCount,
10529         reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
10530       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
10531       return queueFamilyProperties;
10532     }
10533 
10534     template <typename StructureChain>
getQueueFamilyProperties2() const10535     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain> PhysicalDevice::getQueueFamilyProperties2() const
10536     {
10537       uint32_t queueFamilyPropertyCount;
10538       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2(
10539         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
10540       std::vector<StructureChain>                               returnVector( queueFamilyPropertyCount );
10541       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties( queueFamilyPropertyCount );
10542       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
10543       {
10544         queueFamilyProperties[i].pNext =
10545           returnVector[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>().pNext;
10546       }
10547       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2(
10548         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10549         &queueFamilyPropertyCount,
10550         reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
10551       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
10552       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
10553       {
10554         returnVector[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>() = queueFamilyProperties[i];
10555       }
10556       return returnVector;
10557     }
10558 
10559     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
getMemoryProperties2() const10560                                            PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT
10561     {
10562       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties;
10563       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2(
10564         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10565         reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
10566       return memoryProperties;
10567     }
10568 
10569     template <typename X, typename Y, typename... Z>
10570     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getMemoryProperties2() const10571                                            PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT
10572     {
10573       StructureChain<X, Y, Z...>                              structureChain;
10574       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties =
10575         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>();
10576       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2(
10577         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10578         reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
10579       return structureChain;
10580     }
10581 
10582     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
getSparseImageFormatProperties2(const PhysicalDeviceSparseImageFormatInfo2 & formatInfo) const10583                                            PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const
10584       VULKAN_HPP_NOEXCEPT
10585     {
10586       uint32_t propertyCount;
10587       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2(
10588         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10589         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
10590         &propertyCount,
10591         nullptr );
10592       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2> properties( propertyCount );
10593       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2(
10594         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10595         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
10596         &propertyCount,
10597         reinterpret_cast<VkSparseImageFormatProperties2 *>( properties.data() ) );
10598       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
10599       return properties;
10600     }
10601 
10602     VULKAN_HPP_INLINE void
trim(VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags) const10603       CommandPool::trim( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT
10604     {
10605       getDispatcher()->vkTrimCommandPool( static_cast<VkDevice>( m_device ),
10606                                           static_cast<VkCommandPool>( m_commandPool ),
10607                                           static_cast<VkCommandPoolTrimFlags>( flags ) );
10608     }
10609 
10610     VULKAN_HPP_INLINE void
updateWithTemplate(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData) const10611       DescriptorSet::updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
10612                                          const void * pData ) const VULKAN_HPP_NOEXCEPT
10613     {
10614       getDispatcher()->vkUpdateDescriptorSetWithTemplate(
10615         static_cast<VkDevice>( m_device ),
10616         static_cast<VkDescriptorSet>( m_descriptorSet ),
10617         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
10618         pData );
10619     }
10620 
10621     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties
getExternalBufferProperties(const PhysicalDeviceExternalBufferInfo & externalBufferInfo) const10622                                            PhysicalDevice::getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const
10623       VULKAN_HPP_NOEXCEPT
10624     {
10625       VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties;
10626       getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties(
10627         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10628         reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( &externalBufferInfo ),
10629         reinterpret_cast<VkExternalBufferProperties *>( &externalBufferProperties ) );
10630       return externalBufferProperties;
10631     }
10632 
10633     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties
getExternalFenceProperties(const PhysicalDeviceExternalFenceInfo & externalFenceInfo) const10634                                            PhysicalDevice::getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const
10635       VULKAN_HPP_NOEXCEPT
10636     {
10637       VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties;
10638       getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties(
10639         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10640         reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( &externalFenceInfo ),
10641         reinterpret_cast<VkExternalFenceProperties *>( &externalFenceProperties ) );
10642       return externalFenceProperties;
10643     }
10644 
10645     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties
getExternalSemaphoreProperties(const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo) const10646                                            PhysicalDevice::getExternalSemaphoreProperties(
10647         const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT
10648     {
10649       VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties;
10650       getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties(
10651         static_cast<VkPhysicalDevice>( m_physicalDevice ),
10652         reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( &externalSemaphoreInfo ),
10653         reinterpret_cast<VkExternalSemaphoreProperties *>( &externalSemaphoreProperties ) );
10654       return externalSemaphoreProperties;
10655     }
10656 
10657     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
getDescriptorSetLayoutSupport(const DescriptorSetLayoutCreateInfo & createInfo) const10658                                            Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo ) const
10659       VULKAN_HPP_NOEXCEPT
10660     {
10661       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support;
10662       getDispatcher()->vkGetDescriptorSetLayoutSupport(
10663         static_cast<VkDevice>( m_device ),
10664         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
10665         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
10666       return support;
10667     }
10668 
10669     template <typename X, typename Y, typename... Z>
getDescriptorSetLayoutSupport(const DescriptorSetLayoutCreateInfo & createInfo) const10670     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getDescriptorSetLayoutSupport(
10671       const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
10672     {
10673       StructureChain<X, Y, Z...>                         structureChain;
10674       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support =
10675         structureChain.template get<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>();
10676       getDispatcher()->vkGetDescriptorSetLayoutSupport(
10677         static_cast<VkDevice>( m_device ),
10678         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
10679         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
10680       return structureChain;
10681     }
10682 
10683     //=== VK_VERSION_1_2 ===
10684 
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) const10685     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
10686                                                              VULKAN_HPP_NAMESPACE::DeviceSize offset,
10687                                                              VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
10688                                                              VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
10689                                                              uint32_t                         maxDrawCount,
10690                                                              uint32_t stride ) const VULKAN_HPP_NOEXCEPT
10691     {
10692       getDispatcher()->vkCmdDrawIndirectCount( static_cast<VkCommandBuffer>( m_commandBuffer ),
10693                                                static_cast<VkBuffer>( buffer ),
10694                                                static_cast<VkDeviceSize>( offset ),
10695                                                static_cast<VkBuffer>( countBuffer ),
10696                                                static_cast<VkDeviceSize>( countBufferOffset ),
10697                                                maxDrawCount,
10698                                                stride );
10699     }
10700 
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) const10701     VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer     buffer,
10702                                                                     VULKAN_HPP_NAMESPACE::DeviceSize offset,
10703                                                                     VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
10704                                                                     VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
10705                                                                     uint32_t                         maxDrawCount,
10706                                                                     uint32_t stride ) const VULKAN_HPP_NOEXCEPT
10707     {
10708       getDispatcher()->vkCmdDrawIndexedIndirectCount( static_cast<VkCommandBuffer>( m_commandBuffer ),
10709                                                       static_cast<VkBuffer>( buffer ),
10710                                                       static_cast<VkDeviceSize>( offset ),
10711                                                       static_cast<VkBuffer>( countBuffer ),
10712                                                       static_cast<VkDeviceSize>( countBufferOffset ),
10713                                                       maxDrawCount,
10714                                                       stride );
10715     }
10716 
10717     VULKAN_HPP_INLINE void
beginRenderPass2(const RenderPassBeginInfo & renderPassBegin,const SubpassBeginInfo & subpassBeginInfo) const10718       CommandBuffer::beginRenderPass2( const RenderPassBeginInfo & renderPassBegin,
10719                                        const SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT
10720     {
10721       getDispatcher()->vkCmdBeginRenderPass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
10722                                               reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
10723                                               reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ) );
10724     }
10725 
10726     VULKAN_HPP_INLINE void
nextSubpass2(const SubpassBeginInfo & subpassBeginInfo,const SubpassEndInfo & subpassEndInfo) const10727       CommandBuffer::nextSubpass2( const SubpassBeginInfo & subpassBeginInfo,
10728                                    const SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
10729     {
10730       getDispatcher()->vkCmdNextSubpass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
10731                                           reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ),
10732                                           reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
10733     }
10734 
10735     VULKAN_HPP_INLINE void
endRenderPass2(const SubpassEndInfo & subpassEndInfo) const10736       CommandBuffer::endRenderPass2( const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
10737     {
10738       getDispatcher()->vkCmdEndRenderPass2( static_cast<VkCommandBuffer>( m_commandBuffer ),
10739                                             reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
10740     }
10741 
reset(uint32_t firstQuery,uint32_t queryCount) const10742     VULKAN_HPP_INLINE void QueryPool::reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
10743     {
10744       getDispatcher()->vkResetQueryPool(
10745         static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), firstQuery, queryCount );
10746     }
10747 
getCounterValue() const10748     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Semaphore::getCounterValue() const
10749     {
10750       uint64_t                     value;
10751       VULKAN_HPP_NAMESPACE::Result result =
10752         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreCounterValue(
10753           static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), &value ) );
10754       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10755       {
10756         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Semaphore::getCounterValue" );
10757       }
10758       return value;
10759     }
10760 
10761     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
waitSemaphores(const SemaphoreWaitInfo & waitInfo,uint64_t timeout) const10762                                            Device::waitSemaphores( const SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const
10763     {
10764       VULKAN_HPP_NAMESPACE::Result result =
10765         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkWaitSemaphores(
10766           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreWaitInfo *>( &waitInfo ), timeout ) );
10767       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
10768            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) )
10769       {
10770         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphores" );
10771       }
10772       return result;
10773     }
10774 
signalSemaphore(const SemaphoreSignalInfo & signalInfo) const10775     VULKAN_HPP_INLINE void Device::signalSemaphore( const SemaphoreSignalInfo & signalInfo ) const
10776     {
10777       VULKAN_HPP_NAMESPACE::Result result =
10778         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSignalSemaphore(
10779           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreSignalInfo *>( &signalInfo ) ) );
10780       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10781       {
10782         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphore" );
10783       }
10784     }
10785 
10786     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getBufferAddress(const BufferDeviceAddressInfo & info) const10787                                            Device::getBufferAddress( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
10788     {
10789       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( getDispatcher()->vkGetBufferDeviceAddress(
10790         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) ) );
10791     }
10792 
10793     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getBufferOpaqueCaptureAddress(const BufferDeviceAddressInfo & info) const10794                                            Device::getBufferOpaqueCaptureAddress( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
10795     {
10796       return getDispatcher()->vkGetBufferOpaqueCaptureAddress(
10797         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
10798     }
10799 
getMemoryOpaqueCaptureAddress(const DeviceMemoryOpaqueCaptureAddressInfo & info) const10800     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddress(
10801       const DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
10802     {
10803       return getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress(
10804         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( &info ) );
10805     }
10806 
10807     //=== VK_KHR_surface ===
10808 
10809     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getSurfaceSupportKHR(uint32_t queueFamilyIndex,VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const10810                                            PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
10811     {
10812       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR &&
10813                          "Function <vkGetPhysicalDeviceSurfaceSupportKHR> needs extension <VK_KHR_surface> enabled!" );
10814 
10815       VULKAN_HPP_NAMESPACE::Bool32 supported;
10816       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10817         getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10818                                                                queueFamilyIndex,
10819                                                                static_cast<VkSurfaceKHR>( surface ),
10820                                                                reinterpret_cast<VkBool32 *>( &supported ) ) );
10821       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10822       {
10823         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" );
10824       }
10825       return supported;
10826     }
10827 
10828     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR
getSurfaceCapabilitiesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const10829                                            PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
10830     {
10831       VULKAN_HPP_ASSERT(
10832         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR &&
10833         "Function <vkGetPhysicalDeviceSurfaceCapabilitiesKHR> needs extension <VK_KHR_surface> enabled!" );
10834 
10835       VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities;
10836       VULKAN_HPP_NAMESPACE::Result                 result =
10837         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
10838           static_cast<VkPhysicalDevice>( m_physicalDevice ),
10839           static_cast<VkSurfaceKHR>( surface ),
10840           reinterpret_cast<VkSurfaceCapabilitiesKHR *>( &surfaceCapabilities ) ) );
10841       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10842       {
10843         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" );
10844       }
10845       return surfaceCapabilities;
10846     }
10847 
10848     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR>
getSurfaceFormatsKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const10849                                            PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
10850     {
10851       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR &&
10852                          "Function <vkGetPhysicalDeviceSurfaceFormatsKHR> needs extension <VK_KHR_surface> enabled!" );
10853 
10854       std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormatKHR> surfaceFormats;
10855       uint32_t                                            surfaceFormatCount;
10856       VULKAN_HPP_NAMESPACE::Result                        result;
10857       do
10858       {
10859         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10860           getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10861                                                                  static_cast<VkSurfaceKHR>( surface ),
10862                                                                  &surfaceFormatCount,
10863                                                                  nullptr ) );
10864         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount )
10865         {
10866           surfaceFormats.resize( surfaceFormatCount );
10867           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR(
10868             static_cast<VkPhysicalDevice>( m_physicalDevice ),
10869             static_cast<VkSurfaceKHR>( surface ),
10870             &surfaceFormatCount,
10871             reinterpret_cast<VkSurfaceFormatKHR *>( surfaceFormats.data() ) ) );
10872           VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
10873         }
10874       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
10875       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( surfaceFormatCount < surfaceFormats.size() ) )
10876       {
10877         surfaceFormats.resize( surfaceFormatCount );
10878       }
10879       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10880       {
10881         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" );
10882       }
10883       return surfaceFormats;
10884     }
10885 
10886     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
getSurfacePresentModesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const10887                                            PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
10888     {
10889       VULKAN_HPP_ASSERT(
10890         getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR &&
10891         "Function <vkGetPhysicalDeviceSurfacePresentModesKHR> needs extension <VK_KHR_surface> enabled!" );
10892 
10893       std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR> presentModes;
10894       uint32_t                                          presentModeCount;
10895       VULKAN_HPP_NAMESPACE::Result                      result;
10896       do
10897       {
10898         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10899           getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
10900                                                                       static_cast<VkSurfaceKHR>( surface ),
10901                                                                       &presentModeCount,
10902                                                                       nullptr ) );
10903         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentModeCount )
10904         {
10905           presentModes.resize( presentModeCount );
10906           result =
10907             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR(
10908               static_cast<VkPhysicalDevice>( m_physicalDevice ),
10909               static_cast<VkSurfaceKHR>( surface ),
10910               &presentModeCount,
10911               reinterpret_cast<VkPresentModeKHR *>( presentModes.data() ) ) );
10912           VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
10913         }
10914       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
10915       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( presentModeCount < presentModes.size() ) )
10916       {
10917         presentModes.resize( presentModeCount );
10918       }
10919       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10920       {
10921         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" );
10922       }
10923       return presentModes;
10924     }
10925 
10926     //=== VK_KHR_swapchain ===
10927 
getImages() const10928     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VkImage> SwapchainKHR::getImages() const
10929     {
10930       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainImagesKHR &&
10931                          "Function <vkGetSwapchainImagesKHR> needs extension <VK_KHR_swapchain> enabled!" );
10932 
10933       std::vector<VkImage>         swapchainImages;
10934       uint32_t                     swapchainImageCount;
10935       VULKAN_HPP_NAMESPACE::Result result;
10936       do
10937       {
10938         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10939           getDispatcher()->vkGetSwapchainImagesKHR( static_cast<VkDevice>( m_device ),
10940                                                     static_cast<VkSwapchainKHR>( m_swapchainKHR ),
10941                                                     &swapchainImageCount,
10942                                                     nullptr ) );
10943         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && swapchainImageCount )
10944         {
10945           swapchainImages.resize( swapchainImageCount );
10946           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10947             getDispatcher()->vkGetSwapchainImagesKHR( static_cast<VkDevice>( m_device ),
10948                                                       static_cast<VkSwapchainKHR>( m_swapchainKHR ),
10949                                                       &swapchainImageCount,
10950                                                       swapchainImages.data() ) );
10951           VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() );
10952         }
10953       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
10954       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( swapchainImageCount < swapchainImages.size() ) )
10955       {
10956         swapchainImages.resize( swapchainImageCount );
10957       }
10958       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
10959       {
10960         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getImages" );
10961       }
10962       return swapchainImages;
10963     }
10964 
10965     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) const10966                                            SwapchainKHR::acquireNextImage( uint64_t                        timeout,
10967                                       VULKAN_HPP_NAMESPACE::Semaphore semaphore,
10968                                       VULKAN_HPP_NAMESPACE::Fence     fence ) const
10969     {
10970       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImageKHR &&
10971                          "Function <vkAcquireNextImageKHR> needs extension <VK_KHR_swapchain> enabled!" );
10972 
10973       uint32_t                     imageIndex;
10974       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
10975         getDispatcher()->vkAcquireNextImageKHR( static_cast<VkDevice>( m_device ),
10976                                                 static_cast<VkSwapchainKHR>( m_swapchainKHR ),
10977                                                 timeout,
10978                                                 static_cast<VkSemaphore>( semaphore ),
10979                                                 static_cast<VkFence>( fence ),
10980                                                 &imageIndex ) );
10981       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
10982            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) &&
10983            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) &&
10984            ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) )
10985       {
10986         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::acquireNextImage" );
10987       }
10988       return std::make_pair( result, imageIndex );
10989     }
10990 
10991     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
presentKHR(const PresentInfoKHR & presentInfo) const10992                                            Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
10993     {
10994       VULKAN_HPP_ASSERT( getDispatcher()->vkQueuePresentKHR &&
10995                          "Function <vkQueuePresentKHR> needs extension <VK_KHR_swapchain> enabled!" );
10996 
10997       VULKAN_HPP_NAMESPACE::Result result =
10998         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueuePresentKHR(
10999           static_cast<VkQueue>( m_queue ), reinterpret_cast<const VkPresentInfoKHR *>( &presentInfo ) ) );
11000       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11001            ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) )
11002       {
11003         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::presentKHR" );
11004       }
11005       return result;
11006     }
11007 
11008     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR
getGroupPresentCapabilitiesKHR() const11009                                            Device::getGroupPresentCapabilitiesKHR() const
11010     {
11011       VULKAN_HPP_ASSERT(
11012         getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR &&
11013         "Function <vkGetDeviceGroupPresentCapabilitiesKHR> needs extension <VK_KHR_swapchain> enabled!" );
11014 
11015       VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities;
11016       VULKAN_HPP_NAMESPACE::Result                            result =
11017         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR(
11018           static_cast<VkDevice>( m_device ),
11019           reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHR *>( &deviceGroupPresentCapabilities ) ) );
11020       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11021       {
11022         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" );
11023       }
11024       return deviceGroupPresentCapabilities;
11025     }
11026 
11027     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
getGroupSurfacePresentModesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const11028                                            Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
11029     {
11030       VULKAN_HPP_ASSERT(
11031         getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR &&
11032         "Function <vkGetDeviceGroupSurfacePresentModesKHR> needs extension <VK_KHR_swapchain> enabled!" );
11033 
11034       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes;
11035       VULKAN_HPP_NAMESPACE::Result                         result =
11036         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR(
11037           static_cast<VkDevice>( m_device ),
11038           static_cast<VkSurfaceKHR>( surface ),
11039           reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR *>( &modes ) ) );
11040       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11041       {
11042         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" );
11043       }
11044       return modes;
11045     }
11046 
11047     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::Rect2D>
getPresentRectanglesKHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const11048                                            PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
11049     {
11050       VULKAN_HPP_ASSERT(
11051         getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR &&
11052         "Function <vkGetPhysicalDevicePresentRectanglesKHR> needs extension <VK_KHR_swapchain> enabled!" );
11053 
11054       std::vector<VULKAN_HPP_NAMESPACE::Rect2D> rects;
11055       uint32_t                                  rectCount;
11056       VULKAN_HPP_NAMESPACE::Result              result;
11057       do
11058       {
11059         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11060           getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11061                                                                     static_cast<VkSurfaceKHR>( surface ),
11062                                                                     &rectCount,
11063                                                                     nullptr ) );
11064         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && rectCount )
11065         {
11066           rects.resize( rectCount );
11067           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11068             getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11069                                                                       static_cast<VkSurfaceKHR>( surface ),
11070                                                                       &rectCount,
11071                                                                       reinterpret_cast<VkRect2D *>( rects.data() ) ) );
11072           VULKAN_HPP_ASSERT( rectCount <= rects.size() );
11073         }
11074       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11075       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( rectCount < rects.size() ) )
11076       {
11077         rects.resize( rectCount );
11078       }
11079       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11080       {
11081         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" );
11082       }
11083       return rects;
11084     }
11085 
11086     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, uint32_t>
acquireNextImage2KHR(const AcquireNextImageInfoKHR & acquireInfo) const11087                                            Device::acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo ) const
11088     {
11089       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImage2KHR &&
11090                          "Function <vkAcquireNextImage2KHR> needs extension <VK_KHR_swapchain> enabled!" );
11091 
11092       uint32_t                     imageIndex;
11093       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11094         getDispatcher()->vkAcquireNextImage2KHR( static_cast<VkDevice>( m_device ),
11095                                                  reinterpret_cast<const VkAcquireNextImageInfoKHR *>( &acquireInfo ),
11096                                                  &imageIndex ) );
11097       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11098            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) &&
11099            ( result != VULKAN_HPP_NAMESPACE::Result::eNotReady ) &&
11100            ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) )
11101       {
11102         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImage2KHR" );
11103       }
11104       return std::make_pair( result, imageIndex );
11105     }
11106 
11107     //=== VK_KHR_display ===
11108 
11109     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR>
getDisplayPropertiesKHR() const11110                                            PhysicalDevice::getDisplayPropertiesKHR() const
11111     {
11112       VULKAN_HPP_ASSERT(
11113         getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR &&
11114         "Function <vkGetPhysicalDeviceDisplayPropertiesKHR> needs extension <VK_KHR_display> enabled!" );
11115 
11116       std::vector<VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR> properties;
11117       uint32_t                                                propertyCount;
11118       VULKAN_HPP_NAMESPACE::Result                            result;
11119       do
11120       {
11121         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR(
11122           static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
11123         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
11124         {
11125           properties.resize( propertyCount );
11126           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR(
11127             static_cast<VkPhysicalDevice>( m_physicalDevice ),
11128             &propertyCount,
11129             reinterpret_cast<VkDisplayPropertiesKHR *>( properties.data() ) ) );
11130           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
11131         }
11132       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11133       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
11134       {
11135         properties.resize( propertyCount );
11136       }
11137       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11138       {
11139         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" );
11140       }
11141       return properties;
11142     }
11143 
11144     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR>
getDisplayPlanePropertiesKHR() const11145                                            PhysicalDevice::getDisplayPlanePropertiesKHR() const
11146     {
11147       VULKAN_HPP_ASSERT(
11148         getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR &&
11149         "Function <vkGetPhysicalDeviceDisplayPlanePropertiesKHR> needs extension <VK_KHR_display> enabled!" );
11150 
11151       std::vector<VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR> properties;
11152       uint32_t                                                     propertyCount;
11153       VULKAN_HPP_NAMESPACE::Result                                 result;
11154       do
11155       {
11156         result =
11157           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
11158             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
11159         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
11160         {
11161           properties.resize( propertyCount );
11162           result =
11163             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
11164               static_cast<VkPhysicalDevice>( m_physicalDevice ),
11165               &propertyCount,
11166               reinterpret_cast<VkDisplayPlanePropertiesKHR *>( properties.data() ) ) );
11167           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
11168         }
11169       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11170       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
11171       {
11172         properties.resize( propertyCount );
11173       }
11174       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11175       {
11176         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" );
11177       }
11178       return properties;
11179     }
11180 
11181     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR>
getModeProperties() const11182                                            DisplayKHR::getModeProperties() const
11183     {
11184       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModePropertiesKHR &&
11185                          "Function <vkGetDisplayModePropertiesKHR> needs extension <VK_KHR_display> enabled!" );
11186 
11187       std::vector<VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR> properties;
11188       uint32_t                                                    propertyCount;
11189       VULKAN_HPP_NAMESPACE::Result                                result;
11190       do
11191       {
11192         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11193           getDispatcher()->vkGetDisplayModePropertiesKHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11194                                                           static_cast<VkDisplayKHR>( m_displayKHR ),
11195                                                           &propertyCount,
11196                                                           nullptr ) );
11197         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
11198         {
11199           properties.resize( propertyCount );
11200           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayModePropertiesKHR(
11201             static_cast<VkPhysicalDevice>( m_physicalDevice ),
11202             static_cast<VkDisplayKHR>( m_displayKHR ),
11203             &propertyCount,
11204             reinterpret_cast<VkDisplayModePropertiesKHR *>( properties.data() ) ) );
11205           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
11206         }
11207       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11208       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
11209       {
11210         properties.resize( propertyCount );
11211       }
11212       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11213       {
11214         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::getModeProperties" );
11215       }
11216       return properties;
11217     }
11218 
11219     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR
getDisplayPlaneCapabilities(uint32_t planeIndex) const11220                                            DisplayModeKHR::getDisplayPlaneCapabilities( uint32_t planeIndex ) const
11221     {
11222       VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR &&
11223                          "Function <vkGetDisplayPlaneCapabilitiesKHR> needs extension <VK_KHR_display> enabled!" );
11224 
11225       VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities;
11226       VULKAN_HPP_NAMESPACE::Result                      result =
11227         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR(
11228           static_cast<VkPhysicalDevice>( m_physicalDevice ),
11229           static_cast<VkDisplayModeKHR>( m_displayModeKHR ),
11230           planeIndex,
11231           reinterpret_cast<VkDisplayPlaneCapabilitiesKHR *>( &capabilities ) ) );
11232       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11233       {
11234         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayModeKHR::getDisplayPlaneCapabilities" );
11235       }
11236       return capabilities;
11237     }
11238 
11239 #  if defined( VK_USE_PLATFORM_XLIB_KHR )
11240     //=== VK_KHR_xlib_surface ===
11241 
getXlibPresentationSupportKHR(uint32_t queueFamilyIndex,Display & dpy,VisualID visualID) const11242     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 PhysicalDevice::getXlibPresentationSupportKHR(
11243       uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT
11244     {
11245       VULKAN_HPP_ASSERT(
11246         getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR &&
11247         "Function <vkGetPhysicalDeviceXlibPresentationSupportKHR> needs extension <VK_KHR_xlib_surface> enabled!" );
11248 
11249       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR(
11250         static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &dpy, visualID ) );
11251     }
11252 #  endif /*VK_USE_PLATFORM_XLIB_KHR*/
11253 
11254 #  if defined( VK_USE_PLATFORM_XCB_KHR )
11255     //=== VK_KHR_xcb_surface ===
11256 
getXcbPresentationSupportKHR(uint32_t queueFamilyIndex,xcb_connection_t & connection,xcb_visualid_t visual_id) const11257     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32 PhysicalDevice::getXcbPresentationSupportKHR(
11258       uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT
11259     {
11260       VULKAN_HPP_ASSERT(
11261         getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR &&
11262         "Function <vkGetPhysicalDeviceXcbPresentationSupportKHR> needs extension <VK_KHR_xcb_surface> enabled!" );
11263 
11264       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR(
11265         static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &connection, visual_id ) );
11266     }
11267 #  endif /*VK_USE_PLATFORM_XCB_KHR*/
11268 
11269 #  if defined( VK_USE_PLATFORM_WAYLAND_KHR )
11270     //=== VK_KHR_wayland_surface ===
11271 
11272     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getWaylandPresentationSupportKHR(uint32_t queueFamilyIndex,struct wl_display & display) const11273                                            PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t            queueFamilyIndex,
11274                                                         struct wl_display & display ) const VULKAN_HPP_NOEXCEPT
11275     {
11276       VULKAN_HPP_ASSERT(
11277         getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR &&
11278         "Function <vkGetPhysicalDeviceWaylandPresentationSupportKHR> needs extension <VK_KHR_wayland_surface> enabled!" );
11279 
11280       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>(
11281         getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR(
11282           static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &display ) );
11283     }
11284 #  endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
11285 
11286 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
11287     //=== VK_KHR_win32_surface ===
11288 
11289     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getWin32PresentationSupportKHR(uint32_t queueFamilyIndex) const11290                                            PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT
11291     {
11292       VULKAN_HPP_ASSERT(
11293         getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR &&
11294         "Function <vkGetPhysicalDeviceWin32PresentationSupportKHR> needs extension <VK_KHR_win32_surface> enabled!" );
11295 
11296       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>( getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR(
11297         static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex ) );
11298     }
11299 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
11300 
11301     //=== VK_EXT_debug_report ===
11302 
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) const11303     VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT      flags,
11304                                                             VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_,
11305                                                             uint64_t                                       object,
11306                                                             size_t                                         location,
11307                                                             int32_t                                        messageCode,
11308                                                             const std::string &                            layerPrefix,
11309                                                             const std::string & message ) const VULKAN_HPP_NOEXCEPT
11310     {
11311       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugReportMessageEXT &&
11312                          "Function <vkDebugReportMessageEXT> needs extension <VK_EXT_debug_report> enabled!" );
11313 
11314       getDispatcher()->vkDebugReportMessageEXT( static_cast<VkInstance>( m_instance ),
11315                                                 static_cast<VkDebugReportFlagsEXT>( flags ),
11316                                                 static_cast<VkDebugReportObjectTypeEXT>( objectType_ ),
11317                                                 object,
11318                                                 location,
11319                                                 messageCode,
11320                                                 layerPrefix.c_str(),
11321                                                 message.c_str() );
11322     }
11323 
11324     //=== VK_EXT_debug_marker ===
11325 
debugMarkerSetObjectTagEXT(const DebugMarkerObjectTagInfoEXT & tagInfo) const11326     VULKAN_HPP_INLINE void Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
11327     {
11328       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectTagEXT &&
11329                          "Function <vkDebugMarkerSetObjectTagEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11330 
11331       VULKAN_HPP_NAMESPACE::Result result =
11332         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDebugMarkerSetObjectTagEXT(
11333           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT *>( &tagInfo ) ) );
11334       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11335       {
11336         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" );
11337       }
11338     }
11339 
debugMarkerSetObjectNameEXT(const DebugMarkerObjectNameInfoEXT & nameInfo) const11340     VULKAN_HPP_INLINE void Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
11341     {
11342       VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectNameEXT &&
11343                          "Function <vkDebugMarkerSetObjectNameEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11344 
11345       VULKAN_HPP_NAMESPACE::Result result =
11346         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDebugMarkerSetObjectNameEXT(
11347           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT *>( &nameInfo ) ) );
11348       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11349       {
11350         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" );
11351       }
11352     }
11353 
11354     VULKAN_HPP_INLINE void
debugMarkerBeginEXT(const DebugMarkerMarkerInfoEXT & markerInfo) const11355       CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT
11356     {
11357       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerBeginEXT &&
11358                          "Function <vkCmdDebugMarkerBeginEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11359 
11360       getDispatcher()->vkCmdDebugMarkerBeginEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11361                                                  reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( &markerInfo ) );
11362     }
11363 
debugMarkerEndEXT() const11364     VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT
11365     {
11366       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerEndEXT &&
11367                          "Function <vkCmdDebugMarkerEndEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11368 
11369       getDispatcher()->vkCmdDebugMarkerEndEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
11370     }
11371 
11372     VULKAN_HPP_INLINE void
debugMarkerInsertEXT(const DebugMarkerMarkerInfoEXT & markerInfo) const11373       CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const VULKAN_HPP_NOEXCEPT
11374     {
11375       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerInsertEXT &&
11376                          "Function <vkCmdDebugMarkerInsertEXT> needs extension <VK_EXT_debug_marker> enabled!" );
11377 
11378       getDispatcher()->vkCmdDebugMarkerInsertEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11379                                                   reinterpret_cast<const VkDebugMarkerMarkerInfoEXT *>( &markerInfo ) );
11380     }
11381 
11382 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
11383     //=== VK_KHR_video_queue ===
11384 
11385     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR
getVideoCapabilitiesKHR(const VideoProfileKHR & videoProfile) const11386                                            PhysicalDevice::getVideoCapabilitiesKHR( const VideoProfileKHR & videoProfile ) const
11387     {
11388       VULKAN_HPP_ASSERT(
11389         getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR &&
11390         "Function <vkGetPhysicalDeviceVideoCapabilitiesKHR> needs extension <VK_KHR_video_queue> enabled!" );
11391 
11392       VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR capabilities;
11393       VULKAN_HPP_NAMESPACE::Result               result =
11394         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR(
11395           static_cast<VkPhysicalDevice>( m_physicalDevice ),
11396           reinterpret_cast<const VkVideoProfileKHR *>( &videoProfile ),
11397           reinterpret_cast<VkVideoCapabilitiesKHR *>( &capabilities ) ) );
11398       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11399       {
11400         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" );
11401       }
11402       return capabilities;
11403     }
11404 
11405     template <typename X, typename Y, typename... Z>
11406     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
getVideoCapabilitiesKHR(const VideoProfileKHR & videoProfile) const11407                          PhysicalDevice::getVideoCapabilitiesKHR( const VideoProfileKHR & videoProfile ) const
11408     {
11409       StructureChain<X, Y, Z...>                   structureChain;
11410       VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR & capabilities =
11411         structureChain.template get<VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR>();
11412       VULKAN_HPP_NAMESPACE::Result result =
11413         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR(
11414           static_cast<VkPhysicalDevice>( m_physicalDevice ),
11415           reinterpret_cast<const VkVideoProfileKHR *>( &videoProfile ),
11416           reinterpret_cast<VkVideoCapabilitiesKHR *>( &capabilities ) ) );
11417       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11418       {
11419         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" );
11420       }
11421       return structureChain;
11422     }
11423 
11424     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR>
getVideoFormatPropertiesKHR(const PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo) const11425                                            PhysicalDevice::getVideoFormatPropertiesKHR( const PhysicalDeviceVideoFormatInfoKHR & videoFormatInfo ) const
11426     {
11427       VULKAN_HPP_ASSERT(
11428         getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR &&
11429         "Function <vkGetPhysicalDeviceVideoFormatPropertiesKHR> needs extension <VK_KHR_video_queue> enabled!" );
11430 
11431       std::vector<VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR> videoFormatProperties;
11432       uint32_t                                                    videoFormatPropertyCount;
11433       VULKAN_HPP_NAMESPACE::Result                                result;
11434       do
11435       {
11436         result =
11437           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR(
11438             static_cast<VkPhysicalDevice>( m_physicalDevice ),
11439             reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
11440             &videoFormatPropertyCount,
11441             nullptr ) );
11442         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && videoFormatPropertyCount )
11443         {
11444           videoFormatProperties.resize( videoFormatPropertyCount );
11445           result =
11446             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR(
11447               static_cast<VkPhysicalDevice>( m_physicalDevice ),
11448               reinterpret_cast<const VkPhysicalDeviceVideoFormatInfoKHR *>( &videoFormatInfo ),
11449               &videoFormatPropertyCount,
11450               reinterpret_cast<VkVideoFormatPropertiesKHR *>( videoFormatProperties.data() ) ) );
11451           VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() );
11452         }
11453       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11454       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11455            ( videoFormatPropertyCount < videoFormatProperties.size() ) )
11456       {
11457         videoFormatProperties.resize( videoFormatPropertyCount );
11458       }
11459       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11460       {
11461         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" );
11462       }
11463       return videoFormatProperties;
11464     }
11465 
11466     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR>
getMemoryRequirements() const11467                                            VideoSessionKHR::getMemoryRequirements() const
11468     {
11469       VULKAN_HPP_ASSERT(
11470         getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR &&
11471         "Function <vkGetVideoSessionMemoryRequirementsKHR> needs extension <VK_KHR_video_queue> enabled!" );
11472 
11473       std::vector<VULKAN_HPP_NAMESPACE::VideoGetMemoryPropertiesKHR> videoSessionMemoryRequirements;
11474       uint32_t                                                       videoSessionMemoryRequirementsCount;
11475       VULKAN_HPP_NAMESPACE::Result                                   result;
11476       do
11477       {
11478         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11479           getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR( static_cast<VkDevice>( m_device ),
11480                                                                    static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
11481                                                                    &videoSessionMemoryRequirementsCount,
11482                                                                    nullptr ) );
11483         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && videoSessionMemoryRequirementsCount )
11484         {
11485           videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount );
11486           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR(
11487             static_cast<VkDevice>( m_device ),
11488             static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
11489             &videoSessionMemoryRequirementsCount,
11490             reinterpret_cast<VkVideoGetMemoryPropertiesKHR *>( videoSessionMemoryRequirements.data() ) ) );
11491           VULKAN_HPP_ASSERT( videoSessionMemoryRequirementsCount <= videoSessionMemoryRequirements.size() );
11492         }
11493       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11494       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
11495            ( videoSessionMemoryRequirementsCount < videoSessionMemoryRequirements.size() ) )
11496       {
11497         videoSessionMemoryRequirements.resize( videoSessionMemoryRequirementsCount );
11498       }
11499       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11500       {
11501         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionKHR::getMemoryRequirements" );
11502       }
11503       return videoSessionMemoryRequirements;
11504     }
11505 
bindMemory(ArrayProxy<const VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR> const & videoSessionBindMemories) const11506     VULKAN_HPP_INLINE void VideoSessionKHR::bindMemory(
11507       ArrayProxy<const VULKAN_HPP_NAMESPACE::VideoBindMemoryKHR> const & videoSessionBindMemories ) const
11508     {
11509       VULKAN_HPP_ASSERT( getDispatcher()->vkBindVideoSessionMemoryKHR &&
11510                          "Function <vkBindVideoSessionMemoryKHR> needs extension <VK_KHR_video_queue> enabled!" );
11511 
11512       VULKAN_HPP_NAMESPACE::Result result =
11513         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindVideoSessionMemoryKHR(
11514           static_cast<VkDevice>( m_device ),
11515           static_cast<VkVideoSessionKHR>( m_videoSessionKHR ),
11516           videoSessionBindMemories.size(),
11517           reinterpret_cast<const VkVideoBindMemoryKHR *>( videoSessionBindMemories.data() ) ) );
11518       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11519       {
11520         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionKHR::bindMemory" );
11521       }
11522     }
11523 
11524     VULKAN_HPP_INLINE void
update(const VideoSessionParametersUpdateInfoKHR & updateInfo) const11525       VideoSessionParametersKHR::update( const VideoSessionParametersUpdateInfoKHR & updateInfo ) const
11526     {
11527       VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateVideoSessionParametersKHR &&
11528                          "Function <vkUpdateVideoSessionParametersKHR> needs extension <VK_KHR_video_queue> enabled!" );
11529 
11530       VULKAN_HPP_NAMESPACE::Result result =
11531         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkUpdateVideoSessionParametersKHR(
11532           static_cast<VkDevice>( m_device ),
11533           static_cast<VkVideoSessionParametersKHR>( m_videoSessionParametersKHR ),
11534           reinterpret_cast<const VkVideoSessionParametersUpdateInfoKHR *>( &updateInfo ) ) );
11535       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11536       {
11537         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::VideoSessionParametersKHR::update" );
11538       }
11539     }
11540 
11541     VULKAN_HPP_INLINE void
beginVideoCodingKHR(const VideoBeginCodingInfoKHR & beginInfo) const11542       CommandBuffer::beginVideoCodingKHR( const VideoBeginCodingInfoKHR & beginInfo ) const VULKAN_HPP_NOEXCEPT
11543     {
11544       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginVideoCodingKHR &&
11545                          "Function <vkCmdBeginVideoCodingKHR> needs extension <VK_KHR_video_queue> enabled!" );
11546 
11547       getDispatcher()->vkCmdBeginVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
11548                                                  reinterpret_cast<const VkVideoBeginCodingInfoKHR *>( &beginInfo ) );
11549     }
11550 
11551     VULKAN_HPP_INLINE void
endVideoCodingKHR(const VideoEndCodingInfoKHR & endCodingInfo) const11552       CommandBuffer::endVideoCodingKHR( const VideoEndCodingInfoKHR & endCodingInfo ) const VULKAN_HPP_NOEXCEPT
11553     {
11554       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndVideoCodingKHR &&
11555                          "Function <vkCmdEndVideoCodingKHR> needs extension <VK_KHR_video_queue> enabled!" );
11556 
11557       getDispatcher()->vkCmdEndVideoCodingKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
11558                                                reinterpret_cast<const VkVideoEndCodingInfoKHR *>( &endCodingInfo ) );
11559     }
11560 
controlVideoCodingKHR(const VideoCodingControlInfoKHR & codingControlInfo) const11561     VULKAN_HPP_INLINE void CommandBuffer::controlVideoCodingKHR(
11562       const VideoCodingControlInfoKHR & codingControlInfo ) const VULKAN_HPP_NOEXCEPT
11563     {
11564       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdControlVideoCodingKHR &&
11565                          "Function <vkCmdControlVideoCodingKHR> needs extension <VK_KHR_video_queue> enabled!" );
11566 
11567       getDispatcher()->vkCmdControlVideoCodingKHR(
11568         static_cast<VkCommandBuffer>( m_commandBuffer ),
11569         reinterpret_cast<const VkVideoCodingControlInfoKHR *>( &codingControlInfo ) );
11570     }
11571 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
11572 
11573 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
11574     //=== VK_KHR_video_decode_queue ===
11575 
11576     VULKAN_HPP_INLINE void
decodeVideoKHR(const VideoDecodeInfoKHR & frameInfo) const11577       CommandBuffer::decodeVideoKHR( const VideoDecodeInfoKHR & frameInfo ) const VULKAN_HPP_NOEXCEPT
11578     {
11579       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecodeVideoKHR &&
11580                          "Function <vkCmdDecodeVideoKHR> needs extension <VK_KHR_video_decode_queue> enabled!" );
11581 
11582       getDispatcher()->vkCmdDecodeVideoKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
11583                                             reinterpret_cast<const VkVideoDecodeInfoKHR *>( &frameInfo ) );
11584     }
11585 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
11586 
11587     //=== VK_EXT_transform_feedback ===
11588 
bindTransformFeedbackBuffersEXT(uint32_t firstBinding,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes) const11589     VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT(
11590       uint32_t                                                   firstBinding,
11591       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
11592       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
11593       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
11594     {
11595       VULKAN_HPP_ASSERT(
11596         getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT &&
11597         "Function <vkCmdBindTransformFeedbackBuffersEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11598 
11599 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
11600       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
11601       VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
11602 #  else
11603       if ( buffers.size() != offsets.size() )
11604       {
11605         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
11606                           "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" );
11607       }
11608       if ( !sizes.empty() && buffers.size() != sizes.size() )
11609       {
11610         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
11611                           "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" );
11612       }
11613 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
11614 
11615       getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11616                                                              firstBinding,
11617                                                              buffers.size(),
11618                                                              reinterpret_cast<const VkBuffer *>( buffers.data() ),
11619                                                              reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
11620                                                              reinterpret_cast<const VkDeviceSize *>( sizes.data() ) );
11621     }
11622 
beginTransformFeedbackEXT(uint32_t firstCounterBuffer,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets) const11623     VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT(
11624       uint32_t                                                   firstCounterBuffer,
11625       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     counterBuffers,
11626       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets ) const
11627       VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
11628     {
11629       VULKAN_HPP_ASSERT(
11630         getDispatcher()->vkCmdBeginTransformFeedbackEXT &&
11631         "Function <vkCmdBeginTransformFeedbackEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11632 
11633 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
11634       VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() );
11635 #  else
11636       if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() )
11637       {
11638         throw LogicError(
11639           VULKAN_HPP_NAMESPACE_STRING
11640           "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
11641       }
11642 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
11643 
11644       getDispatcher()->vkCmdBeginTransformFeedbackEXT(
11645         static_cast<VkCommandBuffer>( m_commandBuffer ),
11646         firstCounterBuffer,
11647         counterBuffers.size(),
11648         reinterpret_cast<const VkBuffer *>( counterBuffers.data() ),
11649         reinterpret_cast<const VkDeviceSize *>( counterBufferOffsets.data() ) );
11650     }
11651 
endTransformFeedbackEXT(uint32_t firstCounterBuffer,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & counterBuffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets) const11652     VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT(
11653       uint32_t                                                   firstCounterBuffer,
11654       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     counterBuffers,
11655       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & counterBufferOffsets ) const
11656       VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
11657     {
11658       VULKAN_HPP_ASSERT(
11659         getDispatcher()->vkCmdEndTransformFeedbackEXT &&
11660         "Function <vkCmdEndTransformFeedbackEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11661 
11662 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
11663       VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() );
11664 #  else
11665       if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() )
11666       {
11667         throw LogicError(
11668           VULKAN_HPP_NAMESPACE_STRING
11669           "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" );
11670       }
11671 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
11672 
11673       getDispatcher()->vkCmdEndTransformFeedbackEXT(
11674         static_cast<VkCommandBuffer>( m_commandBuffer ),
11675         firstCounterBuffer,
11676         counterBuffers.size(),
11677         reinterpret_cast<const VkBuffer *>( counterBuffers.data() ),
11678         reinterpret_cast<const VkDeviceSize *>( counterBufferOffsets.data() ) );
11679     }
11680 
beginQueryIndexedEXT(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,VULKAN_HPP_NAMESPACE::QueryControlFlags flags,uint32_t index) const11681     VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool         queryPool,
11682                                                                 uint32_t                                query,
11683                                                                 VULKAN_HPP_NAMESPACE::QueryControlFlags flags,
11684                                                                 uint32_t index ) const VULKAN_HPP_NOEXCEPT
11685     {
11686       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQueryIndexedEXT &&
11687                          "Function <vkCmdBeginQueryIndexedEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11688 
11689       getDispatcher()->vkCmdBeginQueryIndexedEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11690                                                   static_cast<VkQueryPool>( queryPool ),
11691                                                   query,
11692                                                   static_cast<VkQueryControlFlags>( flags ),
11693                                                   index );
11694     }
11695 
endQueryIndexedEXT(VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query,uint32_t index) const11696     VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool,
11697                                                               uint32_t                        query,
11698                                                               uint32_t index ) const VULKAN_HPP_NOEXCEPT
11699     {
11700       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQueryIndexedEXT &&
11701                          "Function <vkCmdEndQueryIndexedEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11702 
11703       getDispatcher()->vkCmdEndQueryIndexedEXT(
11704         static_cast<VkCommandBuffer>( m_commandBuffer ), static_cast<VkQueryPool>( queryPool ), query, index );
11705     }
11706 
11707     VULKAN_HPP_INLINE void
drawIndirectByteCountEXT(uint32_t instanceCount,uint32_t firstInstance,VULKAN_HPP_NAMESPACE::Buffer counterBuffer,VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride) const11708       CommandBuffer::drawIndirectByteCountEXT( uint32_t                         instanceCount,
11709                                                uint32_t                         firstInstance,
11710                                                VULKAN_HPP_NAMESPACE::Buffer     counterBuffer,
11711                                                VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset,
11712                                                uint32_t                         counterOffset,
11713                                                uint32_t                         vertexStride ) const VULKAN_HPP_NOEXCEPT
11714     {
11715       VULKAN_HPP_ASSERT(
11716         getDispatcher()->vkCmdDrawIndirectByteCountEXT &&
11717         "Function <vkCmdDrawIndirectByteCountEXT> needs extension <VK_EXT_transform_feedback> enabled!" );
11718 
11719       getDispatcher()->vkCmdDrawIndirectByteCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
11720                                                       instanceCount,
11721                                                       firstInstance,
11722                                                       static_cast<VkBuffer>( counterBuffer ),
11723                                                       static_cast<VkDeviceSize>( counterBufferOffset ),
11724                                                       counterOffset,
11725                                                       vertexStride );
11726     }
11727 
11728     //=== VK_NVX_binary_import ===
11729 
11730     VULKAN_HPP_INLINE void
cuLaunchKernelNVX(const CuLaunchInfoNVX & launchInfo) const11731       CommandBuffer::cuLaunchKernelNVX( const CuLaunchInfoNVX & launchInfo ) const VULKAN_HPP_NOEXCEPT
11732     {
11733       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCuLaunchKernelNVX &&
11734                          "Function <vkCmdCuLaunchKernelNVX> needs extension <VK_NVX_binary_import> enabled!" );
11735 
11736       getDispatcher()->vkCmdCuLaunchKernelNVX( static_cast<VkCommandBuffer>( m_commandBuffer ),
11737                                                reinterpret_cast<const VkCuLaunchInfoNVX *>( &launchInfo ) );
11738     }
11739 
11740     //=== VK_NVX_image_view_handle ===
11741 
11742     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t
getImageViewHandleNVX(const ImageViewHandleInfoNVX & info) const11743                                            Device::getImageViewHandleNVX( const ImageViewHandleInfoNVX & info ) const VULKAN_HPP_NOEXCEPT
11744     {
11745       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewHandleNVX &&
11746                          "Function <vkGetImageViewHandleNVX> needs extension <VK_NVX_image_view_handle> enabled!" );
11747 
11748       return getDispatcher()->vkGetImageViewHandleNVX( static_cast<VkDevice>( m_device ),
11749                                                        reinterpret_cast<const VkImageViewHandleInfoNVX *>( &info ) );
11750     }
11751 
11752     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX
getAddressNVX() const11753                                            ImageView::getAddressNVX() const
11754     {
11755       VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewAddressNVX &&
11756                          "Function <vkGetImageViewAddressNVX> needs extension <VK_NVX_image_view_handle> enabled!" );
11757 
11758       VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX properties;
11759       VULKAN_HPP_NAMESPACE::Result                        result =
11760         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetImageViewAddressNVX(
11761           static_cast<VkDevice>( m_device ),
11762           static_cast<VkImageView>( m_imageView ),
11763           reinterpret_cast<VkImageViewAddressPropertiesNVX *>( &properties ) ) );
11764       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11765       {
11766         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ImageView::getAddressNVX" );
11767       }
11768       return properties;
11769     }
11770 
11771     //=== VK_AMD_draw_indirect_count ===
11772 
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) const11773     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
11774                                                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
11775                                                                 VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
11776                                                                 VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
11777                                                                 uint32_t                         maxDrawCount,
11778                                                                 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
11779     {
11780       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountAMD &&
11781                          "Function <vkCmdDrawIndirectCountAMD> needs extension <VK_AMD_draw_indirect_count> enabled!" );
11782 
11783       getDispatcher()->vkCmdDrawIndirectCountAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
11784                                                   static_cast<VkBuffer>( buffer ),
11785                                                   static_cast<VkDeviceSize>( offset ),
11786                                                   static_cast<VkBuffer>( countBuffer ),
11787                                                   static_cast<VkDeviceSize>( countBufferOffset ),
11788                                                   maxDrawCount,
11789                                                   stride );
11790     }
11791 
11792     VULKAN_HPP_INLINE void
drawIndexedIndirectCountAMD(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const11793       CommandBuffer::drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer     buffer,
11794                                                   VULKAN_HPP_NAMESPACE::DeviceSize offset,
11795                                                   VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
11796                                                   VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
11797                                                   uint32_t                         maxDrawCount,
11798                                                   uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
11799     {
11800       VULKAN_HPP_ASSERT(
11801         getDispatcher()->vkCmdDrawIndexedIndirectCountAMD &&
11802         "Function <vkCmdDrawIndexedIndirectCountAMD> needs extension <VK_AMD_draw_indirect_count> enabled!" );
11803 
11804       getDispatcher()->vkCmdDrawIndexedIndirectCountAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
11805                                                          static_cast<VkBuffer>( buffer ),
11806                                                          static_cast<VkDeviceSize>( offset ),
11807                                                          static_cast<VkBuffer>( countBuffer ),
11808                                                          static_cast<VkDeviceSize>( countBufferOffset ),
11809                                                          maxDrawCount,
11810                                                          stride );
11811     }
11812 
11813     //=== VK_AMD_shader_info ===
11814 
11815     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t>
getShaderInfoAMD(VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType) const11816                                            Pipeline::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage,
11817                                   VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD   infoType ) const
11818     {
11819       VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderInfoAMD &&
11820                          "Function <vkGetShaderInfoAMD> needs extension <VK_AMD_shader_info> enabled!" );
11821 
11822       std::vector<uint8_t>         info;
11823       size_t                       infoSize;
11824       VULKAN_HPP_NAMESPACE::Result result;
11825       do
11826       {
11827         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11828           getDispatcher()->vkGetShaderInfoAMD( static_cast<VkDevice>( m_device ),
11829                                                static_cast<VkPipeline>( m_pipeline ),
11830                                                static_cast<VkShaderStageFlagBits>( shaderStage ),
11831                                                static_cast<VkShaderInfoTypeAMD>( infoType ),
11832                                                &infoSize,
11833                                                nullptr ) );
11834         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && infoSize )
11835         {
11836           info.resize( infoSize );
11837           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11838             getDispatcher()->vkGetShaderInfoAMD( static_cast<VkDevice>( m_device ),
11839                                                  static_cast<VkPipeline>( m_pipeline ),
11840                                                  static_cast<VkShaderStageFlagBits>( shaderStage ),
11841                                                  static_cast<VkShaderInfoTypeAMD>( infoType ),
11842                                                  &infoSize,
11843                                                  reinterpret_cast<void *>( info.data() ) ) );
11844           VULKAN_HPP_ASSERT( infoSize <= info.size() );
11845         }
11846       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
11847       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( infoSize < info.size() ) )
11848       {
11849         info.resize( infoSize );
11850       }
11851       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11852       {
11853         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getShaderInfoAMD" );
11854       }
11855       return info;
11856     }
11857 
11858     //=== VK_NV_external_memory_capabilities ===
11859 
11860     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) const11861                                            PhysicalDevice::getExternalImageFormatPropertiesNV(
11862         VULKAN_HPP_NAMESPACE::Format                          format,
11863         VULKAN_HPP_NAMESPACE::ImageType                       type,
11864         VULKAN_HPP_NAMESPACE::ImageTiling                     tiling,
11865         VULKAN_HPP_NAMESPACE::ImageUsageFlags                 usage,
11866         VULKAN_HPP_NAMESPACE::ImageCreateFlags                flags,
11867         VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
11868     {
11869       VULKAN_HPP_ASSERT(
11870         getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV &&
11871         "Function <vkGetPhysicalDeviceExternalImageFormatPropertiesNV> needs extension <VK_NV_external_memory_capabilities> enabled!" );
11872 
11873       VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV externalImageFormatProperties;
11874       VULKAN_HPP_NAMESPACE::Result                          result =
11875         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
11876           static_cast<VkPhysicalDevice>( m_physicalDevice ),
11877           static_cast<VkFormat>( format ),
11878           static_cast<VkImageType>( type ),
11879           static_cast<VkImageTiling>( tiling ),
11880           static_cast<VkImageUsageFlags>( usage ),
11881           static_cast<VkImageCreateFlags>( flags ),
11882           static_cast<VkExternalMemoryHandleTypeFlagsNV>( externalHandleType ),
11883           reinterpret_cast<VkExternalImageFormatPropertiesNV *>( &externalImageFormatProperties ) ) );
11884       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11885       {
11886         throwResultException( result,
11887                               VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" );
11888       }
11889       return externalImageFormatProperties;
11890     }
11891 
11892 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
11893     //=== VK_NV_external_memory_win32 ===
11894 
11895     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE
getMemoryWin32HandleNV(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType) const11896                                            DeviceMemory::getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType ) const
11897     {
11898       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleNV &&
11899                          "Function <vkGetMemoryWin32HandleNV> needs extension <VK_NV_external_memory_win32> enabled!" );
11900 
11901       HANDLE                       handle;
11902       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
11903         getDispatcher()->vkGetMemoryWin32HandleNV( static_cast<VkDevice>( m_device ),
11904                                                    static_cast<VkDeviceMemory>( m_deviceMemory ),
11905                                                    static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ),
11906                                                    &handle ) );
11907       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
11908       {
11909         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeviceMemory::getMemoryWin32HandleNV" );
11910       }
11911       return handle;
11912     }
11913 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
11914 
11915     //=== VK_KHR_get_physical_device_properties2 ===
11916 
11917     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2
getFeatures2KHR() const11918                                            PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT
11919     {
11920       VULKAN_HPP_ASSERT(
11921         getDispatcher()->vkGetPhysicalDeviceFeatures2KHR &&
11922         "Function <vkGetPhysicalDeviceFeatures2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
11923 
11924       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features;
11925       getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11926                                                         reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
11927       return features;
11928     }
11929 
11930     template <typename X, typename Y, typename... Z>
11931     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getFeatures2KHR() const11932                                            PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT
11933     {
11934       VULKAN_HPP_ASSERT(
11935         getDispatcher()->vkGetPhysicalDeviceFeatures2KHR &&
11936         "Function <vkGetPhysicalDeviceFeatures2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
11937 
11938       StructureChain<X, Y, Z...>                      structureChain;
11939       VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features =
11940         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2>();
11941       getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
11942                                                         reinterpret_cast<VkPhysicalDeviceFeatures2 *>( &features ) );
11943       return structureChain;
11944     }
11945 
11946     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2
getProperties2KHR() const11947                                            PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT
11948     {
11949       VULKAN_HPP_ASSERT(
11950         getDispatcher()->vkGetPhysicalDeviceProperties2KHR &&
11951         "Function <vkGetPhysicalDeviceProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
11952 
11953       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties;
11954       getDispatcher()->vkGetPhysicalDeviceProperties2KHR(
11955         static_cast<VkPhysicalDevice>( m_physicalDevice ),
11956         reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
11957       return properties;
11958     }
11959 
11960     template <typename X, typename Y, typename... Z>
11961     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getProperties2KHR() const11962                                            PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT
11963     {
11964       VULKAN_HPP_ASSERT(
11965         getDispatcher()->vkGetPhysicalDeviceProperties2KHR &&
11966         "Function <vkGetPhysicalDeviceProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
11967 
11968       StructureChain<X, Y, Z...>                        structureChain;
11969       VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties =
11970         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2>();
11971       getDispatcher()->vkGetPhysicalDeviceProperties2KHR(
11972         static_cast<VkPhysicalDevice>( m_physicalDevice ),
11973         reinterpret_cast<VkPhysicalDeviceProperties2 *>( &properties ) );
11974       return structureChain;
11975     }
11976 
11977     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2
getFormatProperties2KHR(VULKAN_HPP_NAMESPACE::Format format) const11978                                            PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
11979     {
11980       VULKAN_HPP_ASSERT(
11981         getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR &&
11982         "Function <vkGetPhysicalDeviceFormatProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
11983 
11984       VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties;
11985       getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR(
11986         static_cast<VkPhysicalDevice>( m_physicalDevice ),
11987         static_cast<VkFormat>( format ),
11988         reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
11989       return formatProperties;
11990     }
11991 
11992     template <typename X, typename Y, typename... Z>
11993     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getFormatProperties2KHR(VULKAN_HPP_NAMESPACE::Format format) const11994                                            PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format ) const VULKAN_HPP_NOEXCEPT
11995     {
11996       VULKAN_HPP_ASSERT(
11997         getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR &&
11998         "Function <vkGetPhysicalDeviceFormatProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
11999 
12000       StructureChain<X, Y, Z...>                structureChain;
12001       VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties =
12002         structureChain.template get<VULKAN_HPP_NAMESPACE::FormatProperties2>();
12003       getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR(
12004         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12005         static_cast<VkFormat>( format ),
12006         reinterpret_cast<VkFormatProperties2 *>( &formatProperties ) );
12007       return structureChain;
12008     }
12009 
12010     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageFormatProperties2
getImageFormatProperties2KHR(const PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const12011                                            PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
12012     {
12013       VULKAN_HPP_ASSERT(
12014         getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR &&
12015         "Function <vkGetPhysicalDeviceImageFormatProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12016 
12017       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties;
12018       VULKAN_HPP_NAMESPACE::Result                 result =
12019         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR(
12020           static_cast<VkPhysicalDevice>( m_physicalDevice ),
12021           reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
12022           reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
12023       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12024       {
12025         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" );
12026       }
12027       return imageFormatProperties;
12028     }
12029 
12030     template <typename X, typename Y, typename... Z>
12031     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
getImageFormatProperties2KHR(const PhysicalDeviceImageFormatInfo2 & imageFormatInfo) const12032                          PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo ) const
12033     {
12034       StructureChain<X, Y, Z...>                     structureChain;
12035       VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties =
12036         structureChain.template get<VULKAN_HPP_NAMESPACE::ImageFormatProperties2>();
12037       VULKAN_HPP_NAMESPACE::Result result =
12038         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR(
12039           static_cast<VkPhysicalDevice>( m_physicalDevice ),
12040           reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2 *>( &imageFormatInfo ),
12041           reinterpret_cast<VkImageFormatProperties2 *>( &imageFormatProperties ) ) );
12042       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12043       {
12044         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" );
12045       }
12046       return structureChain;
12047     }
12048 
12049     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>
getQueueFamilyProperties2KHR() const12050                                            PhysicalDevice::getQueueFamilyProperties2KHR() const VULKAN_HPP_NOEXCEPT
12051     {
12052       VULKAN_HPP_ASSERT(
12053         getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR &&
12054         "Function <vkGetPhysicalDeviceQueueFamilyProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12055 
12056       uint32_t queueFamilyPropertyCount;
12057       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12058         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
12059       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties( queueFamilyPropertyCount );
12060       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12061         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12062         &queueFamilyPropertyCount,
12063         reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
12064       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
12065       return queueFamilyProperties;
12066     }
12067 
12068     template <typename StructureChain>
12069     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<StructureChain>
getQueueFamilyProperties2KHR() const12070                                            PhysicalDevice::getQueueFamilyProperties2KHR() const
12071     {
12072       VULKAN_HPP_ASSERT(
12073         getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR &&
12074         "Function <vkGetPhysicalDeviceQueueFamilyProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12075 
12076       uint32_t queueFamilyPropertyCount;
12077       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12078         static_cast<VkPhysicalDevice>( m_physicalDevice ), &queueFamilyPropertyCount, nullptr );
12079       std::vector<StructureChain>                               returnVector( queueFamilyPropertyCount );
12080       std::vector<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2> queueFamilyProperties( queueFamilyPropertyCount );
12081       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
12082       {
12083         queueFamilyProperties[i].pNext =
12084           returnVector[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>().pNext;
12085       }
12086       getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR(
12087         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12088         &queueFamilyPropertyCount,
12089         reinterpret_cast<VkQueueFamilyProperties2 *>( queueFamilyProperties.data() ) );
12090       VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() );
12091       for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ )
12092       {
12093         returnVector[i].template get<VULKAN_HPP_NAMESPACE::QueueFamilyProperties2>() = queueFamilyProperties[i];
12094       }
12095       return returnVector;
12096     }
12097 
12098     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2
getMemoryProperties2KHR() const12099                                            PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT
12100     {
12101       VULKAN_HPP_ASSERT(
12102         getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR &&
12103         "Function <vkGetPhysicalDeviceMemoryProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12104 
12105       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties;
12106       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR(
12107         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12108         reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
12109       return memoryProperties;
12110     }
12111 
12112     template <typename X, typename Y, typename... Z>
12113     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getMemoryProperties2KHR() const12114                                            PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT
12115     {
12116       VULKAN_HPP_ASSERT(
12117         getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR &&
12118         "Function <vkGetPhysicalDeviceMemoryProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12119 
12120       StructureChain<X, Y, Z...>                              structureChain;
12121       VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties =
12122         structureChain.template get<VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2>();
12123       getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR(
12124         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12125         reinterpret_cast<VkPhysicalDeviceMemoryProperties2 *>( &memoryProperties ) );
12126       return structureChain;
12127     }
12128 
12129     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2>
getSparseImageFormatProperties2KHR(const PhysicalDeviceSparseImageFormatInfo2 & formatInfo) const12130                                            PhysicalDevice::getSparseImageFormatProperties2KHR(
12131         const PhysicalDeviceSparseImageFormatInfo2 & formatInfo ) const VULKAN_HPP_NOEXCEPT
12132     {
12133       VULKAN_HPP_ASSERT(
12134         getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR &&
12135         "Function <vkGetPhysicalDeviceSparseImageFormatProperties2KHR> needs extension <VK_KHR_get_physical_device_properties2> enabled!" );
12136 
12137       uint32_t propertyCount;
12138       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12139         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12140         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
12141         &propertyCount,
12142         nullptr );
12143       std::vector<VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2> properties( propertyCount );
12144       getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
12145         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12146         reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2 *>( &formatInfo ),
12147         &propertyCount,
12148         reinterpret_cast<VkSparseImageFormatProperties2 *>( properties.data() ) );
12149       VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
12150       return properties;
12151     }
12152 
12153     //=== VK_KHR_device_group ===
12154 
12155     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags
getGroupPeerMemoryFeaturesKHR(uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex) const12156                                            Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex,
12157                                              uint32_t localDeviceIndex,
12158                                              uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT
12159     {
12160       VULKAN_HPP_ASSERT(
12161         getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR &&
12162         "Function <vkGetDeviceGroupPeerMemoryFeaturesKHR> needs extension <VK_KHR_device_group> enabled!" );
12163 
12164       VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures;
12165       getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR(
12166         static_cast<VkDevice>( m_device ),
12167         heapIndex,
12168         localDeviceIndex,
12169         remoteDeviceIndex,
12170         reinterpret_cast<VkPeerMemoryFeatureFlags *>( &peerMemoryFeatures ) );
12171       return peerMemoryFeatures;
12172     }
12173 
setDeviceMaskKHR(uint32_t deviceMask) const12174     VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT
12175     {
12176       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMaskKHR &&
12177                          "Function <vkCmdSetDeviceMaskKHR> needs extension <VK_KHR_device_group> enabled!" );
12178 
12179       getDispatcher()->vkCmdSetDeviceMaskKHR( static_cast<VkCommandBuffer>( m_commandBuffer ), deviceMask );
12180     }
12181 
dispatchBaseKHR(uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ) const12182     VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX,
12183                                                            uint32_t baseGroupY,
12184                                                            uint32_t baseGroupZ,
12185                                                            uint32_t groupCountX,
12186                                                            uint32_t groupCountY,
12187                                                            uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT
12188     {
12189       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBaseKHR &&
12190                          "Function <vkCmdDispatchBaseKHR> needs extension <VK_KHR_device_group> enabled!" );
12191 
12192       getDispatcher()->vkCmdDispatchBaseKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
12193                                              baseGroupX,
12194                                              baseGroupY,
12195                                              baseGroupZ,
12196                                              groupCountX,
12197                                              groupCountY,
12198                                              groupCountZ );
12199     }
12200 
12201     //=== VK_KHR_maintenance1 ===
12202 
12203     VULKAN_HPP_INLINE void
trimKHR(VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags) const12204       CommandPool::trimKHR( VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT
12205     {
12206       VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPoolKHR &&
12207                          "Function <vkTrimCommandPoolKHR> needs extension <VK_KHR_maintenance1> enabled!" );
12208 
12209       getDispatcher()->vkTrimCommandPoolKHR( static_cast<VkDevice>( m_device ),
12210                                              static_cast<VkCommandPool>( m_commandPool ),
12211                                              static_cast<VkCommandPoolTrimFlags>( flags ) );
12212     }
12213 
12214     //=== VK_KHR_device_group_creation ===
12215 
12216     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties>
enumeratePhysicalDeviceGroupsKHR() const12217                                            Instance::enumeratePhysicalDeviceGroupsKHR() const
12218     {
12219       VULKAN_HPP_ASSERT(
12220         getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR &&
12221         "Function <vkEnumeratePhysicalDeviceGroupsKHR> needs extension <VK_KHR_device_group_creation> enabled!" );
12222 
12223       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties> physicalDeviceGroupProperties;
12224       uint32_t                                                         physicalDeviceGroupCount;
12225       VULKAN_HPP_NAMESPACE::Result                                     result;
12226       do
12227       {
12228         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR(
12229           static_cast<VkInstance>( m_instance ), &physicalDeviceGroupCount, nullptr ) );
12230         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && physicalDeviceGroupCount )
12231         {
12232           physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
12233           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR(
12234             static_cast<VkInstance>( m_instance ),
12235             &physicalDeviceGroupCount,
12236             reinterpret_cast<VkPhysicalDeviceGroupProperties *>( physicalDeviceGroupProperties.data() ) ) );
12237           VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
12238         }
12239       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12240       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
12241            ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) )
12242       {
12243         physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
12244       }
12245       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12246       {
12247         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" );
12248       }
12249       return physicalDeviceGroupProperties;
12250     }
12251 
12252     //=== VK_KHR_external_memory_capabilities ===
12253 
12254     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties
getExternalBufferPropertiesKHR(const PhysicalDeviceExternalBufferInfo & externalBufferInfo) const12255                                            PhysicalDevice::getExternalBufferPropertiesKHR(
12256         const PhysicalDeviceExternalBufferInfo & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT
12257     {
12258       VULKAN_HPP_ASSERT(
12259         getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR &&
12260         "Function <vkGetPhysicalDeviceExternalBufferPropertiesKHR> needs extension <VK_KHR_external_memory_capabilities> enabled!" );
12261 
12262       VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties;
12263       getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR(
12264         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12265         reinterpret_cast<const VkPhysicalDeviceExternalBufferInfo *>( &externalBufferInfo ),
12266         reinterpret_cast<VkExternalBufferProperties *>( &externalBufferProperties ) );
12267       return externalBufferProperties;
12268     }
12269 
12270 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
12271     //=== VK_KHR_external_memory_win32 ===
12272 
12273     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE
getMemoryWin32HandleKHR(const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo) const12274                                            Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
12275     {
12276       VULKAN_HPP_ASSERT(
12277         getDispatcher()->vkGetMemoryWin32HandleKHR &&
12278         "Function <vkGetMemoryWin32HandleKHR> needs extension <VK_KHR_external_memory_win32> enabled!" );
12279 
12280       HANDLE                       handle;
12281       VULKAN_HPP_NAMESPACE::Result result =
12282         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryWin32HandleKHR(
12283           static_cast<VkDevice>( m_device ),
12284           reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR *>( &getWin32HandleInfo ),
12285           &handle ) );
12286       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12287       {
12288         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" );
12289       }
12290       return handle;
12291     }
12292 
12293     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR
getMemoryWin32HandlePropertiesKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,HANDLE handle) const12294                                            Device::getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
12295                                                  HANDLE                                                 handle ) const
12296     {
12297       VULKAN_HPP_ASSERT(
12298         getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR &&
12299         "Function <vkGetMemoryWin32HandlePropertiesKHR> needs extension <VK_KHR_external_memory_win32> enabled!" );
12300 
12301       VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
12302       VULKAN_HPP_NAMESPACE::Result                         result =
12303         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR(
12304           static_cast<VkDevice>( m_device ),
12305           static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
12306           handle,
12307           reinterpret_cast<VkMemoryWin32HandlePropertiesKHR *>( &memoryWin32HandleProperties ) ) );
12308       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12309       {
12310         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" );
12311       }
12312       return memoryWin32HandleProperties;
12313     }
12314 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
12315 
12316     //=== VK_KHR_external_memory_fd ===
12317 
getMemoryFdKHR(const MemoryGetFdInfoKHR & getFdInfo) const12318     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
12319     {
12320       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdKHR &&
12321                          "Function <vkGetMemoryFdKHR> needs extension <VK_KHR_external_memory_fd> enabled!" );
12322 
12323       int                          fd;
12324       VULKAN_HPP_NAMESPACE::Result result =
12325         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryFdKHR(
12326           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkMemoryGetFdInfoKHR *>( &getFdInfo ), &fd ) );
12327       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12328       {
12329         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdKHR" );
12330       }
12331       return fd;
12332     }
12333 
12334     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR
getMemoryFdPropertiesKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,int fd) const12335                                            Device::getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
12336                                         int                                                    fd ) const
12337     {
12338       VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdPropertiesKHR &&
12339                          "Function <vkGetMemoryFdPropertiesKHR> needs extension <VK_KHR_external_memory_fd> enabled!" );
12340 
12341       VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR memoryFdProperties;
12342       VULKAN_HPP_NAMESPACE::Result                result =
12343         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryFdPropertiesKHR(
12344           static_cast<VkDevice>( m_device ),
12345           static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
12346           fd,
12347           reinterpret_cast<VkMemoryFdPropertiesKHR *>( &memoryFdProperties ) ) );
12348       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12349       {
12350         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" );
12351       }
12352       return memoryFdProperties;
12353     }
12354 
12355     //=== VK_KHR_external_semaphore_capabilities ===
12356 
12357     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties
getExternalSemaphorePropertiesKHR(const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo) const12358                                            PhysicalDevice::getExternalSemaphorePropertiesKHR(
12359         const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT
12360     {
12361       VULKAN_HPP_ASSERT(
12362         getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR &&
12363         "Function <vkGetPhysicalDeviceExternalSemaphorePropertiesKHR> needs extension <VK_KHR_external_semaphore_capabilities> enabled!" );
12364 
12365       VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties;
12366       getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
12367         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12368         reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfo *>( &externalSemaphoreInfo ),
12369         reinterpret_cast<VkExternalSemaphoreProperties *>( &externalSemaphoreProperties ) );
12370       return externalSemaphoreProperties;
12371     }
12372 
12373 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
12374     //=== VK_KHR_external_semaphore_win32 ===
12375 
importSemaphoreWin32HandleKHR(const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo) const12376     VULKAN_HPP_INLINE void Device::importSemaphoreWin32HandleKHR(
12377       const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
12378     {
12379       VULKAN_HPP_ASSERT(
12380         getDispatcher()->vkImportSemaphoreWin32HandleKHR &&
12381         "Function <vkImportSemaphoreWin32HandleKHR> needs extension <VK_KHR_external_semaphore_win32> enabled!" );
12382 
12383       VULKAN_HPP_NAMESPACE::Result result =
12384         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreWin32HandleKHR(
12385           static_cast<VkDevice>( m_device ),
12386           reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR *>( &importSemaphoreWin32HandleInfo ) ) );
12387       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12388       {
12389         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" );
12390       }
12391     }
12392 
12393     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE
getSemaphoreWin32HandleKHR(const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo) const12394                                            Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
12395     {
12396       VULKAN_HPP_ASSERT(
12397         getDispatcher()->vkGetSemaphoreWin32HandleKHR &&
12398         "Function <vkGetSemaphoreWin32HandleKHR> needs extension <VK_KHR_external_semaphore_win32> enabled!" );
12399 
12400       HANDLE                       handle;
12401       VULKAN_HPP_NAMESPACE::Result result =
12402         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreWin32HandleKHR(
12403           static_cast<VkDevice>( m_device ),
12404           reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR *>( &getWin32HandleInfo ),
12405           &handle ) );
12406       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12407       {
12408         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" );
12409       }
12410       return handle;
12411     }
12412 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
12413 
12414     //=== VK_KHR_external_semaphore_fd ===
12415 
importSemaphoreFdKHR(const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo) const12416     VULKAN_HPP_INLINE void Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
12417     {
12418       VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreFdKHR &&
12419                          "Function <vkImportSemaphoreFdKHR> needs extension <VK_KHR_external_semaphore_fd> enabled!" );
12420 
12421       VULKAN_HPP_NAMESPACE::Result result =
12422         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreFdKHR(
12423           static_cast<VkDevice>( m_device ),
12424           reinterpret_cast<const VkImportSemaphoreFdInfoKHR *>( &importSemaphoreFdInfo ) ) );
12425       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12426       {
12427         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" );
12428       }
12429     }
12430 
12431     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int
getSemaphoreFdKHR(const SemaphoreGetFdInfoKHR & getFdInfo) const12432                          Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
12433     {
12434       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreFdKHR &&
12435                          "Function <vkGetSemaphoreFdKHR> needs extension <VK_KHR_external_semaphore_fd> enabled!" );
12436 
12437       int                          fd;
12438       VULKAN_HPP_NAMESPACE::Result result =
12439         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreFdKHR(
12440           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreGetFdInfoKHR *>( &getFdInfo ), &fd ) );
12441       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12442       {
12443         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" );
12444       }
12445       return fd;
12446     }
12447 
12448     //=== VK_KHR_push_descriptor ===
12449 
pushDescriptorSetKHR(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t set,ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites) const12450     VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR(
12451       VULKAN_HPP_NAMESPACE::PipelineBindPoint                            pipelineBindPoint,
12452       VULKAN_HPP_NAMESPACE::PipelineLayout                               layout,
12453       uint32_t                                                           set,
12454       ArrayProxy<const VULKAN_HPP_NAMESPACE::WriteDescriptorSet> const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT
12455     {
12456       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetKHR &&
12457                          "Function <vkCmdPushDescriptorSetKHR> needs extension <VK_KHR_push_descriptor> enabled!" );
12458 
12459       getDispatcher()->vkCmdPushDescriptorSetKHR(
12460         static_cast<VkCommandBuffer>( m_commandBuffer ),
12461         static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
12462         static_cast<VkPipelineLayout>( layout ),
12463         set,
12464         descriptorWrites.size(),
12465         reinterpret_cast<const VkWriteDescriptorSet *>( descriptorWrites.data() ) );
12466     }
12467 
pushDescriptorSetWithTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,VULKAN_HPP_NAMESPACE::PipelineLayout layout,uint32_t set,const void * pData) const12468     VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR(
12469       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
12470       VULKAN_HPP_NAMESPACE::PipelineLayout           layout,
12471       uint32_t                                       set,
12472       const void *                                   pData ) const VULKAN_HPP_NOEXCEPT
12473     {
12474       VULKAN_HPP_ASSERT(
12475         getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR &&
12476         "Function <vkCmdPushDescriptorSetWithTemplateKHR> needs extension <VK_KHR_push_descriptor> enabled!" );
12477 
12478       getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR(
12479         static_cast<VkCommandBuffer>( m_commandBuffer ),
12480         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
12481         static_cast<VkPipelineLayout>( layout ),
12482         set,
12483         pData );
12484     }
12485 
12486     //=== VK_EXT_conditional_rendering ===
12487 
beginConditionalRenderingEXT(const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin) const12488     VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT(
12489       const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT
12490     {
12491       VULKAN_HPP_ASSERT(
12492         getDispatcher()->vkCmdBeginConditionalRenderingEXT &&
12493         "Function <vkCmdBeginConditionalRenderingEXT> needs extension <VK_EXT_conditional_rendering> enabled!" );
12494 
12495       getDispatcher()->vkCmdBeginConditionalRenderingEXT(
12496         static_cast<VkCommandBuffer>( m_commandBuffer ),
12497         reinterpret_cast<const VkConditionalRenderingBeginInfoEXT *>( &conditionalRenderingBegin ) );
12498     }
12499 
endConditionalRenderingEXT() const12500     VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT
12501     {
12502       VULKAN_HPP_ASSERT(
12503         getDispatcher()->vkCmdEndConditionalRenderingEXT &&
12504         "Function <vkCmdEndConditionalRenderingEXT> needs extension <VK_EXT_conditional_rendering> enabled!" );
12505 
12506       getDispatcher()->vkCmdEndConditionalRenderingEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
12507     }
12508 
12509     //=== VK_KHR_descriptor_update_template ===
12510 
destroyDescriptorUpdateTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,Optional<const AllocationCallbacks> allocator) const12511     VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR(
12512       VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
12513       Optional<const AllocationCallbacks>            allocator ) const VULKAN_HPP_NOEXCEPT
12514     {
12515       VULKAN_HPP_ASSERT(
12516         getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR &&
12517         "Function <vkDestroyDescriptorUpdateTemplateKHR> needs extension <VK_KHR_descriptor_update_template> enabled!" );
12518 
12519       getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR(
12520         static_cast<VkDevice>( m_device ),
12521         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
12522         reinterpret_cast<const VkAllocationCallbacks *>(
12523           static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) );
12524     }
12525 
12526     VULKAN_HPP_INLINE void
updateWithTemplateKHR(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData) const12527       DescriptorSet::updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate,
12528                                             const void * pData ) const VULKAN_HPP_NOEXCEPT
12529     {
12530       VULKAN_HPP_ASSERT(
12531         getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR &&
12532         "Function <vkUpdateDescriptorSetWithTemplateKHR> needs extension <VK_KHR_descriptor_update_template> enabled!" );
12533 
12534       getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR(
12535         static_cast<VkDevice>( m_device ),
12536         static_cast<VkDescriptorSet>( m_descriptorSet ),
12537         static_cast<VkDescriptorUpdateTemplate>( descriptorUpdateTemplate ),
12538         pData );
12539     }
12540 
12541     //=== VK_NV_clip_space_w_scaling ===
12542 
setViewportWScalingNV(uint32_t firstViewport,ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings) const12543     VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV(
12544       uint32_t                                                           firstViewport,
12545       ArrayProxy<const VULKAN_HPP_NAMESPACE::ViewportWScalingNV> const & viewportWScalings ) const VULKAN_HPP_NOEXCEPT
12546     {
12547       VULKAN_HPP_ASSERT(
12548         getDispatcher()->vkCmdSetViewportWScalingNV &&
12549         "Function <vkCmdSetViewportWScalingNV> needs extension <VK_NV_clip_space_w_scaling> enabled!" );
12550 
12551       getDispatcher()->vkCmdSetViewportWScalingNV(
12552         static_cast<VkCommandBuffer>( m_commandBuffer ),
12553         firstViewport,
12554         viewportWScalings.size(),
12555         reinterpret_cast<const VkViewportWScalingNV *>( viewportWScalings.data() ) );
12556     }
12557 
12558 #  if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT )
12559     //=== VK_EXT_acquire_xlib_display ===
12560 
acquireXlibDisplayEXT(Display & dpy,VULKAN_HPP_NAMESPACE::DisplayKHR display) const12561     VULKAN_HPP_INLINE void PhysicalDevice::acquireXlibDisplayEXT( Display &                        dpy,
12562                                                                   VULKAN_HPP_NAMESPACE::DisplayKHR display ) const
12563     {
12564       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireXlibDisplayEXT &&
12565                          "Function <vkAcquireXlibDisplayEXT> needs extension <VK_EXT_acquire_xlib_display> enabled!" );
12566 
12567       VULKAN_HPP_NAMESPACE::Result result =
12568         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireXlibDisplayEXT(
12569           static_cast<VkPhysicalDevice>( m_physicalDevice ), &dpy, static_cast<VkDisplayKHR>( display ) ) );
12570       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12571       {
12572         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" );
12573       }
12574     }
12575 #  endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
12576 
12577     //=== VK_EXT_display_surface_counter ===
12578 
12579     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT
getSurfaceCapabilities2EXT(VULKAN_HPP_NAMESPACE::SurfaceKHR surface) const12580                                            PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const
12581     {
12582       VULKAN_HPP_ASSERT(
12583         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT &&
12584         "Function <vkGetPhysicalDeviceSurfaceCapabilities2EXT> needs extension <VK_EXT_display_surface_counter> enabled!" );
12585 
12586       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT surfaceCapabilities;
12587       VULKAN_HPP_NAMESPACE::Result                  result =
12588         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT(
12589           static_cast<VkPhysicalDevice>( m_physicalDevice ),
12590           static_cast<VkSurfaceKHR>( surface ),
12591           reinterpret_cast<VkSurfaceCapabilities2EXT *>( &surfaceCapabilities ) ) );
12592       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12593       {
12594         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" );
12595       }
12596       return surfaceCapabilities;
12597     }
12598 
12599     //=== VK_EXT_display_control ===
12600 
displayPowerControlEXT(VULKAN_HPP_NAMESPACE::DisplayKHR display,const DisplayPowerInfoEXT & displayPowerInfo) const12601     VULKAN_HPP_INLINE void Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display,
12602                                                            const DisplayPowerInfoEXT &      displayPowerInfo ) const
12603     {
12604       VULKAN_HPP_ASSERT( getDispatcher()->vkDisplayPowerControlEXT &&
12605                          "Function <vkDisplayPowerControlEXT> needs extension <VK_EXT_display_control> enabled!" );
12606 
12607       VULKAN_HPP_NAMESPACE::Result result =
12608         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDisplayPowerControlEXT(
12609           static_cast<VkDevice>( m_device ),
12610           static_cast<VkDisplayKHR>( display ),
12611           reinterpret_cast<const VkDisplayPowerInfoEXT *>( &displayPowerInfo ) ) );
12612       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12613       {
12614         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::displayPowerControlEXT" );
12615       }
12616     }
12617 
12618     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getCounterEXT(VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter) const12619                                            SwapchainKHR::getCounterEXT( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter ) const
12620     {
12621       VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainCounterEXT &&
12622                          "Function <vkGetSwapchainCounterEXT> needs extension <VK_EXT_display_control> enabled!" );
12623 
12624       uint64_t                     counterValue;
12625       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12626         getDispatcher()->vkGetSwapchainCounterEXT( static_cast<VkDevice>( m_device ),
12627                                                    static_cast<VkSwapchainKHR>( m_swapchainKHR ),
12628                                                    static_cast<VkSurfaceCounterFlagBitsEXT>( counter ),
12629                                                    &counterValue ) );
12630       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12631       {
12632         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getCounterEXT" );
12633       }
12634       return counterValue;
12635     }
12636 
12637     //=== VK_GOOGLE_display_timing ===
12638 
12639     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE
getRefreshCycleDurationGOOGLE() const12640                                            SwapchainKHR::getRefreshCycleDurationGOOGLE() const
12641     {
12642       VULKAN_HPP_ASSERT(
12643         getDispatcher()->vkGetRefreshCycleDurationGOOGLE &&
12644         "Function <vkGetRefreshCycleDurationGOOGLE> needs extension <VK_GOOGLE_display_timing> enabled!" );
12645 
12646       VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE displayTimingProperties;
12647       VULKAN_HPP_NAMESPACE::Result                     result =
12648         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetRefreshCycleDurationGOOGLE(
12649           static_cast<VkDevice>( m_device ),
12650           static_cast<VkSwapchainKHR>( m_swapchainKHR ),
12651           reinterpret_cast<VkRefreshCycleDurationGOOGLE *>( &displayTimingProperties ) ) );
12652       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12653       {
12654         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getRefreshCycleDurationGOOGLE" );
12655       }
12656       return displayTimingProperties;
12657     }
12658 
12659     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE>
getPastPresentationTimingGOOGLE() const12660                                            SwapchainKHR::getPastPresentationTimingGOOGLE() const
12661     {
12662       VULKAN_HPP_ASSERT(
12663         getDispatcher()->vkGetPastPresentationTimingGOOGLE &&
12664         "Function <vkGetPastPresentationTimingGOOGLE> needs extension <VK_GOOGLE_display_timing> enabled!" );
12665 
12666       std::vector<VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE> presentationTimings;
12667       uint32_t                                                        presentationTimingCount;
12668       VULKAN_HPP_NAMESPACE::Result                                    result;
12669       do
12670       {
12671         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12672           getDispatcher()->vkGetPastPresentationTimingGOOGLE( static_cast<VkDevice>( m_device ),
12673                                                               static_cast<VkSwapchainKHR>( m_swapchainKHR ),
12674                                                               &presentationTimingCount,
12675                                                               nullptr ) );
12676         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentationTimingCount )
12677         {
12678           presentationTimings.resize( presentationTimingCount );
12679           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPastPresentationTimingGOOGLE(
12680             static_cast<VkDevice>( m_device ),
12681             static_cast<VkSwapchainKHR>( m_swapchainKHR ),
12682             &presentationTimingCount,
12683             reinterpret_cast<VkPastPresentationTimingGOOGLE *>( presentationTimings.data() ) ) );
12684           VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() );
12685         }
12686       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12687       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
12688            ( presentationTimingCount < presentationTimings.size() ) )
12689       {
12690         presentationTimings.resize( presentationTimingCount );
12691       }
12692       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12693       {
12694         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getPastPresentationTimingGOOGLE" );
12695       }
12696       return presentationTimings;
12697     }
12698 
12699     //=== VK_EXT_discard_rectangles ===
12700 
setDiscardRectangleEXT(uint32_t firstDiscardRectangle,ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles) const12701     VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT(
12702       uint32_t                                               firstDiscardRectangle,
12703       ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & discardRectangles ) const VULKAN_HPP_NOEXCEPT
12704     {
12705       VULKAN_HPP_ASSERT(
12706         getDispatcher()->vkCmdSetDiscardRectangleEXT &&
12707         "Function <vkCmdSetDiscardRectangleEXT> needs extension <VK_EXT_discard_rectangles> enabled!" );
12708 
12709       getDispatcher()->vkCmdSetDiscardRectangleEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
12710                                                     firstDiscardRectangle,
12711                                                     discardRectangles.size(),
12712                                                     reinterpret_cast<const VkRect2D *>( discardRectangles.data() ) );
12713     }
12714 
12715     //=== VK_EXT_hdr_metadata ===
12716 
12717     VULKAN_HPP_INLINE void
setHdrMetadataEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const & swapchains,ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata) const12718       Device::setHdrMetadataEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::SwapchainKHR> const &   swapchains,
12719                                  ArrayProxy<const VULKAN_HPP_NAMESPACE::HdrMetadataEXT> const & metadata ) const
12720       VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
12721     {
12722       VULKAN_HPP_ASSERT( getDispatcher()->vkSetHdrMetadataEXT &&
12723                          "Function <vkSetHdrMetadataEXT> needs extension <VK_EXT_hdr_metadata> enabled!" );
12724 
12725 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
12726       VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() );
12727 #  else
12728       if ( swapchains.size() != metadata.size() )
12729       {
12730         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
12731                           "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
12732       }
12733 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
12734 
12735       getDispatcher()->vkSetHdrMetadataEXT( static_cast<VkDevice>( m_device ),
12736                                             swapchains.size(),
12737                                             reinterpret_cast<const VkSwapchainKHR *>( swapchains.data() ),
12738                                             reinterpret_cast<const VkHdrMetadataEXT *>( metadata.data() ) );
12739     }
12740 
12741     //=== VK_KHR_create_renderpass2 ===
12742 
12743     VULKAN_HPP_INLINE void
beginRenderPass2KHR(const RenderPassBeginInfo & renderPassBegin,const SubpassBeginInfo & subpassBeginInfo) const12744       CommandBuffer::beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin,
12745                                           const SubpassBeginInfo &    subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT
12746     {
12747       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2KHR &&
12748                          "Function <vkCmdBeginRenderPass2KHR> needs extension <VK_KHR_create_renderpass2> enabled!" );
12749 
12750       getDispatcher()->vkCmdBeginRenderPass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
12751                                                  reinterpret_cast<const VkRenderPassBeginInfo *>( &renderPassBegin ),
12752                                                  reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ) );
12753     }
12754 
12755     VULKAN_HPP_INLINE void
nextSubpass2KHR(const SubpassBeginInfo & subpassBeginInfo,const SubpassEndInfo & subpassEndInfo) const12756       CommandBuffer::nextSubpass2KHR( const SubpassBeginInfo & subpassBeginInfo,
12757                                       const SubpassEndInfo &   subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
12758     {
12759       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2KHR &&
12760                          "Function <vkCmdNextSubpass2KHR> needs extension <VK_KHR_create_renderpass2> enabled!" );
12761 
12762       getDispatcher()->vkCmdNextSubpass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
12763                                              reinterpret_cast<const VkSubpassBeginInfo *>( &subpassBeginInfo ),
12764                                              reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
12765     }
12766 
12767     VULKAN_HPP_INLINE void
endRenderPass2KHR(const SubpassEndInfo & subpassEndInfo) const12768       CommandBuffer::endRenderPass2KHR( const SubpassEndInfo & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT
12769     {
12770       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2KHR &&
12771                          "Function <vkCmdEndRenderPass2KHR> needs extension <VK_KHR_create_renderpass2> enabled!" );
12772 
12773       getDispatcher()->vkCmdEndRenderPass2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
12774                                                reinterpret_cast<const VkSubpassEndInfo *>( &subpassEndInfo ) );
12775     }
12776 
12777     //=== VK_KHR_shared_presentable_image ===
12778 
getStatus() const12779     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result SwapchainKHR::getStatus() const
12780     {
12781       VULKAN_HPP_ASSERT(
12782         getDispatcher()->vkGetSwapchainStatusKHR &&
12783         "Function <vkGetSwapchainStatusKHR> needs extension <VK_KHR_shared_presentable_image> enabled!" );
12784 
12785       VULKAN_HPP_NAMESPACE::Result result =
12786         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSwapchainStatusKHR(
12787           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
12788       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
12789            ( result != VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR ) )
12790       {
12791         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::getStatus" );
12792       }
12793       return result;
12794     }
12795 
12796     //=== VK_KHR_external_fence_capabilities ===
12797 
12798     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties
getExternalFencePropertiesKHR(const PhysicalDeviceExternalFenceInfo & externalFenceInfo) const12799                                            PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo ) const
12800       VULKAN_HPP_NOEXCEPT
12801     {
12802       VULKAN_HPP_ASSERT(
12803         getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR &&
12804         "Function <vkGetPhysicalDeviceExternalFencePropertiesKHR> needs extension <VK_KHR_external_fence_capabilities> enabled!" );
12805 
12806       VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties;
12807       getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR(
12808         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12809         reinterpret_cast<const VkPhysicalDeviceExternalFenceInfo *>( &externalFenceInfo ),
12810         reinterpret_cast<VkExternalFenceProperties *>( &externalFenceProperties ) );
12811       return externalFenceProperties;
12812     }
12813 
12814 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
12815     //=== VK_KHR_external_fence_win32 ===
12816 
12817     VULKAN_HPP_INLINE void
importFenceWin32HandleKHR(const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo) const12818       Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
12819     {
12820       VULKAN_HPP_ASSERT(
12821         getDispatcher()->vkImportFenceWin32HandleKHR &&
12822         "Function <vkImportFenceWin32HandleKHR> needs extension <VK_KHR_external_fence_win32> enabled!" );
12823 
12824       VULKAN_HPP_NAMESPACE::Result result =
12825         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportFenceWin32HandleKHR(
12826           static_cast<VkDevice>( m_device ),
12827           reinterpret_cast<const VkImportFenceWin32HandleInfoKHR *>( &importFenceWin32HandleInfo ) ) );
12828       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12829       {
12830         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" );
12831       }
12832     }
12833 
12834     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE HANDLE
getFenceWin32HandleKHR(const FenceGetWin32HandleInfoKHR & getWin32HandleInfo) const12835                                            Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
12836     {
12837       VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceWin32HandleKHR &&
12838                          "Function <vkGetFenceWin32HandleKHR> needs extension <VK_KHR_external_fence_win32> enabled!" );
12839 
12840       HANDLE                       handle;
12841       VULKAN_HPP_NAMESPACE::Result result =
12842         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetFenceWin32HandleKHR(
12843           static_cast<VkDevice>( m_device ),
12844           reinterpret_cast<const VkFenceGetWin32HandleInfoKHR *>( &getWin32HandleInfo ),
12845           &handle ) );
12846       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12847       {
12848         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" );
12849       }
12850       return handle;
12851     }
12852 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
12853 
12854     //=== VK_KHR_external_fence_fd ===
12855 
importFenceFdKHR(const ImportFenceFdInfoKHR & importFenceFdInfo) const12856     VULKAN_HPP_INLINE void Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
12857     {
12858       VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceFdKHR &&
12859                          "Function <vkImportFenceFdKHR> needs extension <VK_KHR_external_fence_fd> enabled!" );
12860 
12861       VULKAN_HPP_NAMESPACE::Result result =
12862         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportFenceFdKHR(
12863           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkImportFenceFdInfoKHR *>( &importFenceFdInfo ) ) );
12864       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12865       {
12866         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceFdKHR" );
12867       }
12868     }
12869 
getFenceFdKHR(const FenceGetFdInfoKHR & getFdInfo) const12870     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE int Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
12871     {
12872       VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceFdKHR &&
12873                          "Function <vkGetFenceFdKHR> needs extension <VK_KHR_external_fence_fd> enabled!" );
12874 
12875       int                          fd;
12876       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetFenceFdKHR(
12877         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkFenceGetFdInfoKHR *>( &getFdInfo ), &fd ) );
12878       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12879       {
12880         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceFdKHR" );
12881       }
12882       return fd;
12883     }
12884 
12885     //=== VK_KHR_performance_query ===
12886 
12887     VULKAN_HPP_NODISCARD
12888       VULKAN_HPP_INLINE std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>>
enumerateQueueFamilyPerformanceQueryCountersKHR(uint32_t queueFamilyIndex) const12889                         PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const
12890     {
12891       VULKAN_HPP_ASSERT(
12892         getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR &&
12893         "Function <vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR> needs extension <VK_KHR_performance_query> enabled!" );
12894 
12895       std::pair<std::vector<PerformanceCounterKHR>, std::vector<PerformanceCounterDescriptionKHR>> data;
12896       std::vector<PerformanceCounterKHR> &            counters            = data.first;
12897       std::vector<PerformanceCounterDescriptionKHR> & counterDescriptions = data.second;
12898       uint32_t                                        counterCount;
12899       VULKAN_HPP_NAMESPACE::Result                    result;
12900       do
12901       {
12902         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12903           getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
12904             static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &counterCount, nullptr, nullptr ) );
12905         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && counterCount )
12906         {
12907           counters.resize( counterCount );
12908           counterDescriptions.resize( counterCount );
12909           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
12910             getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
12911               static_cast<VkPhysicalDevice>( m_physicalDevice ),
12912               queueFamilyIndex,
12913               &counterCount,
12914               reinterpret_cast<VkPerformanceCounterKHR *>( counters.data() ),
12915               reinterpret_cast<VkPerformanceCounterDescriptionKHR *>( counterDescriptions.data() ) ) );
12916           VULKAN_HPP_ASSERT( counterCount <= counters.size() );
12917         }
12918       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
12919       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( counterCount < counters.size() ) )
12920       {
12921         counters.resize( counterCount );
12922         counterDescriptions.resize( counterCount );
12923       }
12924       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12925       {
12926         throwResultException(
12927           result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" );
12928       }
12929       return data;
12930     }
12931 
getQueueFamilyPerformanceQueryPassesKHR(const QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo) const12932     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR(
12933       const QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo ) const VULKAN_HPP_NOEXCEPT
12934     {
12935       VULKAN_HPP_ASSERT(
12936         getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR &&
12937         "Function <vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR> needs extension <VK_KHR_performance_query> enabled!" );
12938 
12939       uint32_t numPasses;
12940       getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
12941         static_cast<VkPhysicalDevice>( m_physicalDevice ),
12942         reinterpret_cast<const VkQueryPoolPerformanceCreateInfoKHR *>( &performanceQueryCreateInfo ),
12943         &numPasses );
12944       return numPasses;
12945     }
12946 
acquireProfilingLockKHR(const AcquireProfilingLockInfoKHR & info) const12947     VULKAN_HPP_INLINE void Device::acquireProfilingLockKHR( const AcquireProfilingLockInfoKHR & info ) const
12948     {
12949       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireProfilingLockKHR &&
12950                          "Function <vkAcquireProfilingLockKHR> needs extension <VK_KHR_performance_query> enabled!" );
12951 
12952       VULKAN_HPP_NAMESPACE::Result result =
12953         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireProfilingLockKHR(
12954           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkAcquireProfilingLockInfoKHR *>( &info ) ) );
12955       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12956       {
12957         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" );
12958       }
12959     }
12960 
releaseProfilingLockKHR() const12961     VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT
12962     {
12963       VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseProfilingLockKHR &&
12964                          "Function <vkReleaseProfilingLockKHR> needs extension <VK_KHR_performance_query> enabled!" );
12965 
12966       getDispatcher()->vkReleaseProfilingLockKHR( static_cast<VkDevice>( m_device ) );
12967     }
12968 
12969     //=== VK_KHR_get_surface_capabilities2 ===
12970 
12971     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR
getSurfaceCapabilities2KHR(const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const12972                                            PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
12973     {
12974       VULKAN_HPP_ASSERT(
12975         getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR &&
12976         "Function <vkGetPhysicalDeviceSurfaceCapabilities2KHR> needs extension <VK_KHR_get_surface_capabilities2> enabled!" );
12977 
12978       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR surfaceCapabilities;
12979       VULKAN_HPP_NAMESPACE::Result                  result =
12980         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR(
12981           static_cast<VkPhysicalDevice>( m_physicalDevice ),
12982           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
12983           reinterpret_cast<VkSurfaceCapabilities2KHR *>( &surfaceCapabilities ) ) );
12984       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
12985       {
12986         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" );
12987       }
12988       return surfaceCapabilities;
12989     }
12990 
12991     template <typename X, typename Y, typename... Z>
12992     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
getSurfaceCapabilities2KHR(const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const12993                          PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
12994     {
12995       StructureChain<X, Y, Z...>                      structureChain;
12996       VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR & surfaceCapabilities =
12997         structureChain.template get<VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR>();
12998       VULKAN_HPP_NAMESPACE::Result result =
12999         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR(
13000           static_cast<VkPhysicalDevice>( m_physicalDevice ),
13001           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
13002           reinterpret_cast<VkSurfaceCapabilities2KHR *>( &surfaceCapabilities ) ) );
13003       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13004       {
13005         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" );
13006       }
13007       return structureChain;
13008     }
13009 
13010     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR>
getSurfaceFormats2KHR(const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const13011                                            PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
13012     {
13013       VULKAN_HPP_ASSERT(
13014         getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR &&
13015         "Function <vkGetPhysicalDeviceSurfaceFormats2KHR> needs extension <VK_KHR_get_surface_capabilities2> enabled!" );
13016 
13017       std::vector<VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR> surfaceFormats;
13018       uint32_t                                             surfaceFormatCount;
13019       VULKAN_HPP_NAMESPACE::Result                         result;
13020       do
13021       {
13022         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR(
13023           static_cast<VkPhysicalDevice>( m_physicalDevice ),
13024           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
13025           &surfaceFormatCount,
13026           nullptr ) );
13027         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && surfaceFormatCount )
13028         {
13029           surfaceFormats.resize( surfaceFormatCount );
13030           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR(
13031             static_cast<VkPhysicalDevice>( m_physicalDevice ),
13032             reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
13033             &surfaceFormatCount,
13034             reinterpret_cast<VkSurfaceFormat2KHR *>( surfaceFormats.data() ) ) );
13035           VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() );
13036         }
13037       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13038       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( surfaceFormatCount < surfaceFormats.size() ) )
13039       {
13040         surfaceFormats.resize( surfaceFormatCount );
13041       }
13042       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13043       {
13044         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" );
13045       }
13046       return surfaceFormats;
13047     }
13048 
13049     //=== VK_KHR_get_display_properties2 ===
13050 
13051     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR>
getDisplayProperties2KHR() const13052                                            PhysicalDevice::getDisplayProperties2KHR() const
13053     {
13054       VULKAN_HPP_ASSERT(
13055         getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR &&
13056         "Function <vkGetPhysicalDeviceDisplayProperties2KHR> needs extension <VK_KHR_get_display_properties2> enabled!" );
13057 
13058       std::vector<VULKAN_HPP_NAMESPACE::DisplayProperties2KHR> properties;
13059       uint32_t                                                 propertyCount;
13060       VULKAN_HPP_NAMESPACE::Result                             result;
13061       do
13062       {
13063         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR(
13064           static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
13065         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
13066         {
13067           properties.resize( propertyCount );
13068           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR(
13069             static_cast<VkPhysicalDevice>( m_physicalDevice ),
13070             &propertyCount,
13071             reinterpret_cast<VkDisplayProperties2KHR *>( properties.data() ) ) );
13072           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
13073         }
13074       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13075       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
13076       {
13077         properties.resize( propertyCount );
13078       }
13079       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13080       {
13081         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" );
13082       }
13083       return properties;
13084     }
13085 
13086     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR>
getDisplayPlaneProperties2KHR() const13087                                            PhysicalDevice::getDisplayPlaneProperties2KHR() const
13088     {
13089       VULKAN_HPP_ASSERT(
13090         getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR &&
13091         "Function <vkGetPhysicalDeviceDisplayPlaneProperties2KHR> needs extension <VK_KHR_get_display_properties2> enabled!" );
13092 
13093       std::vector<VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR> properties;
13094       uint32_t                                                      propertyCount;
13095       VULKAN_HPP_NAMESPACE::Result                                  result;
13096       do
13097       {
13098         result =
13099           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
13100             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
13101         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
13102         {
13103           properties.resize( propertyCount );
13104           result =
13105             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
13106               static_cast<VkPhysicalDevice>( m_physicalDevice ),
13107               &propertyCount,
13108               reinterpret_cast<VkDisplayPlaneProperties2KHR *>( properties.data() ) ) );
13109           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
13110         }
13111       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13112       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
13113       {
13114         properties.resize( propertyCount );
13115       }
13116       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13117       {
13118         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" );
13119       }
13120       return properties;
13121     }
13122 
13123     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR>
getModeProperties2() const13124                                            DisplayKHR::getModeProperties2() const
13125     {
13126       VULKAN_HPP_ASSERT(
13127         getDispatcher()->vkGetDisplayModeProperties2KHR &&
13128         "Function <vkGetDisplayModeProperties2KHR> needs extension <VK_KHR_get_display_properties2> enabled!" );
13129 
13130       std::vector<VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR> properties;
13131       uint32_t                                                     propertyCount;
13132       VULKAN_HPP_NAMESPACE::Result                                 result;
13133       do
13134       {
13135         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13136           getDispatcher()->vkGetDisplayModeProperties2KHR( static_cast<VkPhysicalDevice>( m_physicalDevice ),
13137                                                            static_cast<VkDisplayKHR>( m_displayKHR ),
13138                                                            &propertyCount,
13139                                                            nullptr ) );
13140         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
13141         {
13142           properties.resize( propertyCount );
13143           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayModeProperties2KHR(
13144             static_cast<VkPhysicalDevice>( m_physicalDevice ),
13145             static_cast<VkDisplayKHR>( m_displayKHR ),
13146             &propertyCount,
13147             reinterpret_cast<VkDisplayModeProperties2KHR *>( properties.data() ) ) );
13148           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
13149         }
13150       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13151       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
13152       {
13153         properties.resize( propertyCount );
13154       }
13155       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13156       {
13157         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::getModeProperties2" );
13158       }
13159       return properties;
13160     }
13161 
13162     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR
getDisplayPlaneCapabilities2KHR(const DisplayPlaneInfo2KHR & displayPlaneInfo) const13163                                            PhysicalDevice::getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo ) const
13164     {
13165       VULKAN_HPP_ASSERT(
13166         getDispatcher()->vkGetDisplayPlaneCapabilities2KHR &&
13167         "Function <vkGetDisplayPlaneCapabilities2KHR> needs extension <VK_KHR_get_display_properties2> enabled!" );
13168 
13169       VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR capabilities;
13170       VULKAN_HPP_NAMESPACE::Result                       result =
13171         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDisplayPlaneCapabilities2KHR(
13172           static_cast<VkPhysicalDevice>( m_physicalDevice ),
13173           reinterpret_cast<const VkDisplayPlaneInfo2KHR *>( &displayPlaneInfo ),
13174           reinterpret_cast<VkDisplayPlaneCapabilities2KHR *>( &capabilities ) ) );
13175       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13176       {
13177         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" );
13178       }
13179       return capabilities;
13180     }
13181 
13182     //=== VK_EXT_debug_utils ===
13183 
setDebugUtilsObjectNameEXT(const DebugUtilsObjectNameInfoEXT & nameInfo) const13184     VULKAN_HPP_INLINE void Device::setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo ) const
13185     {
13186       VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectNameEXT &&
13187                          "Function <vkSetDebugUtilsObjectNameEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13188 
13189       VULKAN_HPP_NAMESPACE::Result result =
13190         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetDebugUtilsObjectNameEXT(
13191           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugUtilsObjectNameInfoEXT *>( &nameInfo ) ) );
13192       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13193       {
13194         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" );
13195       }
13196     }
13197 
setDebugUtilsObjectTagEXT(const DebugUtilsObjectTagInfoEXT & tagInfo) const13198     VULKAN_HPP_INLINE void Device::setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo ) const
13199     {
13200       VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectTagEXT &&
13201                          "Function <vkSetDebugUtilsObjectTagEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13202 
13203       VULKAN_HPP_NAMESPACE::Result result =
13204         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSetDebugUtilsObjectTagEXT(
13205           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDebugUtilsObjectTagInfoEXT *>( &tagInfo ) ) );
13206       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13207       {
13208         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" );
13209       }
13210     }
13211 
13212     VULKAN_HPP_INLINE void
beginDebugUtilsLabelEXT(const DebugUtilsLabelEXT & labelInfo) const13213       Queue::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
13214     {
13215       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBeginDebugUtilsLabelEXT &&
13216                          "Function <vkQueueBeginDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13217 
13218       getDispatcher()->vkQueueBeginDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ),
13219                                                        reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
13220     }
13221 
endDebugUtilsLabelEXT() const13222     VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT
13223     {
13224       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueEndDebugUtilsLabelEXT &&
13225                          "Function <vkQueueEndDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13226 
13227       getDispatcher()->vkQueueEndDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ) );
13228     }
13229 
13230     VULKAN_HPP_INLINE void
insertDebugUtilsLabelEXT(const DebugUtilsLabelEXT & labelInfo) const13231       Queue::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
13232     {
13233       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueInsertDebugUtilsLabelEXT &&
13234                          "Function <vkQueueInsertDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13235 
13236       getDispatcher()->vkQueueInsertDebugUtilsLabelEXT( static_cast<VkQueue>( m_queue ),
13237                                                         reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
13238     }
13239 
13240     VULKAN_HPP_INLINE void
beginDebugUtilsLabelEXT(const DebugUtilsLabelEXT & labelInfo) const13241       CommandBuffer::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
13242     {
13243       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginDebugUtilsLabelEXT &&
13244                          "Function <vkCmdBeginDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13245 
13246       getDispatcher()->vkCmdBeginDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
13247                                                      reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
13248     }
13249 
endDebugUtilsLabelEXT() const13250     VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT
13251     {
13252       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndDebugUtilsLabelEXT &&
13253                          "Function <vkCmdEndDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13254 
13255       getDispatcher()->vkCmdEndDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ) );
13256     }
13257 
13258     VULKAN_HPP_INLINE void
insertDebugUtilsLabelEXT(const DebugUtilsLabelEXT & labelInfo) const13259       CommandBuffer::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo ) const VULKAN_HPP_NOEXCEPT
13260     {
13261       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInsertDebugUtilsLabelEXT &&
13262                          "Function <vkCmdInsertDebugUtilsLabelEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13263 
13264       getDispatcher()->vkCmdInsertDebugUtilsLabelEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
13265                                                       reinterpret_cast<const VkDebugUtilsLabelEXT *>( &labelInfo ) );
13266     }
13267 
submitDebugUtilsMessageEXT(VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes,const DebugUtilsMessengerCallbackDataEXT & callbackData) const13268     VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT(
13269       VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
13270       VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT        messageTypes,
13271       const DebugUtilsMessengerCallbackDataEXT &                 callbackData ) const VULKAN_HPP_NOEXCEPT
13272     {
13273       VULKAN_HPP_ASSERT( getDispatcher()->vkSubmitDebugUtilsMessageEXT &&
13274                          "Function <vkSubmitDebugUtilsMessageEXT> needs extension <VK_EXT_debug_utils> enabled!" );
13275 
13276       getDispatcher()->vkSubmitDebugUtilsMessageEXT(
13277         static_cast<VkInstance>( m_instance ),
13278         static_cast<VkDebugUtilsMessageSeverityFlagBitsEXT>( messageSeverity ),
13279         static_cast<VkDebugUtilsMessageTypeFlagsEXT>( messageTypes ),
13280         reinterpret_cast<const VkDebugUtilsMessengerCallbackDataEXT *>( &callbackData ) );
13281     }
13282 
13283 #  if defined( VK_USE_PLATFORM_ANDROID_KHR )
13284     //=== VK_ANDROID_external_memory_android_hardware_buffer ===
13285 
13286     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID
getAndroidHardwareBufferPropertiesANDROID(const struct AHardwareBuffer & buffer) const13287                                            Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const
13288     {
13289       VULKAN_HPP_ASSERT(
13290         getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID &&
13291         "Function <vkGetAndroidHardwareBufferPropertiesANDROID> needs extension <VK_ANDROID_external_memory_android_hardware_buffer> enabled!" );
13292 
13293       VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID properties;
13294       VULKAN_HPP_NAMESPACE::Result                                 result =
13295         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
13296           static_cast<VkDevice>( m_device ),
13297           &buffer,
13298           reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( &properties ) ) );
13299       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13300       {
13301         throwResultException( result,
13302                               VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" );
13303       }
13304       return properties;
13305     }
13306 
13307     template <typename X, typename Y, typename... Z>
13308     VULKAN_HPP_NODISCARD StructureChain<X, Y, Z...>
getAndroidHardwareBufferPropertiesANDROID(const struct AHardwareBuffer & buffer) const13309                          Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer ) const
13310     {
13311       StructureChain<X, Y, Z...>                                     structureChain;
13312       VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID & properties =
13313         structureChain.template get<VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID>();
13314       VULKAN_HPP_NAMESPACE::Result result =
13315         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID(
13316           static_cast<VkDevice>( m_device ),
13317           &buffer,
13318           reinterpret_cast<VkAndroidHardwareBufferPropertiesANDROID *>( &properties ) ) );
13319       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13320       {
13321         throwResultException( result,
13322                               VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" );
13323       }
13324       return structureChain;
13325     }
13326 
13327     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE struct AHardwareBuffer *
getMemoryAndroidHardwareBufferANDROID(const MemoryGetAndroidHardwareBufferInfoANDROID & info) const13328                          Device::getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info ) const
13329     {
13330       VULKAN_HPP_ASSERT(
13331         getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID &&
13332         "Function <vkGetMemoryAndroidHardwareBufferANDROID> needs extension <VK_ANDROID_external_memory_android_hardware_buffer> enabled!" );
13333 
13334       struct AHardwareBuffer *     buffer;
13335       VULKAN_HPP_NAMESPACE::Result result =
13336         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID(
13337           static_cast<VkDevice>( m_device ),
13338           reinterpret_cast<const VkMemoryGetAndroidHardwareBufferInfoANDROID *>( &info ),
13339           &buffer ) );
13340       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13341       {
13342         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" );
13343       }
13344       return buffer;
13345     }
13346 #  endif /*VK_USE_PLATFORM_ANDROID_KHR*/
13347 
13348     //=== VK_EXT_sample_locations ===
13349 
setSampleLocationsEXT(const SampleLocationsInfoEXT & sampleLocationsInfo) const13350     VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT(
13351       const SampleLocationsInfoEXT & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT
13352     {
13353       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEXT &&
13354                          "Function <vkCmdSetSampleLocationsEXT> needs extension <VK_EXT_sample_locations> enabled!" );
13355 
13356       getDispatcher()->vkCmdSetSampleLocationsEXT(
13357         static_cast<VkCommandBuffer>( m_commandBuffer ),
13358         reinterpret_cast<const VkSampleLocationsInfoEXT *>( &sampleLocationsInfo ) );
13359     }
13360 
13361     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT
getMultisamplePropertiesEXT(VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples) const13362                                            PhysicalDevice::getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples ) const
13363       VULKAN_HPP_NOEXCEPT
13364     {
13365       VULKAN_HPP_ASSERT(
13366         getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT &&
13367         "Function <vkGetPhysicalDeviceMultisamplePropertiesEXT> needs extension <VK_EXT_sample_locations> enabled!" );
13368 
13369       VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT multisampleProperties;
13370       getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT(
13371         static_cast<VkPhysicalDevice>( m_physicalDevice ),
13372         static_cast<VkSampleCountFlagBits>( samples ),
13373         reinterpret_cast<VkMultisamplePropertiesEXT *>( &multisampleProperties ) );
13374       return multisampleProperties;
13375     }
13376 
13377     //=== VK_KHR_get_memory_requirements2 ===
13378 
13379     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getImageMemoryRequirements2KHR(const ImageMemoryRequirementsInfo2 & info) const13380                                            Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13381     {
13382       VULKAN_HPP_ASSERT(
13383         getDispatcher()->vkGetImageMemoryRequirements2KHR &&
13384         "Function <vkGetImageMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13385 
13386       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
13387       getDispatcher()->vkGetImageMemoryRequirements2KHR(
13388         static_cast<VkDevice>( m_device ),
13389         reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
13390         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13391       return memoryRequirements;
13392     }
13393 
13394     template <typename X, typename Y, typename... Z>
13395     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getImageMemoryRequirements2KHR(const ImageMemoryRequirementsInfo2 & info) const13396                                            Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13397     {
13398       VULKAN_HPP_ASSERT(
13399         getDispatcher()->vkGetImageMemoryRequirements2KHR &&
13400         "Function <vkGetImageMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13401 
13402       StructureChain<X, Y, Z...>                  structureChain;
13403       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
13404         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
13405       getDispatcher()->vkGetImageMemoryRequirements2KHR(
13406         static_cast<VkDevice>( m_device ),
13407         reinterpret_cast<const VkImageMemoryRequirementsInfo2 *>( &info ),
13408         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13409       return structureChain;
13410     }
13411 
13412     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getBufferMemoryRequirements2KHR(const BufferMemoryRequirementsInfo2 & info) const13413                                            Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13414     {
13415       VULKAN_HPP_ASSERT(
13416         getDispatcher()->vkGetBufferMemoryRequirements2KHR &&
13417         "Function <vkGetBufferMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13418 
13419       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
13420       getDispatcher()->vkGetBufferMemoryRequirements2KHR(
13421         static_cast<VkDevice>( m_device ),
13422         reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
13423         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13424       return memoryRequirements;
13425     }
13426 
13427     template <typename X, typename Y, typename... Z>
13428     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getBufferMemoryRequirements2KHR(const BufferMemoryRequirementsInfo2 & info) const13429                                            Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info ) const VULKAN_HPP_NOEXCEPT
13430     {
13431       VULKAN_HPP_ASSERT(
13432         getDispatcher()->vkGetBufferMemoryRequirements2KHR &&
13433         "Function <vkGetBufferMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13434 
13435       StructureChain<X, Y, Z...>                  structureChain;
13436       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
13437         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
13438       getDispatcher()->vkGetBufferMemoryRequirements2KHR(
13439         static_cast<VkDevice>( m_device ),
13440         reinterpret_cast<const VkBufferMemoryRequirementsInfo2 *>( &info ),
13441         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
13442       return structureChain;
13443     }
13444 
13445     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2>
getImageSparseMemoryRequirements2KHR(const ImageSparseMemoryRequirementsInfo2 & info) const13446                                            Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info ) const
13447       VULKAN_HPP_NOEXCEPT
13448     {
13449       VULKAN_HPP_ASSERT(
13450         getDispatcher()->vkGetImageSparseMemoryRequirements2KHR &&
13451         "Function <vkGetImageSparseMemoryRequirements2KHR> needs extension <VK_KHR_get_memory_requirements2> enabled!" );
13452 
13453       uint32_t sparseMemoryRequirementCount;
13454       getDispatcher()->vkGetImageSparseMemoryRequirements2KHR(
13455         static_cast<VkDevice>( m_device ),
13456         reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
13457         &sparseMemoryRequirementCount,
13458         nullptr );
13459       std::vector<VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2> sparseMemoryRequirements(
13460         sparseMemoryRequirementCount );
13461       getDispatcher()->vkGetImageSparseMemoryRequirements2KHR(
13462         static_cast<VkDevice>( m_device ),
13463         reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2 *>( &info ),
13464         &sparseMemoryRequirementCount,
13465         reinterpret_cast<VkSparseImageMemoryRequirements2 *>( sparseMemoryRequirements.data() ) );
13466       VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() );
13467       return sparseMemoryRequirements;
13468     }
13469 
13470     //=== VK_KHR_acceleration_structure ===
13471 
buildAccelerationStructuresKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos) const13472     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR(
13473       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const &      infos,
13474       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos )
13475       const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
13476     {
13477       VULKAN_HPP_ASSERT(
13478         getDispatcher()->vkCmdBuildAccelerationStructuresKHR &&
13479         "Function <vkCmdBuildAccelerationStructuresKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13480 
13481 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
13482       VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() );
13483 #  else
13484       if ( infos.size() != pBuildRangeInfos.size() )
13485       {
13486         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
13487                           "::CommandBuffer::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" );
13488       }
13489 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
13490 
13491       getDispatcher()->vkCmdBuildAccelerationStructuresKHR(
13492         static_cast<VkCommandBuffer>( m_commandBuffer ),
13493         infos.size(),
13494         reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
13495         reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR * const *>( pBuildRangeInfos.data() ) );
13496     }
13497 
buildAccelerationStructuresIndirectKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const & indirectDeviceAddresses,ArrayProxy<const uint32_t> const & indirectStrides,ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts) const13498     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR(
13499       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,
13500       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceAddress> const &                             indirectDeviceAddresses,
13501       ArrayProxy<const uint32_t> const &                                                        indirectStrides,
13502       ArrayProxy<const uint32_t * const> const & pMaxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
13503     {
13504       VULKAN_HPP_ASSERT(
13505         getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR &&
13506         "Function <vkCmdBuildAccelerationStructuresIndirectKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13507 
13508 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
13509       VULKAN_HPP_ASSERT( infos.size() == indirectDeviceAddresses.size() );
13510       VULKAN_HPP_ASSERT( infos.size() == indirectStrides.size() );
13511       VULKAN_HPP_ASSERT( infos.size() == pMaxPrimitiveCounts.size() );
13512 #  else
13513       if ( infos.size() != indirectDeviceAddresses.size() )
13514       {
13515         throw LogicError(
13516           VULKAN_HPP_NAMESPACE_STRING
13517           "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectDeviceAddresses.size()" );
13518       }
13519       if ( infos.size() != indirectStrides.size() )
13520       {
13521         throw LogicError(
13522           VULKAN_HPP_NAMESPACE_STRING
13523           "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectStrides.size()" );
13524       }
13525       if ( infos.size() != pMaxPrimitiveCounts.size() )
13526       {
13527         throw LogicError(
13528           VULKAN_HPP_NAMESPACE_STRING
13529           "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != pMaxPrimitiveCounts.size()" );
13530       }
13531 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
13532 
13533       getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR(
13534         static_cast<VkCommandBuffer>( m_commandBuffer ),
13535         infos.size(),
13536         reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
13537         reinterpret_cast<const VkDeviceAddress *>( indirectDeviceAddresses.data() ),
13538         indirectStrides.data(),
13539         pMaxPrimitiveCounts.data() );
13540     }
13541 
buildAccelerationStructuresKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const & infos,ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos) const13542     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result Device::buildAccelerationStructuresKHR(
13543       VULKAN_HPP_NAMESPACE::DeferredOperationKHR                                                     deferredOperation,
13544       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR> const &      infos,
13545       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR * const> const & pBuildRangeInfos )
13546       const
13547     {
13548       VULKAN_HPP_ASSERT(
13549         getDispatcher()->vkBuildAccelerationStructuresKHR &&
13550         "Function <vkBuildAccelerationStructuresKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13551       if ( infos.size() != pBuildRangeInfos.size() )
13552       {
13553         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
13554                           "::Device::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" );
13555       }
13556 
13557       VULKAN_HPP_NAMESPACE::Result result =
13558         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBuildAccelerationStructuresKHR(
13559           static_cast<VkDevice>( m_device ),
13560           static_cast<VkDeferredOperationKHR>( deferredOperation ),
13561           infos.size(),
13562           reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( infos.data() ),
13563           reinterpret_cast<const VkAccelerationStructureBuildRangeInfoKHR * const *>( pBuildRangeInfos.data() ) ) );
13564       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
13565            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
13566            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) )
13567       {
13568         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR" );
13569       }
13570       return result;
13571     }
13572 
13573     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyAccelerationStructureKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const CopyAccelerationStructureInfoKHR & info) const13574                                            Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,
13575                                             const CopyAccelerationStructureInfoKHR &   info ) const
13576     {
13577       VULKAN_HPP_ASSERT(
13578         getDispatcher()->vkCopyAccelerationStructureKHR &&
13579         "Function <vkCopyAccelerationStructureKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13580 
13581       VULKAN_HPP_NAMESPACE::Result result =
13582         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyAccelerationStructureKHR(
13583           static_cast<VkDevice>( m_device ),
13584           static_cast<VkDeferredOperationKHR>( deferredOperation ),
13585           reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( &info ) ) );
13586       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
13587            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
13588            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) )
13589       {
13590         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR" );
13591       }
13592       return result;
13593     }
13594 
13595     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyAccelerationStructureToMemoryKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const CopyAccelerationStructureToMemoryInfoKHR & info) const13596                                            Device::copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR       deferredOperation,
13597                                                     const CopyAccelerationStructureToMemoryInfoKHR & info ) const
13598     {
13599       VULKAN_HPP_ASSERT(
13600         getDispatcher()->vkCopyAccelerationStructureToMemoryKHR &&
13601         "Function <vkCopyAccelerationStructureToMemoryKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13602 
13603       VULKAN_HPP_NAMESPACE::Result result =
13604         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyAccelerationStructureToMemoryKHR(
13605           static_cast<VkDevice>( m_device ),
13606           static_cast<VkDeferredOperationKHR>( deferredOperation ),
13607           reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( &info ) ) );
13608       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
13609            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
13610            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) )
13611       {
13612         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR" );
13613       }
13614       return result;
13615     }
13616 
13617     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
copyMemoryToAccelerationStructureKHR(VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation,const CopyMemoryToAccelerationStructureInfoKHR & info) const13618                                            Device::copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR       deferredOperation,
13619                                                     const CopyMemoryToAccelerationStructureInfoKHR & info ) const
13620     {
13621       VULKAN_HPP_ASSERT(
13622         getDispatcher()->vkCopyMemoryToAccelerationStructureKHR &&
13623         "Function <vkCopyMemoryToAccelerationStructureKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13624 
13625       VULKAN_HPP_NAMESPACE::Result result =
13626         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCopyMemoryToAccelerationStructureKHR(
13627           static_cast<VkDevice>( m_device ),
13628           static_cast<VkDeferredOperationKHR>( deferredOperation ),
13629           reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( &info ) ) );
13630       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
13631            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR ) &&
13632            ( result != VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR ) )
13633       {
13634         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR" );
13635       }
13636       return result;
13637     }
13638 
13639     template <typename T>
writeAccelerationStructuresPropertiesKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,size_t dataSize,size_t stride) const13640     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T> Device::writeAccelerationStructuresPropertiesKHR(
13641       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
13642       VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
13643       size_t                                                                   dataSize,
13644       size_t                                                                   stride ) const
13645     {
13646       VULKAN_HPP_ASSERT(
13647         getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR &&
13648         "Function <vkWriteAccelerationStructuresPropertiesKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13649 
13650       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
13651       std::vector<T> data( dataSize / sizeof( T ) );
13652       Result         result = static_cast<Result>( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR(
13653         static_cast<VkDevice>( m_device ),
13654         accelerationStructures.size(),
13655         reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
13656         static_cast<VkQueryType>( queryType ),
13657         data.size() * sizeof( T ),
13658         reinterpret_cast<void *>( data.data() ),
13659         stride ) );
13660       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13661       {
13662         throwResultException( result,
13663                               VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" );
13664       }
13665       return data;
13666     }
13667 
13668     template <typename T>
writeAccelerationStructuresPropertyKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,size_t stride) const13669     VULKAN_HPP_NODISCARD T Device::writeAccelerationStructuresPropertyKHR(
13670       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
13671       VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
13672       size_t                                                                   stride ) const
13673     {
13674       T      data;
13675       Result result = static_cast<Result>( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR(
13676         static_cast<VkDevice>( m_device ),
13677         accelerationStructures.size(),
13678         reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
13679         static_cast<VkQueryType>( queryType ),
13680         sizeof( T ),
13681         reinterpret_cast<void *>( &data ),
13682         stride ) );
13683       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13684       {
13685         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" );
13686       }
13687       return data;
13688     }
13689 
copyAccelerationStructureKHR(const CopyAccelerationStructureInfoKHR & info) const13690     VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR(
13691       const CopyAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
13692     {
13693       VULKAN_HPP_ASSERT(
13694         getDispatcher()->vkCmdCopyAccelerationStructureKHR &&
13695         "Function <vkCmdCopyAccelerationStructureKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13696 
13697       getDispatcher()->vkCmdCopyAccelerationStructureKHR(
13698         static_cast<VkCommandBuffer>( m_commandBuffer ),
13699         reinterpret_cast<const VkCopyAccelerationStructureInfoKHR *>( &info ) );
13700     }
13701 
copyAccelerationStructureToMemoryKHR(const CopyAccelerationStructureToMemoryInfoKHR & info) const13702     VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR(
13703       const CopyAccelerationStructureToMemoryInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
13704     {
13705       VULKAN_HPP_ASSERT(
13706         getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR &&
13707         "Function <vkCmdCopyAccelerationStructureToMemoryKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13708 
13709       getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR(
13710         static_cast<VkCommandBuffer>( m_commandBuffer ),
13711         reinterpret_cast<const VkCopyAccelerationStructureToMemoryInfoKHR *>( &info ) );
13712     }
13713 
copyMemoryToAccelerationStructureKHR(const CopyMemoryToAccelerationStructureInfoKHR & info) const13714     VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR(
13715       const CopyMemoryToAccelerationStructureInfoKHR & info ) const VULKAN_HPP_NOEXCEPT
13716     {
13717       VULKAN_HPP_ASSERT(
13718         getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR &&
13719         "Function <vkCmdCopyMemoryToAccelerationStructureKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13720 
13721       getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR(
13722         static_cast<VkCommandBuffer>( m_commandBuffer ),
13723         reinterpret_cast<const VkCopyMemoryToAccelerationStructureInfoKHR *>( &info ) );
13724     }
13725 
13726     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getAccelerationStructureAddressKHR(const AccelerationStructureDeviceAddressInfoKHR & info) const13727                                            Device::getAccelerationStructureAddressKHR( const AccelerationStructureDeviceAddressInfoKHR & info ) const
13728       VULKAN_HPP_NOEXCEPT
13729     {
13730       VULKAN_HPP_ASSERT(
13731         getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR &&
13732         "Function <vkGetAccelerationStructureDeviceAddressKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13733 
13734       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>(
13735         getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR(
13736           static_cast<VkDevice>( m_device ),
13737           reinterpret_cast<const VkAccelerationStructureDeviceAddressInfoKHR *>( &info ) ) );
13738     }
13739 
writeAccelerationStructuresPropertiesKHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery) const13740     VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR(
13741       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR> const & accelerationStructures,
13742       VULKAN_HPP_NAMESPACE::QueryType                                          queryType,
13743       VULKAN_HPP_NAMESPACE::QueryPool                                          queryPool,
13744       uint32_t                                                                 firstQuery ) const VULKAN_HPP_NOEXCEPT
13745     {
13746       VULKAN_HPP_ASSERT(
13747         getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR &&
13748         "Function <vkCmdWriteAccelerationStructuresPropertiesKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13749 
13750       getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR(
13751         static_cast<VkCommandBuffer>( m_commandBuffer ),
13752         accelerationStructures.size(),
13753         reinterpret_cast<const VkAccelerationStructureKHR *>( accelerationStructures.data() ),
13754         static_cast<VkQueryType>( queryType ),
13755         static_cast<VkQueryPool>( queryPool ),
13756         firstQuery );
13757     }
13758 
13759     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR
getAccelerationStructureCompatibilityKHR(const AccelerationStructureVersionInfoKHR & versionInfo) const13760                                            Device::getAccelerationStructureCompatibilityKHR( const AccelerationStructureVersionInfoKHR & versionInfo ) const
13761       VULKAN_HPP_NOEXCEPT
13762     {
13763       VULKAN_HPP_ASSERT(
13764         getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR &&
13765         "Function <vkGetDeviceAccelerationStructureCompatibilityKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13766 
13767       VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR compatibility;
13768       getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR(
13769         static_cast<VkDevice>( m_device ),
13770         reinterpret_cast<const VkAccelerationStructureVersionInfoKHR *>( &versionInfo ),
13771         reinterpret_cast<VkAccelerationStructureCompatibilityKHR *>( &compatibility ) );
13772       return compatibility;
13773     }
13774 
13775     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR
getAccelerationStructureBuildSizesKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType,const AccelerationStructureBuildGeometryInfoKHR & buildInfo,ArrayProxy<const uint32_t> const & maxPrimitiveCounts) const13776                                            Device::getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType,
13777                                                      const AccelerationStructureBuildGeometryInfoKHR &       buildInfo,
13778                                                      ArrayProxy<const uint32_t> const & maxPrimitiveCounts ) const
13779       VULKAN_HPP_NOEXCEPT
13780     {
13781       VULKAN_HPP_ASSERT(
13782         getDispatcher()->vkGetAccelerationStructureBuildSizesKHR &&
13783         "Function <vkGetAccelerationStructureBuildSizesKHR> needs extension <VK_KHR_acceleration_structure> enabled!" );
13784 
13785       VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR sizeInfo;
13786       getDispatcher()->vkGetAccelerationStructureBuildSizesKHR(
13787         static_cast<VkDevice>( m_device ),
13788         static_cast<VkAccelerationStructureBuildTypeKHR>( buildType ),
13789         reinterpret_cast<const VkAccelerationStructureBuildGeometryInfoKHR *>( &buildInfo ),
13790         maxPrimitiveCounts.data(),
13791         reinterpret_cast<VkAccelerationStructureBuildSizesInfoKHR *>( &sizeInfo ) );
13792       return sizeInfo;
13793     }
13794 
13795     //=== VK_KHR_sampler_ycbcr_conversion ===
13796 
destroySamplerYcbcrConversionKHR(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion,Optional<const AllocationCallbacks> allocator) const13797     VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR(
13798       VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion,
13799       Optional<const AllocationCallbacks>          allocator ) const VULKAN_HPP_NOEXCEPT
13800     {
13801       VULKAN_HPP_ASSERT(
13802         getDispatcher()->vkDestroySamplerYcbcrConversionKHR &&
13803         "Function <vkDestroySamplerYcbcrConversionKHR> needs extension <VK_KHR_sampler_ycbcr_conversion> enabled!" );
13804 
13805       getDispatcher()->vkDestroySamplerYcbcrConversionKHR(
13806         static_cast<VkDevice>( m_device ),
13807         static_cast<VkSamplerYcbcrConversion>( ycbcrConversion ),
13808         reinterpret_cast<const VkAllocationCallbacks *>(
13809           static_cast<const VULKAN_HPP_NAMESPACE::AllocationCallbacks *>( allocator ) ) );
13810     }
13811 
13812     //=== VK_KHR_bind_memory2 ===
13813 
bindBufferMemory2KHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos) const13814     VULKAN_HPP_INLINE void Device::bindBufferMemory2KHR(
13815       ArrayProxy<const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo> const & bindInfos ) const
13816     {
13817       VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2KHR &&
13818                          "Function <vkBindBufferMemory2KHR> needs extension <VK_KHR_bind_memory2> enabled!" );
13819 
13820       VULKAN_HPP_NAMESPACE::Result result =
13821         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindBufferMemory2KHR(
13822           static_cast<VkDevice>( m_device ),
13823           bindInfos.size(),
13824           reinterpret_cast<const VkBindBufferMemoryInfo *>( bindInfos.data() ) ) );
13825       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13826       {
13827         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" );
13828       }
13829     }
13830 
13831     VULKAN_HPP_INLINE void
bindImageMemory2KHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos) const13832       Device::bindImageMemory2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo> const & bindInfos ) const
13833     {
13834       VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2KHR &&
13835                          "Function <vkBindImageMemory2KHR> needs extension <VK_KHR_bind_memory2> enabled!" );
13836 
13837       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13838         getDispatcher()->vkBindImageMemory2KHR( static_cast<VkDevice>( m_device ),
13839                                                 bindInfos.size(),
13840                                                 reinterpret_cast<const VkBindImageMemoryInfo *>( bindInfos.data() ) ) );
13841       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13842       {
13843         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2KHR" );
13844       }
13845     }
13846 
13847     //=== VK_EXT_image_drm_format_modifier ===
13848 
13849     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT
getDrmFormatModifierPropertiesEXT() const13850                                            Image::getDrmFormatModifierPropertiesEXT() const
13851     {
13852       VULKAN_HPP_ASSERT(
13853         getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT &&
13854         "Function <vkGetImageDrmFormatModifierPropertiesEXT> needs extension <VK_EXT_image_drm_format_modifier> enabled!" );
13855 
13856       VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT properties;
13857       VULKAN_HPP_NAMESPACE::Result                              result =
13858         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT(
13859           static_cast<VkDevice>( m_device ),
13860           static_cast<VkImage>( m_image ),
13861           reinterpret_cast<VkImageDrmFormatModifierPropertiesEXT *>( &properties ) ) );
13862       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13863       {
13864         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Image::getDrmFormatModifierPropertiesEXT" );
13865       }
13866       return properties;
13867     }
13868 
13869     //=== VK_EXT_validation_cache ===
13870 
13871     VULKAN_HPP_INLINE void
merge(ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches) const13872       ValidationCacheEXT::merge( ArrayProxy<const VULKAN_HPP_NAMESPACE::ValidationCacheEXT> const & srcCaches ) const
13873     {
13874       VULKAN_HPP_ASSERT( getDispatcher()->vkMergeValidationCachesEXT &&
13875                          "Function <vkMergeValidationCachesEXT> needs extension <VK_EXT_validation_cache> enabled!" );
13876 
13877       VULKAN_HPP_NAMESPACE::Result result =
13878         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkMergeValidationCachesEXT(
13879           static_cast<VkDevice>( m_device ),
13880           static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
13881           srcCaches.size(),
13882           reinterpret_cast<const VkValidationCacheEXT *>( srcCaches.data() ) ) );
13883       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13884       {
13885         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ValidationCacheEXT::merge" );
13886       }
13887     }
13888 
getData() const13889     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<uint8_t> ValidationCacheEXT::getData() const
13890     {
13891       VULKAN_HPP_ASSERT( getDispatcher()->vkGetValidationCacheDataEXT &&
13892                          "Function <vkGetValidationCacheDataEXT> needs extension <VK_EXT_validation_cache> enabled!" );
13893 
13894       std::vector<uint8_t>         data;
13895       size_t                       dataSize;
13896       VULKAN_HPP_NAMESPACE::Result result;
13897       do
13898       {
13899         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13900           getDispatcher()->vkGetValidationCacheDataEXT( static_cast<VkDevice>( m_device ),
13901                                                         static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
13902                                                         &dataSize,
13903                                                         nullptr ) );
13904         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && dataSize )
13905         {
13906           data.resize( dataSize );
13907           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
13908             getDispatcher()->vkGetValidationCacheDataEXT( static_cast<VkDevice>( m_device ),
13909                                                           static_cast<VkValidationCacheEXT>( m_validationCacheEXT ),
13910                                                           &dataSize,
13911                                                           reinterpret_cast<void *>( data.data() ) ) );
13912           VULKAN_HPP_ASSERT( dataSize <= data.size() );
13913         }
13914       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
13915       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( dataSize < data.size() ) )
13916       {
13917         data.resize( dataSize );
13918       }
13919       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
13920       {
13921         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::ValidationCacheEXT::getData" );
13922       }
13923       return data;
13924     }
13925 
13926     //=== VK_NV_shading_rate_image ===
13927 
13928     VULKAN_HPP_INLINE void
bindShadingRateImageNV(VULKAN_HPP_NAMESPACE::ImageView imageView,VULKAN_HPP_NAMESPACE::ImageLayout imageLayout) const13929       CommandBuffer::bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView   imageView,
13930                                              VULKAN_HPP_NAMESPACE::ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT
13931     {
13932       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadingRateImageNV &&
13933                          "Function <vkCmdBindShadingRateImageNV> needs extension <VK_NV_shading_rate_image> enabled!" );
13934 
13935       getDispatcher()->vkCmdBindShadingRateImageNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
13936                                                     static_cast<VkImageView>( imageView ),
13937                                                     static_cast<VkImageLayout>( imageLayout ) );
13938     }
13939 
setViewportShadingRatePaletteNV(uint32_t firstViewport,ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes) const13940     VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV(
13941       uint32_t firstViewport, ArrayProxy<const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV> const & shadingRatePalettes )
13942       const VULKAN_HPP_NOEXCEPT
13943     {
13944       VULKAN_HPP_ASSERT(
13945         getDispatcher()->vkCmdSetViewportShadingRatePaletteNV &&
13946         "Function <vkCmdSetViewportShadingRatePaletteNV> needs extension <VK_NV_shading_rate_image> enabled!" );
13947 
13948       getDispatcher()->vkCmdSetViewportShadingRatePaletteNV(
13949         static_cast<VkCommandBuffer>( m_commandBuffer ),
13950         firstViewport,
13951         shadingRatePalettes.size(),
13952         reinterpret_cast<const VkShadingRatePaletteNV *>( shadingRatePalettes.data() ) );
13953     }
13954 
setCoarseSampleOrderNV(VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType,ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders) const13955     VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV(
13956       VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV                             sampleOrderType,
13957       ArrayProxy<const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV> const & customSampleOrders ) const
13958       VULKAN_HPP_NOEXCEPT
13959     {
13960       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoarseSampleOrderNV &&
13961                          "Function <vkCmdSetCoarseSampleOrderNV> needs extension <VK_NV_shading_rate_image> enabled!" );
13962 
13963       getDispatcher()->vkCmdSetCoarseSampleOrderNV(
13964         static_cast<VkCommandBuffer>( m_commandBuffer ),
13965         static_cast<VkCoarseSampleOrderTypeNV>( sampleOrderType ),
13966         customSampleOrders.size(),
13967         reinterpret_cast<const VkCoarseSampleOrderCustomNV *>( customSampleOrders.data() ) );
13968     }
13969 
13970     //=== VK_NV_ray_tracing ===
13971 
13972     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR
getAccelerationStructureMemoryRequirementsNV(const AccelerationStructureMemoryRequirementsInfoNV & info) const13973                                            Device::getAccelerationStructureMemoryRequirementsNV(
13974         const AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
13975     {
13976       VULKAN_HPP_ASSERT(
13977         getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV &&
13978         "Function <vkGetAccelerationStructureMemoryRequirementsNV> needs extension <VK_NV_ray_tracing> enabled!" );
13979 
13980       VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR memoryRequirements;
13981       getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV(
13982         static_cast<VkDevice>( m_device ),
13983         reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( &info ),
13984         reinterpret_cast<VkMemoryRequirements2KHR *>( &memoryRequirements ) );
13985       return memoryRequirements;
13986     }
13987 
13988     template <typename X, typename Y, typename... Z>
13989     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...>
getAccelerationStructureMemoryRequirementsNV(const AccelerationStructureMemoryRequirementsInfoNV & info) const13990                                            Device::getAccelerationStructureMemoryRequirementsNV(
13991         const AccelerationStructureMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
13992     {
13993       VULKAN_HPP_ASSERT(
13994         getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV &&
13995         "Function <vkGetAccelerationStructureMemoryRequirementsNV> needs extension <VK_NV_ray_tracing> enabled!" );
13996 
13997       StructureChain<X, Y, Z...>                     structureChain;
13998       VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR & memoryRequirements =
13999         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR>();
14000       getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV(
14001         static_cast<VkDevice>( m_device ),
14002         reinterpret_cast<const VkAccelerationStructureMemoryRequirementsInfoNV *>( &info ),
14003         reinterpret_cast<VkMemoryRequirements2KHR *>( &memoryRequirements ) );
14004       return structureChain;
14005     }
14006 
bindAccelerationStructureMemoryNV(ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos) const14007     VULKAN_HPP_INLINE void Device::bindAccelerationStructureMemoryNV(
14008       ArrayProxy<const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV> const & bindInfos ) const
14009     {
14010       VULKAN_HPP_ASSERT(
14011         getDispatcher()->vkBindAccelerationStructureMemoryNV &&
14012         "Function <vkBindAccelerationStructureMemoryNV> needs extension <VK_NV_ray_tracing> enabled!" );
14013 
14014       VULKAN_HPP_NAMESPACE::Result result =
14015         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkBindAccelerationStructureMemoryNV(
14016           static_cast<VkDevice>( m_device ),
14017           bindInfos.size(),
14018           reinterpret_cast<const VkBindAccelerationStructureMemoryInfoNV *>( bindInfos.data() ) ) );
14019       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14020       {
14021         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" );
14022       }
14023     }
14024 
buildAccelerationStructureNV(const 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) const14025     VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV(
14026       const AccelerationStructureInfoNV &           info,
14027       VULKAN_HPP_NAMESPACE::Buffer                  instanceData,
14028       VULKAN_HPP_NAMESPACE::DeviceSize              instanceOffset,
14029       VULKAN_HPP_NAMESPACE::Bool32                  update,
14030       VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,
14031       VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,
14032       VULKAN_HPP_NAMESPACE::Buffer                  scratch,
14033       VULKAN_HPP_NAMESPACE::DeviceSize              scratchOffset ) const VULKAN_HPP_NOEXCEPT
14034     {
14035       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructureNV &&
14036                          "Function <vkCmdBuildAccelerationStructureNV> needs extension <VK_NV_ray_tracing> enabled!" );
14037 
14038       getDispatcher()->vkCmdBuildAccelerationStructureNV(
14039         static_cast<VkCommandBuffer>( m_commandBuffer ),
14040         reinterpret_cast<const VkAccelerationStructureInfoNV *>( &info ),
14041         static_cast<VkBuffer>( instanceData ),
14042         static_cast<VkDeviceSize>( instanceOffset ),
14043         static_cast<VkBool32>( update ),
14044         static_cast<VkAccelerationStructureNV>( dst ),
14045         static_cast<VkAccelerationStructureNV>( src ),
14046         static_cast<VkBuffer>( scratch ),
14047         static_cast<VkDeviceSize>( scratchOffset ) );
14048     }
14049 
copyAccelerationStructureNV(VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst,VULKAN_HPP_NAMESPACE::AccelerationStructureNV src,VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode) const14050     VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV(
14051       VULKAN_HPP_NAMESPACE::AccelerationStructureNV          dst,
14052       VULKAN_HPP_NAMESPACE::AccelerationStructureNV          src,
14053       VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT
14054     {
14055       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureNV &&
14056                          "Function <vkCmdCopyAccelerationStructureNV> needs extension <VK_NV_ray_tracing> enabled!" );
14057 
14058       getDispatcher()->vkCmdCopyAccelerationStructureNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14059                                                          static_cast<VkAccelerationStructureNV>( dst ),
14060                                                          static_cast<VkAccelerationStructureNV>( src ),
14061                                                          static_cast<VkCopyAccelerationStructureModeKHR>( mode ) );
14062     }
14063 
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) const14064     VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer     raygenShaderBindingTableBuffer,
14065                                                        VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset,
14066                                                        VULKAN_HPP_NAMESPACE::Buffer     missShaderBindingTableBuffer,
14067                                                        VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset,
14068                                                        VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride,
14069                                                        VULKAN_HPP_NAMESPACE::Buffer     hitShaderBindingTableBuffer,
14070                                                        VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset,
14071                                                        VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride,
14072                                                        VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer,
14073                                                        VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset,
14074                                                        VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride,
14075                                                        uint32_t                         width,
14076                                                        uint32_t                         height,
14077                                                        uint32_t depth ) const VULKAN_HPP_NOEXCEPT
14078     {
14079       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysNV &&
14080                          "Function <vkCmdTraceRaysNV> needs extension <VK_NV_ray_tracing> enabled!" );
14081 
14082       getDispatcher()->vkCmdTraceRaysNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14083                                          static_cast<VkBuffer>( raygenShaderBindingTableBuffer ),
14084                                          static_cast<VkDeviceSize>( raygenShaderBindingOffset ),
14085                                          static_cast<VkBuffer>( missShaderBindingTableBuffer ),
14086                                          static_cast<VkDeviceSize>( missShaderBindingOffset ),
14087                                          static_cast<VkDeviceSize>( missShaderBindingStride ),
14088                                          static_cast<VkBuffer>( hitShaderBindingTableBuffer ),
14089                                          static_cast<VkDeviceSize>( hitShaderBindingOffset ),
14090                                          static_cast<VkDeviceSize>( hitShaderBindingStride ),
14091                                          static_cast<VkBuffer>( callableShaderBindingTableBuffer ),
14092                                          static_cast<VkDeviceSize>( callableShaderBindingOffset ),
14093                                          static_cast<VkDeviceSize>( callableShaderBindingStride ),
14094                                          width,
14095                                          height,
14096                                          depth );
14097     }
14098 
14099     template <typename T>
14100     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T>
getRayTracingShaderGroupHandlesNV(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const14101                                            Pipeline::getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
14102     {
14103       VULKAN_HPP_ASSERT(
14104         getDispatcher()->vkGetRayTracingShaderGroupHandlesNV &&
14105         "Function <vkGetRayTracingShaderGroupHandlesNV> needs extension <VK_NV_ray_tracing> enabled!" );
14106 
14107       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
14108       std::vector<T> data( dataSize / sizeof( T ) );
14109       Result         result = static_cast<Result>(
14110         getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast<VkDevice>( m_device ),
14111                                                               static_cast<VkPipeline>( m_pipeline ),
14112                                                               firstGroup,
14113                                                               groupCount,
14114                                                               data.size() * sizeof( T ),
14115                                                               reinterpret_cast<void *>( data.data() ) ) );
14116       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14117       {
14118         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesNV" );
14119       }
14120       return data;
14121     }
14122 
14123     template <typename T>
getRayTracingShaderGroupHandleNV(uint32_t firstGroup,uint32_t groupCount) const14124     VULKAN_HPP_NODISCARD T Pipeline::getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const
14125     {
14126       T      data;
14127       Result result = static_cast<Result>(
14128         getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast<VkDevice>( m_device ),
14129                                                               static_cast<VkPipeline>( m_pipeline ),
14130                                                               firstGroup,
14131                                                               groupCount,
14132                                                               sizeof( T ),
14133                                                               reinterpret_cast<void *>( &data ) ) );
14134       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14135       {
14136         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleNV" );
14137       }
14138       return data;
14139     }
14140 
14141     template <typename T>
getHandle(size_t dataSize) const14142     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T> AccelerationStructureNV::getHandle( size_t dataSize ) const
14143     {
14144       VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV &&
14145                          "Function <vkGetAccelerationStructureHandleNV> needs extension <VK_NV_ray_tracing> enabled!" );
14146 
14147       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
14148       std::vector<T> data( dataSize / sizeof( T ) );
14149       Result         result = static_cast<Result>( getDispatcher()->vkGetAccelerationStructureHandleNV(
14150         static_cast<VkDevice>( m_device ),
14151         static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ),
14152         data.size() * sizeof( T ),
14153         reinterpret_cast<void *>( data.data() ) ) );
14154       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14155       {
14156         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" );
14157       }
14158       return data;
14159     }
14160 
14161     template <typename T>
getHandle() const14162     VULKAN_HPP_NODISCARD T AccelerationStructureNV::getHandle() const
14163     {
14164       T      data;
14165       Result result = static_cast<Result>( getDispatcher()->vkGetAccelerationStructureHandleNV(
14166         static_cast<VkDevice>( m_device ),
14167         static_cast<VkAccelerationStructureNV>( m_accelerationStructureNV ),
14168         sizeof( T ),
14169         reinterpret_cast<void *>( &data ) ) );
14170       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14171       {
14172         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" );
14173       }
14174       return data;
14175     }
14176 
writeAccelerationStructuresPropertiesNV(ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,VULKAN_HPP_NAMESPACE::QueryType queryType,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t firstQuery) const14177     VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV(
14178       ArrayProxy<const VULKAN_HPP_NAMESPACE::AccelerationStructureNV> const & accelerationStructures,
14179       VULKAN_HPP_NAMESPACE::QueryType                                         queryType,
14180       VULKAN_HPP_NAMESPACE::QueryPool                                         queryPool,
14181       uint32_t                                                                firstQuery ) const VULKAN_HPP_NOEXCEPT
14182     {
14183       VULKAN_HPP_ASSERT(
14184         getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV &&
14185         "Function <vkCmdWriteAccelerationStructuresPropertiesNV> needs extension <VK_NV_ray_tracing> enabled!" );
14186 
14187       getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV(
14188         static_cast<VkCommandBuffer>( m_commandBuffer ),
14189         accelerationStructures.size(),
14190         reinterpret_cast<const VkAccelerationStructureNV *>( accelerationStructures.data() ),
14191         static_cast<VkQueryType>( queryType ),
14192         static_cast<VkQueryPool>( queryPool ),
14193         firstQuery );
14194     }
14195 
compileDeferredNV(uint32_t shader) const14196     VULKAN_HPP_INLINE void Pipeline::compileDeferredNV( uint32_t shader ) const
14197     {
14198       VULKAN_HPP_ASSERT( getDispatcher()->vkCompileDeferredNV &&
14199                          "Function <vkCompileDeferredNV> needs extension <VK_NV_ray_tracing> enabled!" );
14200 
14201       VULKAN_HPP_NAMESPACE::Result result =
14202         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCompileDeferredNV(
14203           static_cast<VkDevice>( m_device ), static_cast<VkPipeline>( m_pipeline ), shader ) );
14204       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14205       {
14206         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::compileDeferredNV" );
14207       }
14208     }
14209 
14210     //=== VK_KHR_maintenance3 ===
14211 
14212     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport
getDescriptorSetLayoutSupportKHR(const DescriptorSetLayoutCreateInfo & createInfo) const14213                                            Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo ) const
14214       VULKAN_HPP_NOEXCEPT
14215     {
14216       VULKAN_HPP_ASSERT(
14217         getDispatcher()->vkGetDescriptorSetLayoutSupportKHR &&
14218         "Function <vkGetDescriptorSetLayoutSupportKHR> needs extension <VK_KHR_maintenance3> enabled!" );
14219 
14220       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support;
14221       getDispatcher()->vkGetDescriptorSetLayoutSupportKHR(
14222         static_cast<VkDevice>( m_device ),
14223         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
14224         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
14225       return support;
14226     }
14227 
14228     template <typename X, typename Y, typename... Z>
getDescriptorSetLayoutSupportKHR(const DescriptorSetLayoutCreateInfo & createInfo) const14229     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getDescriptorSetLayoutSupportKHR(
14230       const DescriptorSetLayoutCreateInfo & createInfo ) const VULKAN_HPP_NOEXCEPT
14231     {
14232       VULKAN_HPP_ASSERT(
14233         getDispatcher()->vkGetDescriptorSetLayoutSupportKHR &&
14234         "Function <vkGetDescriptorSetLayoutSupportKHR> needs extension <VK_KHR_maintenance3> enabled!" );
14235 
14236       StructureChain<X, Y, Z...>                         structureChain;
14237       VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support =
14238         structureChain.template get<VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport>();
14239       getDispatcher()->vkGetDescriptorSetLayoutSupportKHR(
14240         static_cast<VkDevice>( m_device ),
14241         reinterpret_cast<const VkDescriptorSetLayoutCreateInfo *>( &createInfo ),
14242         reinterpret_cast<VkDescriptorSetLayoutSupport *>( &support ) );
14243       return structureChain;
14244     }
14245 
14246     //=== VK_KHR_draw_indirect_count ===
14247 
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) const14248     VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14249                                                                 VULKAN_HPP_NAMESPACE::DeviceSize offset,
14250                                                                 VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
14251                                                                 VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
14252                                                                 uint32_t                         maxDrawCount,
14253                                                                 uint32_t stride ) const VULKAN_HPP_NOEXCEPT
14254     {
14255       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountKHR &&
14256                          "Function <vkCmdDrawIndirectCountKHR> needs extension <VK_KHR_draw_indirect_count> enabled!" );
14257 
14258       getDispatcher()->vkCmdDrawIndirectCountKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
14259                                                   static_cast<VkBuffer>( buffer ),
14260                                                   static_cast<VkDeviceSize>( offset ),
14261                                                   static_cast<VkBuffer>( countBuffer ),
14262                                                   static_cast<VkDeviceSize>( countBufferOffset ),
14263                                                   maxDrawCount,
14264                                                   stride );
14265     }
14266 
14267     VULKAN_HPP_INLINE void
drawIndexedIndirectCountKHR(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const14268       CommandBuffer::drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14269                                                   VULKAN_HPP_NAMESPACE::DeviceSize offset,
14270                                                   VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
14271                                                   VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
14272                                                   uint32_t                         maxDrawCount,
14273                                                   uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
14274     {
14275       VULKAN_HPP_ASSERT(
14276         getDispatcher()->vkCmdDrawIndexedIndirectCountKHR &&
14277         "Function <vkCmdDrawIndexedIndirectCountKHR> needs extension <VK_KHR_draw_indirect_count> enabled!" );
14278 
14279       getDispatcher()->vkCmdDrawIndexedIndirectCountKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
14280                                                          static_cast<VkBuffer>( buffer ),
14281                                                          static_cast<VkDeviceSize>( offset ),
14282                                                          static_cast<VkBuffer>( countBuffer ),
14283                                                          static_cast<VkDeviceSize>( countBufferOffset ),
14284                                                          maxDrawCount,
14285                                                          stride );
14286     }
14287 
14288     //=== VK_EXT_external_memory_host ===
14289 
14290     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT
getMemoryHostPointerPropertiesEXT(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer) const14291                                            Device::getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
14292                                                  const void * pHostPointer ) const
14293     {
14294       VULKAN_HPP_ASSERT(
14295         getDispatcher()->vkGetMemoryHostPointerPropertiesEXT &&
14296         "Function <vkGetMemoryHostPointerPropertiesEXT> needs extension <VK_EXT_external_memory_host> enabled!" );
14297 
14298       VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT memoryHostPointerProperties;
14299       VULKAN_HPP_NAMESPACE::Result                         result =
14300         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryHostPointerPropertiesEXT(
14301           static_cast<VkDevice>( m_device ),
14302           static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
14303           pHostPointer,
14304           reinterpret_cast<VkMemoryHostPointerPropertiesEXT *>( &memoryHostPointerProperties ) ) );
14305       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14306       {
14307         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" );
14308       }
14309       return memoryHostPointerProperties;
14310     }
14311 
14312     //=== VK_AMD_buffer_marker ===
14313 
14314     VULKAN_HPP_INLINE void
writeBufferMarkerAMD(VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,uint32_t marker) const14315       CommandBuffer::writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage,
14316                                            VULKAN_HPP_NAMESPACE::Buffer                dstBuffer,
14317                                            VULKAN_HPP_NAMESPACE::DeviceSize            dstOffset,
14318                                            uint32_t marker ) const VULKAN_HPP_NOEXCEPT
14319     {
14320       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarkerAMD &&
14321                          "Function <vkCmdWriteBufferMarkerAMD> needs extension <VK_AMD_buffer_marker> enabled!" );
14322 
14323       getDispatcher()->vkCmdWriteBufferMarkerAMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
14324                                                   static_cast<VkPipelineStageFlagBits>( pipelineStage ),
14325                                                   static_cast<VkBuffer>( dstBuffer ),
14326                                                   static_cast<VkDeviceSize>( dstOffset ),
14327                                                   marker );
14328     }
14329 
14330     //=== VK_EXT_calibrated_timestamps ===
14331 
14332     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::TimeDomainEXT>
getCalibrateableTimeDomainsEXT() const14333                                            PhysicalDevice::getCalibrateableTimeDomainsEXT() const
14334     {
14335       VULKAN_HPP_ASSERT(
14336         getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT &&
14337         "Function <vkGetPhysicalDeviceCalibrateableTimeDomainsEXT> needs extension <VK_EXT_calibrated_timestamps> enabled!" );
14338 
14339       std::vector<VULKAN_HPP_NAMESPACE::TimeDomainEXT> timeDomains;
14340       uint32_t                                         timeDomainCount;
14341       VULKAN_HPP_NAMESPACE::Result                     result;
14342       do
14343       {
14344         result =
14345           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
14346             static_cast<VkPhysicalDevice>( m_physicalDevice ), &timeDomainCount, nullptr ) );
14347         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && timeDomainCount )
14348         {
14349           timeDomains.resize( timeDomainCount );
14350           result =
14351             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
14352               static_cast<VkPhysicalDevice>( m_physicalDevice ),
14353               &timeDomainCount,
14354               reinterpret_cast<VkTimeDomainEXT *>( timeDomains.data() ) ) );
14355           VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() );
14356         }
14357       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14358       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( timeDomainCount < timeDomains.size() ) )
14359       {
14360         timeDomains.resize( timeDomainCount );
14361       }
14362       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14363       {
14364         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" );
14365       }
14366       return timeDomains;
14367     }
14368 
14369     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<std::vector<uint64_t>, uint64_t>
getCalibratedTimestampsEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT> const & timestampInfos) const14370                                            Device::getCalibratedTimestampsEXT(
14371         ArrayProxy<const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT> const & timestampInfos ) const
14372     {
14373       VULKAN_HPP_ASSERT(
14374         getDispatcher()->vkGetCalibratedTimestampsEXT &&
14375         "Function <vkGetCalibratedTimestampsEXT> needs extension <VK_EXT_calibrated_timestamps> enabled!" );
14376 
14377       std::pair<std::vector<uint64_t>, uint64_t> data(
14378         std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) );
14379       std::vector<uint64_t> &      timestamps   = data.first;
14380       uint64_t &                   maxDeviation = data.second;
14381       VULKAN_HPP_NAMESPACE::Result result =
14382         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetCalibratedTimestampsEXT(
14383           static_cast<VkDevice>( m_device ),
14384           timestampInfos.size(),
14385           reinterpret_cast<const VkCalibratedTimestampInfoEXT *>( timestampInfos.data() ),
14386           timestamps.data(),
14387           &maxDeviation ) );
14388       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14389       {
14390         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" );
14391       }
14392       return data;
14393     }
14394 
14395     //=== VK_NV_mesh_shader ===
14396 
drawMeshTasksNV(uint32_t taskCount,uint32_t firstTask) const14397     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount,
14398                                                            uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT
14399     {
14400       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksNV &&
14401                          "Function <vkCmdDrawMeshTasksNV> needs extension <VK_NV_mesh_shader> enabled!" );
14402 
14403       getDispatcher()->vkCmdDrawMeshTasksNV( static_cast<VkCommandBuffer>( m_commandBuffer ), taskCount, firstTask );
14404     }
14405 
drawMeshTasksIndirectNV(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,uint32_t drawCount,uint32_t stride) const14406     VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14407                                                                    VULKAN_HPP_NAMESPACE::DeviceSize offset,
14408                                                                    uint32_t                         drawCount,
14409                                                                    uint32_t stride ) const VULKAN_HPP_NOEXCEPT
14410     {
14411       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectNV &&
14412                          "Function <vkCmdDrawMeshTasksIndirectNV> needs extension <VK_NV_mesh_shader> enabled!" );
14413 
14414       getDispatcher()->vkCmdDrawMeshTasksIndirectNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14415                                                      static_cast<VkBuffer>( buffer ),
14416                                                      static_cast<VkDeviceSize>( offset ),
14417                                                      drawCount,
14418                                                      stride );
14419     }
14420 
14421     VULKAN_HPP_INLINE void
drawMeshTasksIndirectCountNV(VULKAN_HPP_NAMESPACE::Buffer buffer,VULKAN_HPP_NAMESPACE::DeviceSize offset,VULKAN_HPP_NAMESPACE::Buffer countBuffer,VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride) const14422       CommandBuffer::drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer     buffer,
14423                                                    VULKAN_HPP_NAMESPACE::DeviceSize offset,
14424                                                    VULKAN_HPP_NAMESPACE::Buffer     countBuffer,
14425                                                    VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset,
14426                                                    uint32_t                         maxDrawCount,
14427                                                    uint32_t                         stride ) const VULKAN_HPP_NOEXCEPT
14428     {
14429       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV &&
14430                          "Function <vkCmdDrawMeshTasksIndirectCountNV> needs extension <VK_NV_mesh_shader> enabled!" );
14431 
14432       getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14433                                                           static_cast<VkBuffer>( buffer ),
14434                                                           static_cast<VkDeviceSize>( offset ),
14435                                                           static_cast<VkBuffer>( countBuffer ),
14436                                                           static_cast<VkDeviceSize>( countBufferOffset ),
14437                                                           maxDrawCount,
14438                                                           stride );
14439     }
14440 
14441     //=== VK_NV_scissor_exclusive ===
14442 
setExclusiveScissorNV(uint32_t firstExclusiveScissor,ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors) const14443     VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV(
14444       uint32_t                                               firstExclusiveScissor,
14445       ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT
14446     {
14447       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorNV &&
14448                          "Function <vkCmdSetExclusiveScissorNV> needs extension <VK_NV_scissor_exclusive> enabled!" );
14449 
14450       getDispatcher()->vkCmdSetExclusiveScissorNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
14451                                                    firstExclusiveScissor,
14452                                                    exclusiveScissors.size(),
14453                                                    reinterpret_cast<const VkRect2D *>( exclusiveScissors.data() ) );
14454     }
14455 
14456     //=== VK_NV_device_diagnostic_checkpoints ===
14457 
setCheckpointNV(const void * pCheckpointMarker) const14458     VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void * pCheckpointMarker ) const VULKAN_HPP_NOEXCEPT
14459     {
14460       VULKAN_HPP_ASSERT(
14461         getDispatcher()->vkCmdSetCheckpointNV &&
14462         "Function <vkCmdSetCheckpointNV> needs extension <VK_NV_device_diagnostic_checkpoints> enabled!" );
14463 
14464       getDispatcher()->vkCmdSetCheckpointNV( static_cast<VkCommandBuffer>( m_commandBuffer ), pCheckpointMarker );
14465     }
14466 
14467     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV>
getCheckpointDataNV() const14468                                            Queue::getCheckpointDataNV() const VULKAN_HPP_NOEXCEPT
14469     {
14470       VULKAN_HPP_ASSERT(
14471         getDispatcher()->vkGetQueueCheckpointDataNV &&
14472         "Function <vkGetQueueCheckpointDataNV> needs extension <VK_NV_device_diagnostic_checkpoints> enabled!" );
14473 
14474       uint32_t checkpointDataCount;
14475       getDispatcher()->vkGetQueueCheckpointDataNV( static_cast<VkQueue>( m_queue ), &checkpointDataCount, nullptr );
14476       std::vector<VULKAN_HPP_NAMESPACE::CheckpointDataNV> checkpointData( checkpointDataCount );
14477       getDispatcher()->vkGetQueueCheckpointDataNV( static_cast<VkQueue>( m_queue ),
14478                                                    &checkpointDataCount,
14479                                                    reinterpret_cast<VkCheckpointDataNV *>( checkpointData.data() ) );
14480       VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
14481       return checkpointData;
14482     }
14483 
14484     //=== VK_KHR_timeline_semaphore ===
14485 
getCounterValueKHR() const14486     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Semaphore::getCounterValueKHR() const
14487     {
14488       VULKAN_HPP_ASSERT(
14489         getDispatcher()->vkGetSemaphoreCounterValueKHR &&
14490         "Function <vkGetSemaphoreCounterValueKHR> needs extension <VK_KHR_timeline_semaphore> enabled!" );
14491 
14492       uint64_t                     value;
14493       VULKAN_HPP_NAMESPACE::Result result =
14494         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreCounterValueKHR(
14495           static_cast<VkDevice>( m_device ), static_cast<VkSemaphore>( m_semaphore ), &value ) );
14496       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14497       {
14498         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Semaphore::getCounterValueKHR" );
14499       }
14500       return value;
14501     }
14502 
14503     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
waitSemaphoresKHR(const SemaphoreWaitInfo & waitInfo,uint64_t timeout) const14504                                            Device::waitSemaphoresKHR( const SemaphoreWaitInfo & waitInfo, uint64_t timeout ) const
14505     {
14506       VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphoresKHR &&
14507                          "Function <vkWaitSemaphoresKHR> needs extension <VK_KHR_timeline_semaphore> enabled!" );
14508 
14509       VULKAN_HPP_NAMESPACE::Result result =
14510         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkWaitSemaphoresKHR(
14511           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreWaitInfo *>( &waitInfo ), timeout ) );
14512       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
14513            ( result != VULKAN_HPP_NAMESPACE::Result::eTimeout ) )
14514       {
14515         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphoresKHR" );
14516       }
14517       return result;
14518     }
14519 
signalSemaphoreKHR(const SemaphoreSignalInfo & signalInfo) const14520     VULKAN_HPP_INLINE void Device::signalSemaphoreKHR( const SemaphoreSignalInfo & signalInfo ) const
14521     {
14522       VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphoreKHR &&
14523                          "Function <vkSignalSemaphoreKHR> needs extension <VK_KHR_timeline_semaphore> enabled!" );
14524 
14525       VULKAN_HPP_NAMESPACE::Result result =
14526         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkSignalSemaphoreKHR(
14527           static_cast<VkDevice>( m_device ), reinterpret_cast<const VkSemaphoreSignalInfo *>( &signalInfo ) ) );
14528       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14529       {
14530         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphoreKHR" );
14531       }
14532     }
14533 
14534     //=== VK_INTEL_performance_query ===
14535 
14536     VULKAN_HPP_INLINE void
initializePerformanceApiINTEL(const InitializePerformanceApiInfoINTEL & initializeInfo) const14537       Device::initializePerformanceApiINTEL( const InitializePerformanceApiInfoINTEL & initializeInfo ) const
14538     {
14539       VULKAN_HPP_ASSERT(
14540         getDispatcher()->vkInitializePerformanceApiINTEL &&
14541         "Function <vkInitializePerformanceApiINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14542 
14543       VULKAN_HPP_NAMESPACE::Result result =
14544         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkInitializePerformanceApiINTEL(
14545           static_cast<VkDevice>( m_device ),
14546           reinterpret_cast<const VkInitializePerformanceApiInfoINTEL *>( &initializeInfo ) ) );
14547       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14548       {
14549         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" );
14550       }
14551     }
14552 
uninitializePerformanceApiINTEL() const14553     VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT
14554     {
14555       VULKAN_HPP_ASSERT(
14556         getDispatcher()->vkUninitializePerformanceApiINTEL &&
14557         "Function <vkUninitializePerformanceApiINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14558 
14559       getDispatcher()->vkUninitializePerformanceApiINTEL( static_cast<VkDevice>( m_device ) );
14560     }
14561 
14562     VULKAN_HPP_INLINE void
setPerformanceMarkerINTEL(const PerformanceMarkerInfoINTEL & markerInfo) const14563       CommandBuffer::setPerformanceMarkerINTEL( const PerformanceMarkerInfoINTEL & markerInfo ) const
14564     {
14565       VULKAN_HPP_ASSERT(
14566         getDispatcher()->vkCmdSetPerformanceMarkerINTEL &&
14567         "Function <vkCmdSetPerformanceMarkerINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14568 
14569       VULKAN_HPP_NAMESPACE::Result result =
14570         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceMarkerINTEL(
14571           static_cast<VkCommandBuffer>( m_commandBuffer ),
14572           reinterpret_cast<const VkPerformanceMarkerInfoINTEL *>( &markerInfo ) ) );
14573       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14574       {
14575         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" );
14576       }
14577     }
14578 
14579     VULKAN_HPP_INLINE void
setPerformanceStreamMarkerINTEL(const PerformanceStreamMarkerInfoINTEL & markerInfo) const14580       CommandBuffer::setPerformanceStreamMarkerINTEL( const PerformanceStreamMarkerInfoINTEL & markerInfo ) const
14581     {
14582       VULKAN_HPP_ASSERT(
14583         getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL &&
14584         "Function <vkCmdSetPerformanceStreamMarkerINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14585 
14586       VULKAN_HPP_NAMESPACE::Result result =
14587         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL(
14588           static_cast<VkCommandBuffer>( m_commandBuffer ),
14589           reinterpret_cast<const VkPerformanceStreamMarkerInfoINTEL *>( &markerInfo ) ) );
14590       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14591       {
14592         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" );
14593       }
14594     }
14595 
14596     VULKAN_HPP_INLINE void
setPerformanceOverrideINTEL(const PerformanceOverrideInfoINTEL & overrideInfo) const14597       CommandBuffer::setPerformanceOverrideINTEL( const PerformanceOverrideInfoINTEL & overrideInfo ) const
14598     {
14599       VULKAN_HPP_ASSERT(
14600         getDispatcher()->vkCmdSetPerformanceOverrideINTEL &&
14601         "Function <vkCmdSetPerformanceOverrideINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14602 
14603       VULKAN_HPP_NAMESPACE::Result result =
14604         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkCmdSetPerformanceOverrideINTEL(
14605           static_cast<VkCommandBuffer>( m_commandBuffer ),
14606           reinterpret_cast<const VkPerformanceOverrideInfoINTEL *>( &overrideInfo ) ) );
14607       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14608       {
14609         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" );
14610       }
14611     }
14612 
14613     VULKAN_HPP_INLINE void
setPerformanceConfigurationINTEL(VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration) const14614       Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const
14615     {
14616       VULKAN_HPP_ASSERT(
14617         getDispatcher()->vkQueueSetPerformanceConfigurationINTEL &&
14618         "Function <vkQueueSetPerformanceConfigurationINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14619 
14620       VULKAN_HPP_NAMESPACE::Result result =
14621         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL(
14622           static_cast<VkQueue>( m_queue ), static_cast<VkPerformanceConfigurationINTEL>( configuration ) ) );
14623       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14624       {
14625         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" );
14626       }
14627     }
14628 
14629     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PerformanceValueINTEL
getPerformanceParameterINTEL(VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter) const14630                                            Device::getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter ) const
14631     {
14632       VULKAN_HPP_ASSERT(
14633         getDispatcher()->vkGetPerformanceParameterINTEL &&
14634         "Function <vkGetPerformanceParameterINTEL> needs extension <VK_INTEL_performance_query> enabled!" );
14635 
14636       VULKAN_HPP_NAMESPACE::PerformanceValueINTEL value;
14637       VULKAN_HPP_NAMESPACE::Result                result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14638         getDispatcher()->vkGetPerformanceParameterINTEL( static_cast<VkDevice>( m_device ),
14639                                                          static_cast<VkPerformanceParameterTypeINTEL>( parameter ),
14640                                                          reinterpret_cast<VkPerformanceValueINTEL *>( &value ) ) );
14641       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14642       {
14643         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" );
14644       }
14645       return value;
14646     }
14647 
14648     //=== VK_AMD_display_native_hdr ===
14649 
14650     VULKAN_HPP_INLINE void
setLocalDimmingAMD(VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable) const14651       SwapchainKHR::setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT
14652     {
14653       VULKAN_HPP_ASSERT( getDispatcher()->vkSetLocalDimmingAMD &&
14654                          "Function <vkSetLocalDimmingAMD> needs extension <VK_AMD_display_native_hdr> enabled!" );
14655 
14656       getDispatcher()->vkSetLocalDimmingAMD( static_cast<VkDevice>( m_device ),
14657                                              static_cast<VkSwapchainKHR>( m_swapchainKHR ),
14658                                              static_cast<VkBool32>( localDimmingEnable ) );
14659     }
14660 
14661     //=== VK_KHR_fragment_shading_rate ===
14662 
14663     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR>
getFragmentShadingRatesKHR() const14664                                            PhysicalDevice::getFragmentShadingRatesKHR() const
14665     {
14666       VULKAN_HPP_ASSERT(
14667         getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR &&
14668         "Function <vkGetPhysicalDeviceFragmentShadingRatesKHR> needs extension <VK_KHR_fragment_shading_rate> enabled!" );
14669 
14670       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR> fragmentShadingRates;
14671       uint32_t                                                                fragmentShadingRateCount;
14672       VULKAN_HPP_NAMESPACE::Result                                            result;
14673       do
14674       {
14675         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR(
14676           static_cast<VkPhysicalDevice>( m_physicalDevice ), &fragmentShadingRateCount, nullptr ) );
14677         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && fragmentShadingRateCount )
14678         {
14679           fragmentShadingRates.resize( fragmentShadingRateCount );
14680           result =
14681             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR(
14682               static_cast<VkPhysicalDevice>( m_physicalDevice ),
14683               &fragmentShadingRateCount,
14684               reinterpret_cast<VkPhysicalDeviceFragmentShadingRateKHR *>( fragmentShadingRates.data() ) ) );
14685           VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() );
14686         }
14687       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14688       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
14689            ( fragmentShadingRateCount < fragmentShadingRates.size() ) )
14690       {
14691         fragmentShadingRates.resize( fragmentShadingRateCount );
14692       }
14693       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14694       {
14695         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" );
14696       }
14697       return fragmentShadingRates;
14698     }
14699 
setFragmentShadingRateKHR(const Extent2D & fragmentSize,const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2]) const14700     VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR(
14701       const Extent2D &                                             fragmentSize,
14702       const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT
14703     {
14704       VULKAN_HPP_ASSERT(
14705         getDispatcher()->vkCmdSetFragmentShadingRateKHR &&
14706         "Function <vkCmdSetFragmentShadingRateKHR> needs extension <VK_KHR_fragment_shading_rate> enabled!" );
14707 
14708       getDispatcher()->vkCmdSetFragmentShadingRateKHR(
14709         static_cast<VkCommandBuffer>( m_commandBuffer ),
14710         reinterpret_cast<const VkExtent2D *>( &fragmentSize ),
14711         reinterpret_cast<const VkFragmentShadingRateCombinerOpKHR *>( combinerOps ) );
14712     }
14713 
14714     //=== VK_EXT_buffer_device_address ===
14715 
14716     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getBufferAddressEXT(const BufferDeviceAddressInfo & info) const14717                                            Device::getBufferAddressEXT( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
14718     {
14719       VULKAN_HPP_ASSERT(
14720         getDispatcher()->vkGetBufferDeviceAddressEXT &&
14721         "Function <vkGetBufferDeviceAddressEXT> needs extension <VK_EXT_buffer_device_address> enabled!" );
14722 
14723       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( getDispatcher()->vkGetBufferDeviceAddressEXT(
14724         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) ) );
14725     }
14726 
14727     //=== VK_EXT_tooling_info ===
14728 
14729     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT>
getToolPropertiesEXT() const14730                                            PhysicalDevice::getToolPropertiesEXT() const
14731     {
14732       VULKAN_HPP_ASSERT(
14733         getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT &&
14734         "Function <vkGetPhysicalDeviceToolPropertiesEXT> needs extension <VK_EXT_tooling_info> enabled!" );
14735 
14736       std::vector<VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT> toolProperties;
14737       uint32_t                                                           toolCount;
14738       VULKAN_HPP_NAMESPACE::Result                                       result;
14739       do
14740       {
14741         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT(
14742           static_cast<VkPhysicalDevice>( m_physicalDevice ), &toolCount, nullptr ) );
14743         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && toolCount )
14744         {
14745           toolProperties.resize( toolCount );
14746           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT(
14747             static_cast<VkPhysicalDevice>( m_physicalDevice ),
14748             &toolCount,
14749             reinterpret_cast<VkPhysicalDeviceToolPropertiesEXT *>( toolProperties.data() ) ) );
14750           VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() );
14751         }
14752       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14753       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( toolCount < toolProperties.size() ) )
14754       {
14755         toolProperties.resize( toolCount );
14756       }
14757       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14758       {
14759         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" );
14760       }
14761       return toolProperties;
14762     }
14763 
14764     //=== VK_NV_cooperative_matrix ===
14765 
14766     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV>
getCooperativeMatrixPropertiesNV() const14767                                            PhysicalDevice::getCooperativeMatrixPropertiesNV() const
14768     {
14769       VULKAN_HPP_ASSERT(
14770         getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV &&
14771         "Function <vkGetPhysicalDeviceCooperativeMatrixPropertiesNV> needs extension <VK_NV_cooperative_matrix> enabled!" );
14772 
14773       std::vector<VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV> properties;
14774       uint32_t                                                         propertyCount;
14775       VULKAN_HPP_NAMESPACE::Result                                     result;
14776       do
14777       {
14778         result =
14779           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
14780             static_cast<VkPhysicalDevice>( m_physicalDevice ), &propertyCount, nullptr ) );
14781         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && propertyCount )
14782         {
14783           properties.resize( propertyCount );
14784           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14785             getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
14786               static_cast<VkPhysicalDevice>( m_physicalDevice ),
14787               &propertyCount,
14788               reinterpret_cast<VkCooperativeMatrixPropertiesNV *>( properties.data() ) ) );
14789           VULKAN_HPP_ASSERT( propertyCount <= properties.size() );
14790         }
14791       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14792       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( propertyCount < properties.size() ) )
14793       {
14794         properties.resize( propertyCount );
14795       }
14796       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14797       {
14798         throwResultException( result,
14799                               VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" );
14800       }
14801       return properties;
14802     }
14803 
14804     //=== VK_NV_coverage_reduction_mode ===
14805 
14806     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV>
getSupportedFramebufferMixedSamplesCombinationsNV() const14807                                            PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV() const
14808     {
14809       VULKAN_HPP_ASSERT(
14810         getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV &&
14811         "Function <vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV> needs extension <VK_NV_coverage_reduction_mode> enabled!" );
14812 
14813       std::vector<VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV> combinations;
14814       uint32_t                                                                combinationCount;
14815       VULKAN_HPP_NAMESPACE::Result                                            result;
14816       do
14817       {
14818         result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14819           getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
14820             static_cast<VkPhysicalDevice>( m_physicalDevice ), &combinationCount, nullptr ) );
14821         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && combinationCount )
14822         {
14823           combinations.resize( combinationCount );
14824           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
14825             getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
14826               static_cast<VkPhysicalDevice>( m_physicalDevice ),
14827               &combinationCount,
14828               reinterpret_cast<VkFramebufferMixedSamplesCombinationNV *>( combinations.data() ) ) );
14829           VULKAN_HPP_ASSERT( combinationCount <= combinations.size() );
14830         }
14831       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14832       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( combinationCount < combinations.size() ) )
14833       {
14834         combinations.resize( combinationCount );
14835       }
14836       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14837       {
14838         throwResultException(
14839           result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" );
14840       }
14841       return combinations;
14842     }
14843 
14844 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
14845     //=== VK_EXT_full_screen_exclusive ===
14846 
14847     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR>
getSurfacePresentModes2EXT(const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const14848                                            PhysicalDevice::getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
14849     {
14850       VULKAN_HPP_ASSERT(
14851         getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT &&
14852         "Function <vkGetPhysicalDeviceSurfacePresentModes2EXT> needs extension <VK_EXT_full_screen_exclusive> enabled!" );
14853 
14854       std::vector<VULKAN_HPP_NAMESPACE::PresentModeKHR> presentModes;
14855       uint32_t                                          presentModeCount;
14856       VULKAN_HPP_NAMESPACE::Result                      result;
14857       do
14858       {
14859         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT(
14860           static_cast<VkPhysicalDevice>( m_physicalDevice ),
14861           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
14862           &presentModeCount,
14863           nullptr ) );
14864         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && presentModeCount )
14865         {
14866           presentModes.resize( presentModeCount );
14867           result =
14868             static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT(
14869               static_cast<VkPhysicalDevice>( m_physicalDevice ),
14870               reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
14871               &presentModeCount,
14872               reinterpret_cast<VkPresentModeKHR *>( presentModes.data() ) ) );
14873           VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() );
14874         }
14875       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
14876       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( presentModeCount < presentModes.size() ) )
14877       {
14878         presentModes.resize( presentModeCount );
14879       }
14880       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14881       {
14882         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" );
14883       }
14884       return presentModes;
14885     }
14886 
acquireFullScreenExclusiveModeEXT() const14887     VULKAN_HPP_INLINE void SwapchainKHR::acquireFullScreenExclusiveModeEXT() const
14888     {
14889       VULKAN_HPP_ASSERT(
14890         getDispatcher()->vkAcquireFullScreenExclusiveModeEXT &&
14891         "Function <vkAcquireFullScreenExclusiveModeEXT> needs extension <VK_EXT_full_screen_exclusive> enabled!" );
14892 
14893       VULKAN_HPP_NAMESPACE::Result result =
14894         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireFullScreenExclusiveModeEXT(
14895           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
14896       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14897       {
14898         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::acquireFullScreenExclusiveModeEXT" );
14899       }
14900     }
14901 
releaseFullScreenExclusiveModeEXT() const14902     VULKAN_HPP_INLINE void SwapchainKHR::releaseFullScreenExclusiveModeEXT() const
14903     {
14904       VULKAN_HPP_ASSERT(
14905         getDispatcher()->vkReleaseFullScreenExclusiveModeEXT &&
14906         "Function <vkReleaseFullScreenExclusiveModeEXT> needs extension <VK_EXT_full_screen_exclusive> enabled!" );
14907 
14908       VULKAN_HPP_NAMESPACE::Result result =
14909         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkReleaseFullScreenExclusiveModeEXT(
14910           static_cast<VkDevice>( m_device ), static_cast<VkSwapchainKHR>( m_swapchainKHR ) ) );
14911       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14912       {
14913         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::SwapchainKHR::releaseFullScreenExclusiveModeEXT" );
14914       }
14915     }
14916 
14917     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR
getGroupSurfacePresentModes2EXT(const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo) const14918                                            Device::getGroupSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
14919     {
14920       VULKAN_HPP_ASSERT(
14921         getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT &&
14922         "Function <vkGetDeviceGroupSurfacePresentModes2EXT> needs extension <VK_EXT_full_screen_exclusive> enabled!" );
14923 
14924       VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes;
14925       VULKAN_HPP_NAMESPACE::Result                         result =
14926         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT(
14927           static_cast<VkDevice>( m_device ),
14928           reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR *>( &surfaceInfo ),
14929           reinterpret_cast<VkDeviceGroupPresentModeFlagsKHR *>( &modes ) ) );
14930       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
14931       {
14932         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" );
14933       }
14934       return modes;
14935     }
14936 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
14937 
14938     //=== VK_KHR_buffer_device_address ===
14939 
14940     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceAddress
getBufferAddressKHR(const BufferDeviceAddressInfo & info) const14941                                            Device::getBufferAddressKHR( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
14942     {
14943       VULKAN_HPP_ASSERT(
14944         getDispatcher()->vkGetBufferDeviceAddressKHR &&
14945         "Function <vkGetBufferDeviceAddressKHR> needs extension <VK_KHR_buffer_device_address> enabled!" );
14946 
14947       return static_cast<VULKAN_HPP_NAMESPACE::DeviceAddress>( getDispatcher()->vkGetBufferDeviceAddressKHR(
14948         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) ) );
14949     }
14950 
14951     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getBufferOpaqueCaptureAddressKHR(const BufferDeviceAddressInfo & info) const14952                                            Device::getBufferOpaqueCaptureAddressKHR( const BufferDeviceAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
14953     {
14954       VULKAN_HPP_ASSERT(
14955         getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR &&
14956         "Function <vkGetBufferOpaqueCaptureAddressKHR> needs extension <VK_KHR_buffer_device_address> enabled!" );
14957 
14958       return getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR(
14959         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkBufferDeviceAddressInfo *>( &info ) );
14960     }
14961 
getMemoryOpaqueCaptureAddressKHR(const DeviceMemoryOpaqueCaptureAddressInfo & info) const14962     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddressKHR(
14963       const DeviceMemoryOpaqueCaptureAddressInfo & info ) const VULKAN_HPP_NOEXCEPT
14964     {
14965       VULKAN_HPP_ASSERT(
14966         getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR &&
14967         "Function <vkGetDeviceMemoryOpaqueCaptureAddressKHR> needs extension <VK_KHR_buffer_device_address> enabled!" );
14968 
14969       return getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR(
14970         static_cast<VkDevice>( m_device ), reinterpret_cast<const VkDeviceMemoryOpaqueCaptureAddressInfo *>( &info ) );
14971     }
14972 
14973     //=== VK_EXT_line_rasterization ===
14974 
setLineStippleEXT(uint32_t lineStippleFactor,uint16_t lineStipplePattern) const14975     VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor,
14976                                                              uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT
14977     {
14978       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEXT &&
14979                          "Function <vkCmdSetLineStippleEXT> needs extension <VK_EXT_line_rasterization> enabled!" );
14980 
14981       getDispatcher()->vkCmdSetLineStippleEXT(
14982         static_cast<VkCommandBuffer>( m_commandBuffer ), lineStippleFactor, lineStipplePattern );
14983     }
14984 
14985     //=== VK_EXT_host_query_reset ===
14986 
resetEXT(uint32_t firstQuery,uint32_t queryCount) const14987     VULKAN_HPP_INLINE void QueryPool::resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT
14988     {
14989       VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPoolEXT &&
14990                          "Function <vkResetQueryPoolEXT> needs extension <VK_EXT_host_query_reset> enabled!" );
14991 
14992       getDispatcher()->vkResetQueryPoolEXT(
14993         static_cast<VkDevice>( m_device ), static_cast<VkQueryPool>( m_queryPool ), firstQuery, queryCount );
14994     }
14995 
14996     //=== VK_EXT_extended_dynamic_state ===
14997 
14998     VULKAN_HPP_INLINE void
setCullModeEXT(VULKAN_HPP_NAMESPACE::CullModeFlags cullMode) const14999       CommandBuffer::setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT
15000     {
15001       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullModeEXT &&
15002                          "Function <vkCmdSetCullModeEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15003 
15004       getDispatcher()->vkCmdSetCullModeEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15005                                             static_cast<VkCullModeFlags>( cullMode ) );
15006     }
15007 
15008     VULKAN_HPP_INLINE void
setFrontFaceEXT(VULKAN_HPP_NAMESPACE::FrontFace frontFace) const15009       CommandBuffer::setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT
15010     {
15011       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFaceEXT &&
15012                          "Function <vkCmdSetFrontFaceEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15013 
15014       getDispatcher()->vkCmdSetFrontFaceEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15015                                              static_cast<VkFrontFace>( frontFace ) );
15016     }
15017 
setPrimitiveTopologyEXT(VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology) const15018     VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopologyEXT(
15019       VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT
15020     {
15021       VULKAN_HPP_ASSERT(
15022         getDispatcher()->vkCmdSetPrimitiveTopologyEXT &&
15023         "Function <vkCmdSetPrimitiveTopologyEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15024 
15025       getDispatcher()->vkCmdSetPrimitiveTopologyEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15026                                                      static_cast<VkPrimitiveTopology>( primitiveTopology ) );
15027     }
15028 
setViewportWithCountEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports) const15029     VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT(
15030       ArrayProxy<const VULKAN_HPP_NAMESPACE::Viewport> const & viewports ) const VULKAN_HPP_NOEXCEPT
15031     {
15032       VULKAN_HPP_ASSERT(
15033         getDispatcher()->vkCmdSetViewportWithCountEXT &&
15034         "Function <vkCmdSetViewportWithCountEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15035 
15036       getDispatcher()->vkCmdSetViewportWithCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15037                                                      viewports.size(),
15038                                                      reinterpret_cast<const VkViewport *>( viewports.data() ) );
15039     }
15040 
setScissorWithCountEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors) const15041     VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT(
15042       ArrayProxy<const VULKAN_HPP_NAMESPACE::Rect2D> const & scissors ) const VULKAN_HPP_NOEXCEPT
15043     {
15044       VULKAN_HPP_ASSERT(
15045         getDispatcher()->vkCmdSetScissorWithCountEXT &&
15046         "Function <vkCmdSetScissorWithCountEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15047 
15048       getDispatcher()->vkCmdSetScissorWithCountEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15049                                                     scissors.size(),
15050                                                     reinterpret_cast<const VkRect2D *>( scissors.data() ) );
15051     }
15052 
bindVertexBuffers2EXT(uint32_t firstBinding,ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const & buffers,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes,ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides) const15053     VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT(
15054       uint32_t                                                   firstBinding,
15055       ArrayProxy<const VULKAN_HPP_NAMESPACE::Buffer> const &     buffers,
15056       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & offsets,
15057       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & sizes,
15058       ArrayProxy<const VULKAN_HPP_NAMESPACE::DeviceSize> const & strides ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15059     {
15060       VULKAN_HPP_ASSERT(
15061         getDispatcher()->vkCmdBindVertexBuffers2EXT &&
15062         "Function <vkCmdBindVertexBuffers2EXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15063 
15064 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
15065       VULKAN_HPP_ASSERT( buffers.size() == offsets.size() );
15066       VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() );
15067       VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() );
15068 #  else
15069       if ( buffers.size() != offsets.size() )
15070       {
15071         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
15072                           "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != offsets.size()" );
15073       }
15074       if ( !sizes.empty() && buffers.size() != sizes.size() )
15075       {
15076         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
15077                           "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != sizes.size()" );
15078       }
15079       if ( !strides.empty() && buffers.size() != strides.size() )
15080       {
15081         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
15082                           "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != strides.size()" );
15083       }
15084 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
15085 
15086       getDispatcher()->vkCmdBindVertexBuffers2EXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15087                                                    firstBinding,
15088                                                    buffers.size(),
15089                                                    reinterpret_cast<const VkBuffer *>( buffers.data() ),
15090                                                    reinterpret_cast<const VkDeviceSize *>( offsets.data() ),
15091                                                    reinterpret_cast<const VkDeviceSize *>( sizes.data() ),
15092                                                    reinterpret_cast<const VkDeviceSize *>( strides.data() ) );
15093     }
15094 
15095     VULKAN_HPP_INLINE void
setDepthTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable) const15096       CommandBuffer::setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT
15097     {
15098       VULKAN_HPP_ASSERT(
15099         getDispatcher()->vkCmdSetDepthTestEnableEXT &&
15100         "Function <vkCmdSetDepthTestEnableEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15101 
15102       getDispatcher()->vkCmdSetDepthTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15103                                                    static_cast<VkBool32>( depthTestEnable ) );
15104     }
15105 
15106     VULKAN_HPP_INLINE void
setDepthWriteEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable) const15107       CommandBuffer::setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT
15108     {
15109       VULKAN_HPP_ASSERT(
15110         getDispatcher()->vkCmdSetDepthWriteEnableEXT &&
15111         "Function <vkCmdSetDepthWriteEnableEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15112 
15113       getDispatcher()->vkCmdSetDepthWriteEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15114                                                     static_cast<VkBool32>( depthWriteEnable ) );
15115     }
15116 
15117     VULKAN_HPP_INLINE void
setDepthCompareOpEXT(VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp) const15118       CommandBuffer::setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT
15119     {
15120       VULKAN_HPP_ASSERT(
15121         getDispatcher()->vkCmdSetDepthCompareOpEXT &&
15122         "Function <vkCmdSetDepthCompareOpEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15123 
15124       getDispatcher()->vkCmdSetDepthCompareOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15125                                                   static_cast<VkCompareOp>( depthCompareOp ) );
15126     }
15127 
setDepthBoundsTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable) const15128     VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT(
15129       VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT
15130     {
15131       VULKAN_HPP_ASSERT(
15132         getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT &&
15133         "Function <vkCmdSetDepthBoundsTestEnableEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15134 
15135       getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15136                                                          static_cast<VkBool32>( depthBoundsTestEnable ) );
15137     }
15138 
15139     VULKAN_HPP_INLINE void
setStencilTestEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable) const15140       CommandBuffer::setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT
15141     {
15142       VULKAN_HPP_ASSERT(
15143         getDispatcher()->vkCmdSetStencilTestEnableEXT &&
15144         "Function <vkCmdSetStencilTestEnableEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15145 
15146       getDispatcher()->vkCmdSetStencilTestEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15147                                                      static_cast<VkBool32>( stencilTestEnable ) );
15148     }
15149 
15150     VULKAN_HPP_INLINE void
setStencilOpEXT(VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,VULKAN_HPP_NAMESPACE::StencilOp failOp,VULKAN_HPP_NAMESPACE::StencilOp passOp,VULKAN_HPP_NAMESPACE::StencilOp depthFailOp,VULKAN_HPP_NAMESPACE::CompareOp compareOp) const15151       CommandBuffer::setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask,
15152                                       VULKAN_HPP_NAMESPACE::StencilOp        failOp,
15153                                       VULKAN_HPP_NAMESPACE::StencilOp        passOp,
15154                                       VULKAN_HPP_NAMESPACE::StencilOp        depthFailOp,
15155                                       VULKAN_HPP_NAMESPACE::CompareOp        compareOp ) const VULKAN_HPP_NOEXCEPT
15156     {
15157       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOpEXT &&
15158                          "Function <vkCmdSetStencilOpEXT> needs extension <VK_EXT_extended_dynamic_state> enabled!" );
15159 
15160       getDispatcher()->vkCmdSetStencilOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
15161                                              static_cast<VkStencilFaceFlags>( faceMask ),
15162                                              static_cast<VkStencilOp>( failOp ),
15163                                              static_cast<VkStencilOp>( passOp ),
15164                                              static_cast<VkStencilOp>( depthFailOp ),
15165                                              static_cast<VkCompareOp>( compareOp ) );
15166     }
15167 
15168     //=== VK_KHR_deferred_host_operations ===
15169 
getMaxConcurrency() const15170     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t DeferredOperationKHR::getMaxConcurrency() const VULKAN_HPP_NOEXCEPT
15171     {
15172       VULKAN_HPP_ASSERT(
15173         getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR &&
15174         "Function <vkGetDeferredOperationMaxConcurrencyKHR> needs extension <VK_KHR_deferred_host_operations> enabled!" );
15175 
15176       return getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR(
15177         static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) );
15178     }
15179 
15180     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result
getResult() const15181                                            DeferredOperationKHR::getResult() const VULKAN_HPP_NOEXCEPT
15182     {
15183       VULKAN_HPP_ASSERT(
15184         getDispatcher()->vkGetDeferredOperationResultKHR &&
15185         "Function <vkGetDeferredOperationResultKHR> needs extension <VK_KHR_deferred_host_operations> enabled!" );
15186 
15187       return static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeferredOperationResultKHR(
15188         static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) ) );
15189     }
15190 
join() const15191     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Result DeferredOperationKHR::join() const
15192     {
15193       VULKAN_HPP_ASSERT(
15194         getDispatcher()->vkDeferredOperationJoinKHR &&
15195         "Function <vkDeferredOperationJoinKHR> needs extension <VK_KHR_deferred_host_operations> enabled!" );
15196 
15197       VULKAN_HPP_NAMESPACE::Result result =
15198         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkDeferredOperationJoinKHR(
15199           static_cast<VkDevice>( m_device ), static_cast<VkDeferredOperationKHR>( m_deferredOperationKHR ) ) );
15200       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
15201            ( result != VULKAN_HPP_NAMESPACE::Result::eThreadDoneKHR ) &&
15202            ( result != VULKAN_HPP_NAMESPACE::Result::eThreadIdleKHR ) )
15203       {
15204         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DeferredOperationKHR::join" );
15205       }
15206       return result;
15207     }
15208 
15209     //=== VK_KHR_pipeline_executable_properties ===
15210 
15211     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR>
getPipelineExecutablePropertiesKHR(const PipelineInfoKHR & pipelineInfo) const15212                                            Device::getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo ) const
15213     {
15214       VULKAN_HPP_ASSERT(
15215         getDispatcher()->vkGetPipelineExecutablePropertiesKHR &&
15216         "Function <vkGetPipelineExecutablePropertiesKHR> needs extension <VK_KHR_pipeline_executable_properties> enabled!" );
15217 
15218       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR> properties;
15219       uint32_t                                                           executableCount;
15220       VULKAN_HPP_NAMESPACE::Result                                       result;
15221       do
15222       {
15223         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutablePropertiesKHR(
15224           static_cast<VkDevice>( m_device ),
15225           reinterpret_cast<const VkPipelineInfoKHR *>( &pipelineInfo ),
15226           &executableCount,
15227           nullptr ) );
15228         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && executableCount )
15229         {
15230           properties.resize( executableCount );
15231           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutablePropertiesKHR(
15232             static_cast<VkDevice>( m_device ),
15233             reinterpret_cast<const VkPipelineInfoKHR *>( &pipelineInfo ),
15234             &executableCount,
15235             reinterpret_cast<VkPipelineExecutablePropertiesKHR *>( properties.data() ) ) );
15236           VULKAN_HPP_ASSERT( executableCount <= properties.size() );
15237         }
15238       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15239       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( executableCount < properties.size() ) )
15240       {
15241         properties.resize( executableCount );
15242       }
15243       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15244       {
15245         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" );
15246       }
15247       return properties;
15248     }
15249 
15250     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR>
getPipelineExecutableStatisticsKHR(const PipelineExecutableInfoKHR & executableInfo) const15251                                            Device::getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo ) const
15252     {
15253       VULKAN_HPP_ASSERT(
15254         getDispatcher()->vkGetPipelineExecutableStatisticsKHR &&
15255         "Function <vkGetPipelineExecutableStatisticsKHR> needs extension <VK_KHR_pipeline_executable_properties> enabled!" );
15256 
15257       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR> statistics;
15258       uint32_t                                                          statisticCount;
15259       VULKAN_HPP_NAMESPACE::Result                                      result;
15260       do
15261       {
15262         result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutableStatisticsKHR(
15263           static_cast<VkDevice>( m_device ),
15264           reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
15265           &statisticCount,
15266           nullptr ) );
15267         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && statisticCount )
15268         {
15269           statistics.resize( statisticCount );
15270           result = static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutableStatisticsKHR(
15271             static_cast<VkDevice>( m_device ),
15272             reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
15273             &statisticCount,
15274             reinterpret_cast<VkPipelineExecutableStatisticKHR *>( statistics.data() ) ) );
15275           VULKAN_HPP_ASSERT( statisticCount <= statistics.size() );
15276         }
15277       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15278       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && ( statisticCount < statistics.size() ) )
15279       {
15280         statistics.resize( statisticCount );
15281       }
15282       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15283       {
15284         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" );
15285       }
15286       return statistics;
15287     }
15288 
15289     VULKAN_HPP_NODISCARD
15290       VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR>
getPipelineExecutableInternalRepresentationsKHR(const PipelineExecutableInfoKHR & executableInfo) const15291                         Device::getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo ) const
15292     {
15293       VULKAN_HPP_ASSERT(
15294         getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR &&
15295         "Function <vkGetPipelineExecutableInternalRepresentationsKHR> needs extension <VK_KHR_pipeline_executable_properties> enabled!" );
15296 
15297       std::vector<VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR> internalRepresentations;
15298       uint32_t                                                                       internalRepresentationCount;
15299       VULKAN_HPP_NAMESPACE::Result                                                   result;
15300       do
15301       {
15302         result =
15303           static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR(
15304             static_cast<VkDevice>( m_device ),
15305             reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
15306             &internalRepresentationCount,
15307             nullptr ) );
15308         if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) && internalRepresentationCount )
15309         {
15310           internalRepresentations.resize( internalRepresentationCount );
15311           result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15312             getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR(
15313               static_cast<VkDevice>( m_device ),
15314               reinterpret_cast<const VkPipelineExecutableInfoKHR *>( &executableInfo ),
15315               &internalRepresentationCount,
15316               reinterpret_cast<VkPipelineExecutableInternalRepresentationKHR *>( internalRepresentations.data() ) ) );
15317           VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() );
15318         }
15319       } while ( result == VULKAN_HPP_NAMESPACE::Result::eIncomplete );
15320       if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
15321            ( internalRepresentationCount < internalRepresentations.size() ) )
15322       {
15323         internalRepresentations.resize( internalRepresentationCount );
15324       }
15325       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15326       {
15327         throwResultException( result,
15328                               VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableInternalRepresentationsKHR" );
15329       }
15330       return internalRepresentations;
15331     }
15332 
15333     //=== VK_NV_device_generated_commands ===
15334 
15335     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2
getGeneratedCommandsMemoryRequirementsNV(const GeneratedCommandsMemoryRequirementsInfoNV & info) const15336                                            Device::getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info ) const
15337       VULKAN_HPP_NOEXCEPT
15338     {
15339       VULKAN_HPP_ASSERT(
15340         getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV &&
15341         "Function <vkGetGeneratedCommandsMemoryRequirementsNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15342 
15343       VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements;
15344       getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV(
15345         static_cast<VkDevice>( m_device ),
15346         reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( &info ),
15347         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
15348       return memoryRequirements;
15349     }
15350 
15351     template <typename X, typename Y, typename... Z>
getGeneratedCommandsMemoryRequirementsNV(const GeneratedCommandsMemoryRequirementsInfoNV & info) const15352     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain<X, Y, Z...> Device::getGeneratedCommandsMemoryRequirementsNV(
15353       const GeneratedCommandsMemoryRequirementsInfoNV & info ) const VULKAN_HPP_NOEXCEPT
15354     {
15355       VULKAN_HPP_ASSERT(
15356         getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV &&
15357         "Function <vkGetGeneratedCommandsMemoryRequirementsNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15358 
15359       StructureChain<X, Y, Z...>                  structureChain;
15360       VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements =
15361         structureChain.template get<VULKAN_HPP_NAMESPACE::MemoryRequirements2>();
15362       getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV(
15363         static_cast<VkDevice>( m_device ),
15364         reinterpret_cast<const VkGeneratedCommandsMemoryRequirementsInfoNV *>( &info ),
15365         reinterpret_cast<VkMemoryRequirements2 *>( &memoryRequirements ) );
15366       return structureChain;
15367     }
15368 
preprocessGeneratedCommandsNV(const GeneratedCommandsInfoNV & generatedCommandsInfo) const15369     VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV(
15370       const GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
15371     {
15372       VULKAN_HPP_ASSERT(
15373         getDispatcher()->vkCmdPreprocessGeneratedCommandsNV &&
15374         "Function <vkCmdPreprocessGeneratedCommandsNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15375 
15376       getDispatcher()->vkCmdPreprocessGeneratedCommandsNV(
15377         static_cast<VkCommandBuffer>( m_commandBuffer ),
15378         reinterpret_cast<const VkGeneratedCommandsInfoNV *>( &generatedCommandsInfo ) );
15379     }
15380 
executeGeneratedCommandsNV(VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed,const GeneratedCommandsInfoNV & generatedCommandsInfo) const15381     VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV(
15382       VULKAN_HPP_NAMESPACE::Bool32    isPreprocessed,
15383       const GeneratedCommandsInfoNV & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT
15384     {
15385       VULKAN_HPP_ASSERT(
15386         getDispatcher()->vkCmdExecuteGeneratedCommandsNV &&
15387         "Function <vkCmdExecuteGeneratedCommandsNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15388 
15389       getDispatcher()->vkCmdExecuteGeneratedCommandsNV(
15390         static_cast<VkCommandBuffer>( m_commandBuffer ),
15391         static_cast<VkBool32>( isPreprocessed ),
15392         reinterpret_cast<const VkGeneratedCommandsInfoNV *>( &generatedCommandsInfo ) );
15393     }
15394 
15395     VULKAN_HPP_INLINE void
bindPipelineShaderGroupNV(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,VULKAN_HPP_NAMESPACE::Pipeline pipeline,uint32_t groupIndex) const15396       CommandBuffer::bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint,
15397                                                 VULKAN_HPP_NAMESPACE::Pipeline          pipeline,
15398                                                 uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT
15399     {
15400       VULKAN_HPP_ASSERT(
15401         getDispatcher()->vkCmdBindPipelineShaderGroupNV &&
15402         "Function <vkCmdBindPipelineShaderGroupNV> needs extension <VK_NV_device_generated_commands> enabled!" );
15403 
15404       getDispatcher()->vkCmdBindPipelineShaderGroupNV( static_cast<VkCommandBuffer>( m_commandBuffer ),
15405                                                        static_cast<VkPipelineBindPoint>( pipelineBindPoint ),
15406                                                        static_cast<VkPipeline>( pipeline ),
15407                                                        groupIndex );
15408     }
15409 
15410     //=== VK_EXT_acquire_drm_display ===
15411 
acquireDrmDisplayEXT(int32_t drmFd,VULKAN_HPP_NAMESPACE::DisplayKHR display) const15412     VULKAN_HPP_INLINE void PhysicalDevice::acquireDrmDisplayEXT( int32_t                          drmFd,
15413                                                                  VULKAN_HPP_NAMESPACE::DisplayKHR display ) const
15414     {
15415       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireDrmDisplayEXT &&
15416                          "Function <vkAcquireDrmDisplayEXT> needs extension <VK_EXT_acquire_drm_display> enabled!" );
15417 
15418       VULKAN_HPP_NAMESPACE::Result result =
15419         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireDrmDisplayEXT(
15420           static_cast<VkPhysicalDevice>( m_physicalDevice ), drmFd, static_cast<VkDisplayKHR>( display ) ) );
15421       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15422       {
15423         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireDrmDisplayEXT" );
15424       }
15425     }
15426 
15427     //=== VK_EXT_private_data ===
15428 
setPrivateDataEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_,uint64_t objectHandle,VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot,uint64_t data) const15429     VULKAN_HPP_INLINE void Device::setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType         objectType_,
15430                                                       uint64_t                                 objectHandle,
15431                                                       VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot,
15432                                                       uint64_t                                 data ) const
15433     {
15434       VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateDataEXT &&
15435                          "Function <vkSetPrivateDataEXT> needs extension <VK_EXT_private_data> enabled!" );
15436 
15437       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15438         getDispatcher()->vkSetPrivateDataEXT( static_cast<VkDevice>( m_device ),
15439                                               static_cast<VkObjectType>( objectType_ ),
15440                                               objectHandle,
15441                                               static_cast<VkPrivateDataSlotEXT>( privateDataSlot ),
15442                                               data ) );
15443       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15444       {
15445         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateDataEXT" );
15446       }
15447     }
15448 
15449     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t
getPrivateDataEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_,uint64_t objectHandle,VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot) const15450                                            Device::getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType         objectType_,
15451                                  uint64_t                                 objectHandle,
15452                                  VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot ) const VULKAN_HPP_NOEXCEPT
15453     {
15454       VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateDataEXT &&
15455                          "Function <vkGetPrivateDataEXT> needs extension <VK_EXT_private_data> enabled!" );
15456 
15457       uint64_t data;
15458       getDispatcher()->vkGetPrivateDataEXT( static_cast<VkDevice>( m_device ),
15459                                             static_cast<VkObjectType>( objectType_ ),
15460                                             objectHandle,
15461                                             static_cast<VkPrivateDataSlotEXT>( privateDataSlot ),
15462                                             &data );
15463       return data;
15464     }
15465 
15466 #  if defined( VK_ENABLE_BETA_EXTENSIONS )
15467     //=== VK_KHR_video_encode_queue ===
15468 
15469     VULKAN_HPP_INLINE void
encodeVideoKHR(const VideoEncodeInfoKHR & encodeInfo) const15470       CommandBuffer::encodeVideoKHR( const VideoEncodeInfoKHR & encodeInfo ) const VULKAN_HPP_NOEXCEPT
15471     {
15472       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEncodeVideoKHR &&
15473                          "Function <vkCmdEncodeVideoKHR> needs extension <VK_KHR_video_encode_queue> enabled!" );
15474 
15475       getDispatcher()->vkCmdEncodeVideoKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15476                                             reinterpret_cast<const VkVideoEncodeInfoKHR *>( &encodeInfo ) );
15477     }
15478 #  endif /*VK_ENABLE_BETA_EXTENSIONS*/
15479 
15480     //=== VK_KHR_synchronization2 ===
15481 
15482     VULKAN_HPP_INLINE void
setEvent2KHR(VULKAN_HPP_NAMESPACE::Event event,const DependencyInfoKHR & dependencyInfo) const15483       CommandBuffer::setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event,
15484                                    const DependencyInfoKHR &   dependencyInfo ) const VULKAN_HPP_NOEXCEPT
15485     {
15486       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2KHR &&
15487                          "Function <vkCmdSetEvent2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15488 
15489       getDispatcher()->vkCmdSetEvent2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15490                                           static_cast<VkEvent>( event ),
15491                                           reinterpret_cast<const VkDependencyInfoKHR *>( &dependencyInfo ) );
15492     }
15493 
15494     VULKAN_HPP_INLINE void
resetEvent2KHR(VULKAN_HPP_NAMESPACE::Event event,VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask) const15495       CommandBuffer::resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event                  event,
15496                                      VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask ) const VULKAN_HPP_NOEXCEPT
15497     {
15498       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2KHR &&
15499                          "Function <vkCmdResetEvent2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15500 
15501       getDispatcher()->vkCmdResetEvent2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15502                                             static_cast<VkEvent>( event ),
15503                                             static_cast<VkPipelineStageFlags2KHR>( stageMask ) );
15504     }
15505 
15506     VULKAN_HPP_INLINE void
waitEvents2KHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const & events,ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfoKHR> const & dependencyInfos) const15507       CommandBuffer::waitEvents2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::Event> const &             events,
15508                                      ArrayProxy<const VULKAN_HPP_NAMESPACE::DependencyInfoKHR> const & dependencyInfos )
15509         const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS
15510     {
15511       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2KHR &&
15512                          "Function <vkCmdWaitEvents2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15513 
15514 #  ifdef VULKAN_HPP_NO_EXCEPTIONS
15515       VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() );
15516 #  else
15517       if ( events.size() != dependencyInfos.size() )
15518       {
15519         throw LogicError( VULKAN_HPP_NAMESPACE_STRING
15520                           "::CommandBuffer::waitEvents2KHR: events.size() != dependencyInfos.size()" );
15521       }
15522 #  endif /*VULKAN_HPP_NO_EXCEPTIONS*/
15523 
15524       getDispatcher()->vkCmdWaitEvents2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15525                                             events.size(),
15526                                             reinterpret_cast<const VkEvent *>( events.data() ),
15527                                             reinterpret_cast<const VkDependencyInfoKHR *>( dependencyInfos.data() ) );
15528     }
15529 
15530     VULKAN_HPP_INLINE void
pipelineBarrier2KHR(const DependencyInfoKHR & dependencyInfo) const15531       CommandBuffer::pipelineBarrier2KHR( const DependencyInfoKHR & dependencyInfo ) const VULKAN_HPP_NOEXCEPT
15532     {
15533       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2KHR &&
15534                          "Function <vkCmdPipelineBarrier2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15535 
15536       getDispatcher()->vkCmdPipelineBarrier2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15537                                                  reinterpret_cast<const VkDependencyInfoKHR *>( &dependencyInfo ) );
15538     }
15539 
writeTimestamp2KHR(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,VULKAN_HPP_NAMESPACE::QueryPool queryPool,uint32_t query) const15540     VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,
15541                                                               VULKAN_HPP_NAMESPACE::QueryPool              queryPool,
15542                                                               uint32_t query ) const VULKAN_HPP_NOEXCEPT
15543     {
15544       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2KHR &&
15545                          "Function <vkCmdWriteTimestamp2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15546 
15547       getDispatcher()->vkCmdWriteTimestamp2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15548                                                 static_cast<VkPipelineStageFlags2KHR>( stage ),
15549                                                 static_cast<VkQueryPool>( queryPool ),
15550                                                 query );
15551     }
15552 
submit2KHR(ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2KHR> const & submits,VULKAN_HPP_NAMESPACE::Fence fence) const15553     VULKAN_HPP_INLINE void Queue::submit2KHR( ArrayProxy<const VULKAN_HPP_NAMESPACE::SubmitInfo2KHR> const & submits,
15554                                               VULKAN_HPP_NAMESPACE::Fence fence ) const
15555     {
15556       VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2KHR &&
15557                          "Function <vkQueueSubmit2KHR> needs extension <VK_KHR_synchronization2> enabled!" );
15558 
15559       VULKAN_HPP_NAMESPACE::Result result = static_cast<VULKAN_HPP_NAMESPACE::Result>(
15560         getDispatcher()->vkQueueSubmit2KHR( static_cast<VkQueue>( m_queue ),
15561                                             submits.size(),
15562                                             reinterpret_cast<const VkSubmitInfo2KHR *>( submits.data() ),
15563                                             static_cast<VkFence>( fence ) ) );
15564       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15565       {
15566         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2KHR" );
15567       }
15568     }
15569 
writeBufferMarker2AMD(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,VULKAN_HPP_NAMESPACE::Buffer dstBuffer,VULKAN_HPP_NAMESPACE::DeviceSize dstOffset,uint32_t marker) const15570     VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage,
15571                                                                  VULKAN_HPP_NAMESPACE::Buffer                 dstBuffer,
15572                                                                  VULKAN_HPP_NAMESPACE::DeviceSize             dstOffset,
15573                                                                  uint32_t marker ) const VULKAN_HPP_NOEXCEPT
15574     {
15575       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarker2AMD &&
15576                          "Function <vkCmdWriteBufferMarker2AMD> needs extension <VK_KHR_synchronization2> enabled!" );
15577 
15578       getDispatcher()->vkCmdWriteBufferMarker2AMD( static_cast<VkCommandBuffer>( m_commandBuffer ),
15579                                                    static_cast<VkPipelineStageFlags2KHR>( stage ),
15580                                                    static_cast<VkBuffer>( dstBuffer ),
15581                                                    static_cast<VkDeviceSize>( dstOffset ),
15582                                                    marker );
15583     }
15584 
15585     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV>
getCheckpointData2NV() const15586                                            Queue::getCheckpointData2NV() const VULKAN_HPP_NOEXCEPT
15587     {
15588       VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointData2NV &&
15589                          "Function <vkGetQueueCheckpointData2NV> needs extension <VK_KHR_synchronization2> enabled!" );
15590 
15591       uint32_t checkpointDataCount;
15592       getDispatcher()->vkGetQueueCheckpointData2NV( static_cast<VkQueue>( m_queue ), &checkpointDataCount, nullptr );
15593       std::vector<VULKAN_HPP_NAMESPACE::CheckpointData2NV> checkpointData( checkpointDataCount );
15594       getDispatcher()->vkGetQueueCheckpointData2NV( static_cast<VkQueue>( m_queue ),
15595                                                     &checkpointDataCount,
15596                                                     reinterpret_cast<VkCheckpointData2NV *>( checkpointData.data() ) );
15597       VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() );
15598       return checkpointData;
15599     }
15600 
15601     //=== VK_NV_fragment_shading_rate_enums ===
15602 
setFragmentShadingRateEnumNV(VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate,const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2]) const15603     VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateEnumNV(
15604       VULKAN_HPP_NAMESPACE::FragmentShadingRateNV                  shadingRate,
15605       const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT
15606     {
15607       VULKAN_HPP_ASSERT(
15608         getDispatcher()->vkCmdSetFragmentShadingRateEnumNV &&
15609         "Function <vkCmdSetFragmentShadingRateEnumNV> needs extension <VK_NV_fragment_shading_rate_enums> enabled!" );
15610 
15611       getDispatcher()->vkCmdSetFragmentShadingRateEnumNV(
15612         static_cast<VkCommandBuffer>( m_commandBuffer ),
15613         static_cast<VkFragmentShadingRateNV>( shadingRate ),
15614         reinterpret_cast<const VkFragmentShadingRateCombinerOpKHR *>( combinerOps ) );
15615     }
15616 
15617     //=== VK_KHR_copy_commands2 ===
15618 
15619     VULKAN_HPP_INLINE void
copyBuffer2KHR(const CopyBufferInfo2KHR & copyBufferInfo) const15620       CommandBuffer::copyBuffer2KHR( const CopyBufferInfo2KHR & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT
15621     {
15622       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2KHR &&
15623                          "Function <vkCmdCopyBuffer2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15624 
15625       getDispatcher()->vkCmdCopyBuffer2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15626                                             reinterpret_cast<const VkCopyBufferInfo2KHR *>( &copyBufferInfo ) );
15627     }
15628 
15629     VULKAN_HPP_INLINE void
copyImage2KHR(const CopyImageInfo2KHR & copyImageInfo) const15630       CommandBuffer::copyImage2KHR( const CopyImageInfo2KHR & copyImageInfo ) const VULKAN_HPP_NOEXCEPT
15631     {
15632       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2KHR &&
15633                          "Function <vkCmdCopyImage2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15634 
15635       getDispatcher()->vkCmdCopyImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15636                                            reinterpret_cast<const VkCopyImageInfo2KHR *>( &copyImageInfo ) );
15637     }
15638 
copyBufferToImage2KHR(const CopyBufferToImageInfo2KHR & copyBufferToImageInfo) const15639     VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR(
15640       const CopyBufferToImageInfo2KHR & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT
15641     {
15642       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2KHR &&
15643                          "Function <vkCmdCopyBufferToImage2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15644 
15645       getDispatcher()->vkCmdCopyBufferToImage2KHR(
15646         static_cast<VkCommandBuffer>( m_commandBuffer ),
15647         reinterpret_cast<const VkCopyBufferToImageInfo2KHR *>( &copyBufferToImageInfo ) );
15648     }
15649 
copyImageToBuffer2KHR(const CopyImageToBufferInfo2KHR & copyImageToBufferInfo) const15650     VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR(
15651       const CopyImageToBufferInfo2KHR & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT
15652     {
15653       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2KHR &&
15654                          "Function <vkCmdCopyImageToBuffer2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15655 
15656       getDispatcher()->vkCmdCopyImageToBuffer2KHR(
15657         static_cast<VkCommandBuffer>( m_commandBuffer ),
15658         reinterpret_cast<const VkCopyImageToBufferInfo2KHR *>( &copyImageToBufferInfo ) );
15659     }
15660 
15661     VULKAN_HPP_INLINE void
blitImage2KHR(const BlitImageInfo2KHR & blitImageInfo) const15662       CommandBuffer::blitImage2KHR( const BlitImageInfo2KHR & blitImageInfo ) const VULKAN_HPP_NOEXCEPT
15663     {
15664       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2KHR &&
15665                          "Function <vkCmdBlitImage2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15666 
15667       getDispatcher()->vkCmdBlitImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15668                                            reinterpret_cast<const VkBlitImageInfo2KHR *>( &blitImageInfo ) );
15669     }
15670 
15671     VULKAN_HPP_INLINE void
resolveImage2KHR(const ResolveImageInfo2KHR & resolveImageInfo) const15672       CommandBuffer::resolveImage2KHR( const ResolveImageInfo2KHR & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT
15673     {
15674       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2KHR &&
15675                          "Function <vkCmdResolveImage2KHR> needs extension <VK_KHR_copy_commands2> enabled!" );
15676 
15677       getDispatcher()->vkCmdResolveImage2KHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15678                                               reinterpret_cast<const VkResolveImageInfo2KHR *>( &resolveImageInfo ) );
15679     }
15680 
15681 #  if defined( VK_USE_PLATFORM_WIN32_KHR )
15682     //=== VK_NV_acquire_winrt_display ===
15683 
acquireWinrtNV() const15684     VULKAN_HPP_INLINE void DisplayKHR::acquireWinrtNV() const
15685     {
15686       VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireWinrtDisplayNV &&
15687                          "Function <vkAcquireWinrtDisplayNV> needs extension <VK_NV_acquire_winrt_display> enabled!" );
15688 
15689       VULKAN_HPP_NAMESPACE::Result result =
15690         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkAcquireWinrtDisplayNV(
15691           static_cast<VkPhysicalDevice>( m_physicalDevice ), static_cast<VkDisplayKHR>( m_displayKHR ) ) );
15692       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15693       {
15694         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::DisplayKHR::acquireWinrtNV" );
15695       }
15696     }
15697 #  endif /*VK_USE_PLATFORM_WIN32_KHR*/
15698 
15699 #  if defined( VK_USE_PLATFORM_DIRECTFB_EXT )
15700     //=== VK_EXT_directfb_surface ===
15701 
15702     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getDirectFBPresentationSupportEXT(uint32_t queueFamilyIndex,IDirectFB & dfb) const15703                                            PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t    queueFamilyIndex,
15704                                                          IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT
15705     {
15706       VULKAN_HPP_ASSERT(
15707         getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT &&
15708         "Function <vkGetPhysicalDeviceDirectFBPresentationSupportEXT> needs extension <VK_EXT_directfb_surface> enabled!" );
15709 
15710       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>(
15711         getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT(
15712           static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &dfb ) );
15713     }
15714 #  endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/
15715 
15716     //=== VK_KHR_ray_tracing_pipeline ===
15717 
15718     VULKAN_HPP_INLINE void
traceRaysKHR(const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,const StridedDeviceAddressRegionKHR & missShaderBindingTable,const StridedDeviceAddressRegionKHR & hitShaderBindingTable,const StridedDeviceAddressRegionKHR & callableShaderBindingTable,uint32_t width,uint32_t height,uint32_t depth) const15719       CommandBuffer::traceRaysKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
15720                                    const StridedDeviceAddressRegionKHR & missShaderBindingTable,
15721                                    const StridedDeviceAddressRegionKHR & hitShaderBindingTable,
15722                                    const StridedDeviceAddressRegionKHR & callableShaderBindingTable,
15723                                    uint32_t                              width,
15724                                    uint32_t                              height,
15725                                    uint32_t                              depth ) const VULKAN_HPP_NOEXCEPT
15726     {
15727       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysKHR &&
15728                          "Function <vkCmdTraceRaysKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15729 
15730       getDispatcher()->vkCmdTraceRaysKHR(
15731         static_cast<VkCommandBuffer>( m_commandBuffer ),
15732         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &raygenShaderBindingTable ),
15733         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &missShaderBindingTable ),
15734         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &hitShaderBindingTable ),
15735         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &callableShaderBindingTable ),
15736         width,
15737         height,
15738         depth );
15739     }
15740 
15741     template <typename T>
15742     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T>
getRayTracingShaderGroupHandlesKHR(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const15743                                            Pipeline::getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
15744     {
15745       VULKAN_HPP_ASSERT(
15746         getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR &&
15747         "Function <vkGetRayTracingShaderGroupHandlesKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15748 
15749       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
15750       std::vector<T> data( dataSize / sizeof( T ) );
15751       Result         result = static_cast<Result>(
15752         getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
15753                                                                static_cast<VkPipeline>( m_pipeline ),
15754                                                                firstGroup,
15755                                                                groupCount,
15756                                                                data.size() * sizeof( T ),
15757                                                                reinterpret_cast<void *>( data.data() ) ) );
15758       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15759       {
15760         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesKHR" );
15761       }
15762       return data;
15763     }
15764 
15765     template <typename T>
getRayTracingShaderGroupHandleKHR(uint32_t firstGroup,uint32_t groupCount) const15766     VULKAN_HPP_NODISCARD T Pipeline::getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const
15767     {
15768       T      data;
15769       Result result = static_cast<Result>(
15770         getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
15771                                                                static_cast<VkPipeline>( m_pipeline ),
15772                                                                firstGroup,
15773                                                                groupCount,
15774                                                                sizeof( T ),
15775                                                                reinterpret_cast<void *>( &data ) ) );
15776       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15777       {
15778         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleKHR" );
15779       }
15780       return data;
15781     }
15782 
15783     template <typename T>
getRayTracingCaptureReplayShaderGroupHandlesKHR(uint32_t firstGroup,uint32_t groupCount,size_t dataSize) const15784     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector<T> Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR(
15785       uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const
15786     {
15787       VULKAN_HPP_ASSERT(
15788         getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR &&
15789         "Function <vkGetRayTracingCaptureReplayShaderGroupHandlesKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15790 
15791       VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 );
15792       std::vector<T> data( dataSize / sizeof( T ) );
15793       Result         result = static_cast<Result>(
15794         getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
15795                                                                             static_cast<VkPipeline>( m_pipeline ),
15796                                                                             firstGroup,
15797                                                                             groupCount,
15798                                                                             data.size() * sizeof( T ),
15799                                                                             reinterpret_cast<void *>( data.data() ) ) );
15800       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15801       {
15802         throwResultException(
15803           result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR" );
15804       }
15805       return data;
15806     }
15807 
15808     template <typename T>
getRayTracingCaptureReplayShaderGroupHandleKHR(uint32_t firstGroup,uint32_t groupCount) const15809     VULKAN_HPP_NODISCARD T Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup,
15810                                                                                      uint32_t groupCount ) const
15811     {
15812       T      data;
15813       Result result = static_cast<Result>(
15814         getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast<VkDevice>( m_device ),
15815                                                                             static_cast<VkPipeline>( m_pipeline ),
15816                                                                             firstGroup,
15817                                                                             groupCount,
15818                                                                             sizeof( T ),
15819                                                                             reinterpret_cast<void *>( &data ) ) );
15820       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15821       {
15822         throwResultException(
15823           result, VULKAN_HPP_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR" );
15824       }
15825       return data;
15826     }
15827 
traceRaysIndirectKHR(const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,const StridedDeviceAddressRegionKHR & missShaderBindingTable,const StridedDeviceAddressRegionKHR & hitShaderBindingTable,const StridedDeviceAddressRegionKHR & callableShaderBindingTable,VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress) const15828     VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR(
15829       const StridedDeviceAddressRegionKHR & raygenShaderBindingTable,
15830       const StridedDeviceAddressRegionKHR & missShaderBindingTable,
15831       const StridedDeviceAddressRegionKHR & hitShaderBindingTable,
15832       const StridedDeviceAddressRegionKHR & callableShaderBindingTable,
15833       VULKAN_HPP_NAMESPACE::DeviceAddress   indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT
15834     {
15835       VULKAN_HPP_ASSERT(
15836         getDispatcher()->vkCmdTraceRaysIndirectKHR &&
15837         "Function <vkCmdTraceRaysIndirectKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15838 
15839       getDispatcher()->vkCmdTraceRaysIndirectKHR(
15840         static_cast<VkCommandBuffer>( m_commandBuffer ),
15841         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &raygenShaderBindingTable ),
15842         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &missShaderBindingTable ),
15843         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &hitShaderBindingTable ),
15844         reinterpret_cast<const VkStridedDeviceAddressRegionKHR *>( &callableShaderBindingTable ),
15845         static_cast<VkDeviceAddress>( indirectDeviceAddress ) );
15846     }
15847 
15848     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize
getRayTracingShaderGroupStackSizeKHR(uint32_t group,VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader) const15849                                            Pipeline::getRayTracingShaderGroupStackSizeKHR(
15850         uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT
15851     {
15852       VULKAN_HPP_ASSERT(
15853         getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR &&
15854         "Function <vkGetRayTracingShaderGroupStackSizeKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15855 
15856       return static_cast<VULKAN_HPP_NAMESPACE::DeviceSize>(
15857         getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR( static_cast<VkDevice>( m_device ),
15858                                                                  static_cast<VkPipeline>( m_pipeline ),
15859                                                                  group,
15860                                                                  static_cast<VkShaderGroupShaderKHR>( groupShader ) ) );
15861     }
15862 
15863     VULKAN_HPP_INLINE void
setRayTracingPipelineStackSizeKHR(uint32_t pipelineStackSize) const15864       CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT
15865     {
15866       VULKAN_HPP_ASSERT(
15867         getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR &&
15868         "Function <vkCmdSetRayTracingPipelineStackSizeKHR> needs extension <VK_KHR_ray_tracing_pipeline> enabled!" );
15869 
15870       getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR( static_cast<VkCommandBuffer>( m_commandBuffer ),
15871                                                                pipelineStackSize );
15872     }
15873 
15874     //=== VK_EXT_vertex_input_dynamic_state ===
15875 
setVertexInputEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const & vertexBindingDescriptions,ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const & vertexAttributeDescriptions) const15876     VULKAN_HPP_INLINE void CommandBuffer::setVertexInputEXT(
15877       ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT> const &   vertexBindingDescriptions,
15878       ArrayProxy<const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT> const & vertexAttributeDescriptions )
15879       const VULKAN_HPP_NOEXCEPT
15880     {
15881       VULKAN_HPP_ASSERT(
15882         getDispatcher()->vkCmdSetVertexInputEXT &&
15883         "Function <vkCmdSetVertexInputEXT> needs extension <VK_EXT_vertex_input_dynamic_state> enabled!" );
15884 
15885       getDispatcher()->vkCmdSetVertexInputEXT(
15886         static_cast<VkCommandBuffer>( m_commandBuffer ),
15887         vertexBindingDescriptions.size(),
15888         reinterpret_cast<const VkVertexInputBindingDescription2EXT *>( vertexBindingDescriptions.data() ),
15889         vertexAttributeDescriptions.size(),
15890         reinterpret_cast<const VkVertexInputAttributeDescription2EXT *>( vertexAttributeDescriptions.data() ) );
15891     }
15892 
15893 #  if defined( VK_USE_PLATFORM_FUCHSIA )
15894     //=== VK_FUCHSIA_external_memory ===
15895 
15896     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE zx_handle_t
getMemoryZirconHandleFUCHSIA(const MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo) const15897                                            Device::getMemoryZirconHandleFUCHSIA( const MemoryGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const
15898     {
15899       VULKAN_HPP_ASSERT(
15900         getDispatcher()->vkGetMemoryZirconHandleFUCHSIA &&
15901         "Function <vkGetMemoryZirconHandleFUCHSIA> needs extension <VK_FUCHSIA_external_memory> enabled!" );
15902 
15903       zx_handle_t                  zirconHandle;
15904       VULKAN_HPP_NAMESPACE::Result result =
15905         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA(
15906           static_cast<VkDevice>( m_device ),
15907           reinterpret_cast<const VkMemoryGetZirconHandleInfoFUCHSIA *>( &getZirconHandleInfo ),
15908           &zirconHandle ) );
15909       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15910       {
15911         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandleFUCHSIA" );
15912       }
15913       return zirconHandle;
15914     }
15915 
15916     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA
getMemoryZirconHandlePropertiesFUCHSIA(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,zx_handle_t zirconHandle) const15917                                            Device::getMemoryZirconHandlePropertiesFUCHSIA( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType,
15918                                                       zx_handle_t zirconHandle ) const
15919     {
15920       VULKAN_HPP_ASSERT(
15921         getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA &&
15922         "Function <vkGetMemoryZirconHandlePropertiesFUCHSIA> needs extension <VK_FUCHSIA_external_memory> enabled!" );
15923 
15924       VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA memoryZirconHandleProperties;
15925       VULKAN_HPP_NAMESPACE::Result                              result =
15926         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA(
15927           static_cast<VkDevice>( m_device ),
15928           static_cast<VkExternalMemoryHandleTypeFlagBits>( handleType ),
15929           zirconHandle,
15930           reinterpret_cast<VkMemoryZirconHandlePropertiesFUCHSIA *>( &memoryZirconHandleProperties ) ) );
15931       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15932       {
15933         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandlePropertiesFUCHSIA" );
15934       }
15935       return memoryZirconHandleProperties;
15936     }
15937 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
15938 
15939 #  if defined( VK_USE_PLATFORM_FUCHSIA )
15940     //=== VK_FUCHSIA_external_semaphore ===
15941 
importSemaphoreZirconHandleFUCHSIA(const ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo) const15942     VULKAN_HPP_INLINE void Device::importSemaphoreZirconHandleFUCHSIA(
15943       const ImportSemaphoreZirconHandleInfoFUCHSIA & importSemaphoreZirconHandleInfo ) const
15944     {
15945       VULKAN_HPP_ASSERT(
15946         getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA &&
15947         "Function <vkImportSemaphoreZirconHandleFUCHSIA> needs extension <VK_FUCHSIA_external_semaphore> enabled!" );
15948 
15949       VULKAN_HPP_NAMESPACE::Result result =
15950         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA(
15951           static_cast<VkDevice>( m_device ),
15952           reinterpret_cast<const VkImportSemaphoreZirconHandleInfoFUCHSIA *>( &importSemaphoreZirconHandleInfo ) ) );
15953       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15954       {
15955         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreZirconHandleFUCHSIA" );
15956       }
15957     }
15958 
15959     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE zx_handle_t
getSemaphoreZirconHandleFUCHSIA(const SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo) const15960                                            Device::getSemaphoreZirconHandleFUCHSIA( const SemaphoreGetZirconHandleInfoFUCHSIA & getZirconHandleInfo ) const
15961     {
15962       VULKAN_HPP_ASSERT(
15963         getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA &&
15964         "Function <vkGetSemaphoreZirconHandleFUCHSIA> needs extension <VK_FUCHSIA_external_semaphore> enabled!" );
15965 
15966       zx_handle_t                  zirconHandle;
15967       VULKAN_HPP_NAMESPACE::Result result =
15968         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA(
15969           static_cast<VkDevice>( m_device ),
15970           reinterpret_cast<const VkSemaphoreGetZirconHandleInfoFUCHSIA *>( &getZirconHandleInfo ),
15971           &zirconHandle ) );
15972       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
15973       {
15974         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreZirconHandleFUCHSIA" );
15975       }
15976       return zirconHandle;
15977     }
15978 #  endif /*VK_USE_PLATFORM_FUCHSIA*/
15979 
15980     //=== VK_HUAWEI_subpass_shading ===
15981 
15982     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair<VULKAN_HPP_NAMESPACE::Result, VULKAN_HPP_NAMESPACE::Extent2D>
getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI() const15983                                            RenderPass::getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI() const
15984     {
15985       VULKAN_HPP_ASSERT(
15986         getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI &&
15987         "Function <vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI> needs extension <VK_HUAWEI_subpass_shading> enabled!" );
15988 
15989       VULKAN_HPP_NAMESPACE::Extent2D maxWorkgroupSize;
15990       VULKAN_HPP_NAMESPACE::Result   result =
15991         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
15992           static_cast<VkDevice>( m_device ),
15993           static_cast<VkRenderPass>( m_renderPass ),
15994           reinterpret_cast<VkExtent2D *>( &maxWorkgroupSize ) ) );
15995       if ( ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess ) &&
15996            ( result != VULKAN_HPP_NAMESPACE::Result::eIncomplete ) )
15997       {
15998         throwResultException(
15999           result, VULKAN_HPP_NAMESPACE_STRING "::RenderPass::getDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" );
16000       }
16001       return std::make_pair( result, maxWorkgroupSize );
16002     }
16003 
subpassShadingHUAWEI() const16004     VULKAN_HPP_INLINE void CommandBuffer::subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT
16005     {
16006       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSubpassShadingHUAWEI &&
16007                          "Function <vkCmdSubpassShadingHUAWEI> needs extension <VK_HUAWEI_subpass_shading> enabled!" );
16008 
16009       getDispatcher()->vkCmdSubpassShadingHUAWEI( static_cast<VkCommandBuffer>( m_commandBuffer ) );
16010     }
16011 
16012     //=== VK_NV_external_memory_rdma ===
16013 
16014     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::RemoteAddressNV
getMemoryRemoteAddressNV(const MemoryGetRemoteAddressInfoNV & getMemoryRemoteAddressInfo) const16015                                            Device::getMemoryRemoteAddressNV( const MemoryGetRemoteAddressInfoNV & getMemoryRemoteAddressInfo ) const
16016     {
16017       VULKAN_HPP_ASSERT(
16018         getDispatcher()->vkGetMemoryRemoteAddressNV &&
16019         "Function <vkGetMemoryRemoteAddressNV> needs extension <VK_NV_external_memory_rdma> enabled!" );
16020 
16021       VULKAN_HPP_NAMESPACE::RemoteAddressNV address;
16022       VULKAN_HPP_NAMESPACE::Result          result =
16023         static_cast<VULKAN_HPP_NAMESPACE::Result>( getDispatcher()->vkGetMemoryRemoteAddressNV(
16024           static_cast<VkDevice>( m_device ),
16025           reinterpret_cast<const VkMemoryGetRemoteAddressInfoNV *>( &getMemoryRemoteAddressInfo ),
16026           reinterpret_cast<VkRemoteAddressNV *>( &address ) ) );
16027       if ( result != VULKAN_HPP_NAMESPACE::Result::eSuccess )
16028       {
16029         throwResultException( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryRemoteAddressNV" );
16030       }
16031       return address;
16032     }
16033 
16034     //=== VK_EXT_extended_dynamic_state2 ===
16035 
16036     VULKAN_HPP_INLINE void
setPatchControlPointsEXT(uint32_t patchControlPoints) const16037       CommandBuffer::setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT
16038     {
16039       VULKAN_HPP_ASSERT(
16040         getDispatcher()->vkCmdSetPatchControlPointsEXT &&
16041         "Function <vkCmdSetPatchControlPointsEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16042 
16043       getDispatcher()->vkCmdSetPatchControlPointsEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16044                                                       patchControlPoints );
16045     }
16046 
setRasterizerDiscardEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable) const16047     VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnableEXT(
16048       VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT
16049     {
16050       VULKAN_HPP_ASSERT(
16051         getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT &&
16052         "Function <vkCmdSetRasterizerDiscardEnableEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16053 
16054       getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16055                                                            static_cast<VkBool32>( rasterizerDiscardEnable ) );
16056     }
16057 
16058     VULKAN_HPP_INLINE void
setDepthBiasEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable) const16059       CommandBuffer::setDepthBiasEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT
16060     {
16061       VULKAN_HPP_ASSERT(
16062         getDispatcher()->vkCmdSetDepthBiasEnableEXT &&
16063         "Function <vkCmdSetDepthBiasEnableEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16064 
16065       getDispatcher()->vkCmdSetDepthBiasEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16066                                                    static_cast<VkBool32>( depthBiasEnable ) );
16067     }
16068 
16069     VULKAN_HPP_INLINE void
setLogicOpEXT(VULKAN_HPP_NAMESPACE::LogicOp logicOp) const16070       CommandBuffer::setLogicOpEXT( VULKAN_HPP_NAMESPACE::LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT
16071     {
16072       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEXT &&
16073                          "Function <vkCmdSetLogicOpEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16074 
16075       getDispatcher()->vkCmdSetLogicOpEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16076                                            static_cast<VkLogicOp>( logicOp ) );
16077     }
16078 
setPrimitiveRestartEnableEXT(VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable) const16079     VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnableEXT(
16080       VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT
16081     {
16082       VULKAN_HPP_ASSERT(
16083         getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT &&
16084         "Function <vkCmdSetPrimitiveRestartEnableEXT> needs extension <VK_EXT_extended_dynamic_state2> enabled!" );
16085 
16086       getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16087                                                           static_cast<VkBool32>( primitiveRestartEnable ) );
16088     }
16089 
16090 #  if defined( VK_USE_PLATFORM_SCREEN_QNX )
16091     //=== VK_QNX_screen_surface ===
16092 
16093     VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Bool32
getScreenPresentationSupportQNX(uint32_t queueFamilyIndex,struct _screen_window & window) const16094                                            PhysicalDevice::getScreenPresentationSupportQNX( uint32_t                queueFamilyIndex,
16095                                                        struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT
16096     {
16097       VULKAN_HPP_ASSERT(
16098         getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX &&
16099         "Function <vkGetPhysicalDeviceScreenPresentationSupportQNX> needs extension <VK_QNX_screen_surface> enabled!" );
16100 
16101       return static_cast<VULKAN_HPP_NAMESPACE::Bool32>(
16102         getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX(
16103           static_cast<VkPhysicalDevice>( m_physicalDevice ), queueFamilyIndex, &window ) );
16104     }
16105 #  endif /*VK_USE_PLATFORM_SCREEN_QNX*/
16106 
16107     //=== VK_EXT_color_write_enable ===
16108 
setColorWriteEnableEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables) const16109     VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT(
16110       ArrayProxy<const VULKAN_HPP_NAMESPACE::Bool32> const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT
16111     {
16112       VULKAN_HPP_ASSERT(
16113         getDispatcher()->vkCmdSetColorWriteEnableEXT &&
16114         "Function <vkCmdSetColorWriteEnableEXT> needs extension <VK_EXT_color_write_enable> enabled!" );
16115 
16116       getDispatcher()->vkCmdSetColorWriteEnableEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16117                                                     colorWriteEnables.size(),
16118                                                     reinterpret_cast<const VkBool32 *>( colorWriteEnables.data() ) );
16119     }
16120 
16121     //=== VK_EXT_multi_draw ===
16122 
16123     VULKAN_HPP_INLINE void
drawMultiEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride) const16124       CommandBuffer::drawMultiEXT( ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT> const & vertexInfo,
16125                                    uint32_t                                                         instanceCount,
16126                                    uint32_t                                                         firstInstance,
16127                                    uint32_t stride ) const VULKAN_HPP_NOEXCEPT
16128     {
16129       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiEXT &&
16130                          "Function <vkCmdDrawMultiEXT> needs extension <VK_EXT_multi_draw> enabled!" );
16131 
16132       getDispatcher()->vkCmdDrawMultiEXT( static_cast<VkCommandBuffer>( m_commandBuffer ),
16133                                           vertexInfo.size(),
16134                                           reinterpret_cast<const VkMultiDrawInfoEXT *>( vertexInfo.data() ),
16135                                           instanceCount,
16136                                           firstInstance,
16137                                           stride );
16138     }
16139 
drawMultiIndexedEXT(ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride,Optional<const int32_t> vertexOffset) const16140     VULKAN_HPP_INLINE void CommandBuffer::drawMultiIndexedEXT(
16141       ArrayProxy<const VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT> const & indexInfo,
16142       uint32_t                                                                instanceCount,
16143       uint32_t                                                                firstInstance,
16144       uint32_t                                                                stride,
16145       Optional<const int32_t>                                                 vertexOffset ) const VULKAN_HPP_NOEXCEPT
16146     {
16147       VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiIndexedEXT &&
16148                          "Function <vkCmdDrawMultiIndexedEXT> needs extension <VK_EXT_multi_draw> enabled!" );
16149 
16150       getDispatcher()->vkCmdDrawMultiIndexedEXT(
16151         static_cast<VkCommandBuffer>( m_commandBuffer ),
16152         indexInfo.size(),
16153         reinterpret_cast<const VkMultiDrawIndexedInfoEXT *>( indexInfo.data() ),
16154         instanceCount,
16155         firstInstance,
16156         stride,
16157         static_cast<const int32_t *>( vertexOffset ) );
16158     }
16159 
16160 #endif
16161   }  // namespace VULKAN_HPP_RAII_NAMESPACE
16162 }  // namespace VULKAN_HPP_NAMESPACE
16163 #endif
16164